通过CLI使用百舸服务
更新时间:2025-03-06
使用命令行工具操作百舸与用户在百舸操作具有相同的权限控制,AK/SK所属用户需要在百舸控制台获得对应的操作权限(如资源池、队列、训练任务的开发权限、管理员权限)才能对资源池、队列、训练任务进行管理操作
通用语法和参数
$ aihc [资源] <command> [flags] [options]
--help/-h:获得帮助,查看使用说明
p/n/q:带有翻页的命令,输p/n/q可以实现翻页或退出(上一页:p;下一页:n;退出:q)
资源池相关操作
获取资源池列表
$ aihc pool list [flags] -h
-h, --help help for list
-l, --limit int Number of resource pools to return (default 100) 设置返回资源池最大数量
--offset int Offset of the first resource pool to return
--order string Sort order (asc, desc) (default "desc")
-o, --orderBy string Order by field (name, createTime) (default "createTime") 按照指定创建时间、用户名称查询
-p, --pageNo int Page number (default 1) 指定返回的页数
-s, --pageSize int Page size (default 100) 指定每页返回的资源池数量
获取资源池详情
$ aihc pool get [flags]
-h, --help help for get
-p, --pool string Resource pool ID 指定资源池ID
获取节点列表
aihc node list [flags]
-h, --help help for node
队列相关操作
获取队列列表
aihc queue list/ls [flags]
-h, --help help for list
-p, --pool string Resource pool ID 指定资源池
获取队列详情
aihc queue get [flags]
-h, --help help for get
-p, --pool string Resource pool ID 指定资源池ID
```bash
## 任务相关操作
### 单任务创建
#### 直接传参方式创建任务
直接传参方式创建任务
aihc job create [flags]
flags:
-c, --command string 可选,指定训练任务的入口命令 (与--script-file二选一,必须设置一个) #可选
--ds-mountpath string 数据源挂载路径 #可选
--ds-name string 数据源名称 #可选
--ds-type string 数据源类型 #可选
--env strings 环境变量 (key=value) #可选
--framework string 任务框架类型 (default "pytorch") #必填
--gpu strings GPU资源 (type=count) #必填
-h, --help help for create
--image string 容器镜像 #必填
-f, --job-file strings 任务配置文件路径(支持多个文件),格式: json/yaml #可选
--label strings 标签 (key=value) #可选
-n, --name string 任务名称 #必填
-p, --pool string 资源池ID (如未指定则使用配置文件中的默认值) #未指定默认时必填
--priority string 任务优先级 (low/normal/high) (default "normal") #必填
-r, --replicas int32 任务副本数 (default 1) #选填
--script-file string 命令脚本的路径,以脚本的方式指定训练任务的入口命令 (与--command二选一,必须设置一个) #可选
使用任务模板创建任务
# 支持使用json或yaml格式文件传递参数,详见参数模板,创建任务支持的参数详见创建任务接口参数:https://cloud.baidu.com/doc/AIHC/s/jm56inxn7
# 接口请求body参数的yaml文件
aihc job create -f ./job_info.yaml
# 接口请求body参数的json文件
aihc job create -f ./job_info.json
JSON格式任务参数参考模板:
{
"name": "qwen2-vl-test-4-copy2",
"queue": "",
"jobFramework": "pytorch",
"jobSpec": {
"command": "cd /data \u0026\u0026 mkdir qwen2-vl\n\ncp /mnt/ca-p800-poc/llava-en-zh-300k.tar.gz /data/qwen2-vl/\n#cp /mnt/ca-p800-poc/llava-en-zh-2k.tar.gz /data/qwen2-vl/\ncd /data/qwen2-vl\n\ntar -zxvf llava-en-zh-300k.tar.gz \u0026\u0026 rm llava-en-zh-300k.tar.gz\n#tar -zxvf llava-en-zh-2k.tar.gz \u0026\u0026 rm llava-en-zh-2k.tar.gz\n\n# code\ncp /mnt/ca-p800-poc/models/qwen2-vl.tar.gz /home/\ncd /home/\ntar -zxvf qwen2-vl.tar.gz \u0026\u0026 rm qwen2-vl.tar.gz\n\n# model weights\ncp /mnt/ca-p800-poc/Qwen2-VL-7B-Instruct.tar.gz .\ntar -zxvf Qwen2-VL-7B-Instruct.tar.gz \u0026\u0026 rm Qwen2-VL-7B-Instruct.tar.gz\n\n#train lora\ncd /home/qwen2-vl/\nconda activate llamafactory_env\nexport PATH=/root/miniconda/envs/llamafactory_env/bin:$PATH\nexport PYTHONPATH=$PYTHONPATH:/home/qwen2-vl/\n\napt-get install dnsutils -y\npip install deepspeed==0.14.5\n\nsource env.sh\nnohup bash dist_train.sh lora \u0026\n\nsleep 100000",
"image": "ccr-2ccrtest-vpc.cnc.bj.baidubce.com/yetao04-ca-test/qwen2vl_p800_image:v1.0",
"imageConfig": {
"username": "",
"password": ""
},
"replicas": 4,
"resources": [
{
"name": "kunlunxin.com/xpu",
"quantity": 8
},
{
"name": "rdma/hca",
"quantity": 1
},
{
"name": "sharedMemory",
"quantity": 1024
}
],
"envs": [
{
"name": "AIHC_JOB_NAME",
"value": "qwen2-vl-test-4-copy1"
},
{
"name": "NCCL_IB_DISABLE",
"value": "0"
}
],
"enableRDMA": true,
"hostNetwork": true
},
"faultTolerance": false,
"labels": [
{
"key": "aijob.cce.baidubce.com/ai-user-id",
"value": "ac3553acbb8d4c5e9b212fc0a04c8f7d"
},
{
"key": "aijob.cce.baidubce.com/ai-user-name",
"value": "daichaonan"
},
{
"key": "aijob.cce.baidubce.com/create-from-aihcp",
"value": "true"
},
{
"key": "aijob.cce.baidubce.com/openapi-jobid",
"value": "pytorchjob-a53c413c-8e96-416b-8d6a-bc3e1b16a406"
}
],
"priority": "high",
"datasources": [
{
"type": "pfsl1",
"sourcePath": "/yetao04",
"mountPath": "/mnt",
"name": "pfs-zesqWP",
"options": {
"sizeLimit": 1000,
"medium": "",
"readOnly": false,
"pfsL1ClusterIp": "172.16.0.221",
"pfsL1ClusterPort": "8888"
}
},
{
"type": "hostpath",
"sourcePath": "/ssd1",
"mountPath": "/data",
"name": "hostpath-1",
"options": {
"sizeLimit": 0,
"medium": "",
"readOnly": false
}
}
],
"faultToleranceConfig": {
"enabledHangDetection": false,
"hangDetectionTimeoutMinutes": 0,
"faultToleranceLimit": 0,
"customFaultTolerancePattern": null
},
"alertConfig": null,
"enableBccl": false
}
YAML格式任务参数参考模板:
name: qwen2-vl-test-4-cli-test
queue: ""
jobFramework: pytorch
jobSpec:
command: |
sleep 100000
image: ccr-2ccrtest-vpc.cnc.bj.baidubce.com/yetao04-ca-test/qwen2vl_p800_image:v1.0
imageConfig:
username: ""
password: ""
replicas: 4
resources:
- name: kunlunxin.com/xpu
quantity: 8
- name: rdma/hca
quantity: 1
- name: sharedMemory
quantity: 1024
envs:
- name: AIHC_JOB_NAME
value: qwen2-vl-test-4-copy1
- name: NCCL_IB_DISABLE
value: "0"
enableRDMA: true
hostNetwork: true
faultTolerance: false
labels:
- key: aijob.cce.baidubce.com/ai-user-id
value: ac3553acbb8d4c5e9b212fc0a04c8f7d
- key: aijob.cce.baidubce.com/ai-user-name
value: daichaonan
- key: aijob.cce.baidubce.com/create-from-aihcp
value: "true"
- key: aijob.cce.baidubce.com/openapi-jobid
value: pytorchjob-a53c413c-8e96-416b-8d6a-bc3e1b16a406
priority: high
datasources:
- type: pfsl1 目前只支持pfs
sourcePath: /yetao04
mountPath: /mnt
name: pfs-zesqWP
options:
sizeLimit: 1000
medium: ""
readOnly: false
pfsL1ClusterIp: "172.16.0.221"
pfsL1ClusterPort: "8888"
faultToleranceConfig:
enabledHangDetection: false
hangDetectionTimeoutMinutes: 0
faultToleranceLimit: 0
customFaultTolerancePattern: null
alertConfig: null
enableBccl: false
批量任务提交
aihc job create -f job-1.yaml -f job-2.yaml ..-f ..
删除训练任务
aihc job delete [flags]
-h, --help help for delete
-p, --pool string 资源池ID
停止训练任务
aihc job stop [flags]
Flags:
-h, --help help for stop
-p, --pool string 资源池ID
获取任务详情
aihc job get [flags]
Flags:
-h, --help help for get
--pods 是否展示作业的实例信息
-p, --pool string 资源池ID
-s, --status 显示任务状态简要信息
查询任务状态
aihc job get jobID --status/ -s
查询任务实例列表
aihc pod list jobID
获取任务列表
aihc job list/ls [flags]
Flags:
-h, --help help for list
-n, --name string 任务名称关键字
--order string 排序方式(asc/desc) (default "desc")
--page int 页码 (default 1)
-p, --pool string 资源池ID
--size int 每页显示数量 (default 100)
连接任务实例
aihc job exec [flags]
Flags:
-c, --container string 容器名称
-h, --help help for exec
-i, --interactive 保持标准输入打开
-n, --namespace string 命名空间 (默认为 default)
-p, --pool string 资源池ID
-t, --tty 分配伪终端
复制任务配置
aihc job export [flags]
Flags:
-h, --help help for export
-p, --pool string 资源池ID
查询任务日志
aihc job logs [flags]
Flags:
-h, --help help for logs
-n, --namespace string 命名空间 (默认为 default)
--podname string Pod名称
-p, --pool string 资源池ID