通过AIHC-CLI使用百舸
更新时间:2023-08-01
AIHC-CLI
该命令行工具旨在提供资源池管理和训练任务管理功能,它允许用户通过命令行界面轻松管理资源和训练任务。
命令列表
主命令 | 二级子命令 | 说明 |
aihc | configure | 用户认证(ak/sk)、地域、集群凭据等 |
pool | 查看百舸资源池详情 | |
job | 训练任务提交、列表、查询、删除、列表、pods | |
logs | 查询指定 pod 的日志 | |
help | 查看命令行帮助 | |
version | 版本查询 |
configure
在使用其他命令前,需要使用 configure 命令,配置用户的 ak/sk、地域等信息,生成相应配置文件(usr token、kubeconfig)到~/.aihc/ 目录下。
别名:config
用法:aihc config [flags]
参数:
参数 | 类型 | 默认值 | 说明 | 必填 |
---|---|---|---|---|
--access_key | string | - | 百度云安全认证Access Key | 是 |
--secret_key | string | - | 百度云安全认证Secret Key | 是 |
--region | string | cn-beijing | 地域 | 否 |
示例:
./aihc configure --access_key xxx --secret_key xxx --region cn-beijing
输出:
aihc configuration file has been saved at '/Users/foo/.aihc/config
pool
pool 命令用户查看百舸资源池。
- 别名:pool
- 用法:aihc pool [command] [flags]
查询资源池列表
pool list 命令用于查询资源池列表。
- 用法:aihc pool list/ls
- 参数
参数 | 类型 | 默认值 | 说明 | 必填 |
- | - | - | - | 否 |
- 输出:
字段 | 说明 |
---|---|
ID | 资源池ID |
NAME | 资源池名称 |
STATUS | 状态(运行中/创建中/...) |
REGION | 地域 |
NODES(Ready/Total) | 已添加节点,ready数量/总数量 |
GPU(Allocated/Total) | GPU已分配数/总卡数 |
CREATEDTIME | 资源池创建时间 |
- 示例
./aihc pool list
ID NAME STATUS NODES CREATEDTIME
cce-xxx aihc-test running 4 2023-05-27T17:06:38+08:00
cce-yyy aihc_Label running 4 2023-05-22T15:47:14+08:00
cce-kkk aihc-cy running 5 2023-05-18T16:40:52+08:00
Job 命令
命令列表
Job命令 | 子命令 | 说明 |
jod | submit | 用于创建任务 |
list | 用于查询集群中 Job 列表,支持以表格形式输出 | |
get | 用于查询指定的 job | |
delete | 用于删除任务 | |
pods | 用于查询指定任务详情 |
submit 命令
submit 用于创建任务。
- 用法:aihc job submit [flags]
- 参数
参数 | 类型 | 默认值 | 说明 | 必填 |
---|---|---|---|---|
--pool/-p | string | - | 资源池id | 是 |
--name/-n | string | - | 任务名称 | 是 |
--framework/-f | string | pytorch | 任务框架,支持pytorch/mpi | 否 |
--queue/-q | string | default | 资源队列 | 否 |
--command/-c | string | - | 指定训练任务的入口命令, 如含有空格需使用引号。 配置该参数后, conf 文件中的 Entrypoint 配置值将会被覆盖。 | 是 |
--env/-e | string | - | 制定的环境变量,值为:KEY=VALUE形式,可以指定多次jobSpec[*].env | 否 |
--image/-i | string | - | 镜像的URL jobSpec[*].env.image | 是 |
--image-pull-secret | string | - | 镜像拉取的密钥名称 | 否 |
--gpu/-g | string | 1 | 训练时每个训练节点的GPU数量 | 否 |
--workers/-w | string | 1 | 分布式训练任务的节点数,jobSpec 中的 replicas 数量PyTorchJob: 单节点 jobSpec[master].replicas=1 多节点 jobSpec[master].replicas=1 jobSpec[worker].replicas=N-1 | 否 |
--rdma/-r | string | true | 是否开始 rdma resource 指定 rdma/hca: 1 | 否 |
--tensorboard/-t | string | false | 是否开启 tensorboard | 否 |
--tensorboard-logdir | string | - | Tensorboard 写入日志地址 | 否 |
--data/-d | string | - | 数据源 | 否 |
--data-dir | string | - | 数据挂载的路径,mountPath | 否 |
- 输出
字段 | 说明 |
- | - |
- 示例
./aihc job submit -n test6 \
-p cce-6xxxxxxf \
-e OWNER=test \
-c "sleep 3600;" \
-i nginx:latest
submited job test6%
list 命令
list 命令用于查询集群中 Job 列表,支持以表格形式输出。
- 用法:aihc job list/ls
- 参数
参数 | 类型 | 默认值 | 说明 | 必填 |
--pool/-p | string | - | 资源池id | 是 |
--framework/-f | string | pytorch | 指定作业类型 | 否 |
--queue/-q | string | default | 指定队列,如果指定,则--pool/-p参数必填 | 否 |
framework 目前仅支持 PyTorchJob, queue 目前仅支持 default, pool 必填为 clusterID。
- 输出:
字段 | 说明 |
---|---|
NAME | 队列名称 |
RESOURCE_POOL(ID/NAME) | 资源池ID/名称 |
QUEUE | 队列名称 |
FRAMEWORK | 作业框架类型 |
STATUS | 运行状态 |
WORKERS(READY/TOTAL) | 任务节点数量 |
GPU | 分配的GPU数量 |
CREATEDTIME | 资源池创建时间 |
- 示例
./aihc job list -p cce-6xxxxxxf
NAME RESOURCE_POOL QUEUE FRAMEWORK STATUS WORKERS(READY/TOTAL) GPU CREATEDTIME
test1 cce-6xxxxxxf default PyTorchJob Failed 2 0 2023-06-29T20:07:27+08:00
test2 cce-6xxxxxxf default PyTorchJob Created 1 0 2023-06-27T10:46:46+08:00
test3 cce-6xxxxxxf default PyTorchJob Succeeded 1 1 2023-06-26T10:50:05+08:00
get 命令
get 命令用于查询指定的 job。
- 用法:aihc job get [flags]
- 参数
参数 | 类型 | 默认值 | 说明 | 必填 |
---|---|---|---|---|
--pool/-p | string | - | 资源池id | 是 |
--name string/-n | string | - | 任务名称 | 否 |
- 输出
字段 | 说明 |
---|---|
NAME | 队列名称 |
RESOURCE_POOL(ID/NAME) | 资源池ID/名称 |
QUEUE | 队列名称 |
FRAMEWORK | 作业框架类型 |
STATUS | 运行状态 |
WORKERS(READY/TOTAL) | 任务节点数量 |
GPU | 分配的GPU数量 |
CREATEDTIME | 任务创建时间 |
- 示例
./aihc job get -p cce-6xxxxxxf test
NAME GPU_TYPE GPU(Allocated/Total) CREATED_TIME
./aihc job get -p cce-6xxxxxxf -n jobfrompostman-cyb
NAME RESOURCE_POOL QUEUE FRAMEWORK STATUS WORKERS(READY/TOTAL) GPU CREATEDTIME
test5 cce-6xxxxxxf default PyTorchJob Created 1 0 2023-06-27T10:46:46+08:00
- 以 yaml 形式输出查询结果
./aihc job get -p cce-6xxxxxxf -n test5 -o yaml
delete 命令
delete 命令用于删除任务。
- 用法:aihc job delete [flags]
- 参数
参数 | 类型 | 默认值 | 说明 | 必填 |
---|---|---|---|---|
--pool/-p | string | - | 资源池id | 是 |
--name string/-n | string | - | 任务名称 | 否 |
- 输出
1 pytorchjob $JOB_NAME in $RESOURCE_POOL was deleted
- 示例
./aihc job delete -p cce-6xxxxxxf test
pytorchjob test in cce-6xxxxxxf was deleted
./aihc job delete -p cce-6xxxxxxf -n test6
deleted job cce-6xxxxxxf/test6%
pods 命令
pods 命令用于查询指定任务详情。
- 示例
./aihc job pods -p cce-6xxxxxxf -n test2
NAME READY STATUS RESTARTS AGE
test2-worker-0 0/2 Completed 0 5d1h
test2-worker-1 0/2 Completed 0 5d1h
logs 命令
logs 命令用于查询指定 pod 的日志。
- 用法
aihc logs [flags] - 参数
参数 | 类型 | 默认值 | 说明 | 必填 |
--pool/-p | string | - | 资源池id | 是 |
--follow/-f | bool | false | 流式读取日志 | 否 |
--name/-n | string | - | 任务名称 | 否 |
--pod | string | - | pod 名称 | 否 |
--pod-running-timeout duration | string | 30s | 用于设置在至少一个 pod 开始运行之前的等待时间(如 5s, 2m, 或 3h 等),必须大于零 | 否 |
--tail/-t | int | -1 | 读取最后几行日志,默认-1,表示全部读取 | 否 |
- 输出
1 iteration 77889/ 100000 | consumed samples: 623112 | elapsed time per iteration (ms): 853.1 | learning rate: 2.999E-04 | global batch size: 8 | loss scale: 1.0 | number of skipped iterations: 1 | number of nan iterations: 1 |
2 iteration 77890/ 100000 | consumed samples: 623120 | elapsed time per iteration (ms): 853.2 | learning rate: 2.999E-04 | global batch size: 8 | loss scale: 1.0 | number of skipped iterations: 1 | number of nan iterations: 1 |
- 示例
./aihc logs -p cce-6xxxxxxf -j test2 --pod test2-worker-0
INFO:torch.distributed.launcher.api:Starting elastic_operator with launch configs:
entrypoint : /workspace/examples/imagenet.py
min_nodes : 1
max_nodes : 1
nproc_per_node : 1
run_id : none
rdzv_backend : static
rdzv_endpoint : 127.0.0.1:29500
rdzv_configs : {'rank': 0, 'timeout': 900}
max_restarts : 0
monitor_interval : 5
log_dir : None
metrics_cfg : {}