创建训练任务
更新时间:2024-12-27
描述
创建一个创建任务到集群中运行。可以指定数据源配置、启动命令以及任务运行的每个节点的计算资源配置等信息。
请求结构
POST /api/v1/aijobs
Host:aihc.bj.baidubce.com
Authorization:authorization string
ContentType: application/json
请求头域
除公共头域外,无其它特殊头域。
请求参数
参数名称 | 类型 | 是否必须 | 参数位置 | 说明 |
---|---|---|---|---|
resourcePoolId | String | 是 | Query参数 | 标识资源池的唯一标识符 |
name | String | 是 | Body参数 | 名称 |
queue | String | 否 | Body参数 | 训练任务所属队列,默认为default队列 |
jobFramework | String | 否 | Body参数 | 分布式框架,只支持 PyTorchJob,默认值:PyTorchJob |
jobSpec | JobSpec | 是 | Body参数 | 训练任务配置 |
faultTolerance | Boolean | 否 | Body参数 | 是否开启容错, 默认值为 关闭 |
labels | Array of Label | 否 | Body参数 | 训练任务标签,默认包含: 1. aijob.cce.baidubce.com/create-from-aihcp-api: "true" 2. aijob.cce.baidubce.com/ai-user-id: {accoutId} 3. aijob.cce.baidubce.com/ai-user-name: {userName} |
priority | String | 否 | Body参数 | 调度优先级,支持高(high)、中(normal)、低(low),默认值:normal |
datasources | Array of Datasource | 否 | Body参数 | 数据源配置,当前支持PFS |
enableBccl | Boolean | 否 | Body参数 | 是否开启BCCL自动注入,默认值为关闭。当前开启条件: 1.实例数大于等于 2 2.每个实例占整机 8 卡 3.任务开启 RDMA 4.卡型号为A800/HPAS |
faultToleranceConfig | faultToleranceConfig | 否 | Body参数 | 容错高级配置(自定义hang检测) |
返回头域
除公共头域,无其它特殊头域。
返回参数
参数名称 | 类型 | 是否必须 | 说明 |
---|---|---|---|
requestId | String | 是 | 请求ID |
result | JobResult | 是 | 成功请求时的任务信息 |
请求示例
{
"queue": "default",
"priority": "normal",
"jobFramework": "PyTorchJob",
"name": "test-api-llama2-7b-4",
"jobSpec": {
"command": "#! /bin/bash\n\nROOT_DIR=/workspace/Megatron-LM/examples\n# 数据集及CHECKPOINT的PATH可按需替换成用户自定义路径\nDATA_PATH=/mnt/cluster/Train/megatron_llama/pile_llama_test/pile-llama_text_document\nCHECKPOINT_LOAD_PATH=/mnt/cluster/Train/megatron_llama2/megatron_llama2_7b_checkpoint_tp1_pp1_dp8_zero1_fp16/\nCHECKPOINT_SAVE_PATH=/mnt/cluster/Train/megatron_llama2/megatron_llama2_7b_checkpoint_tp1_pp1_dp8_zero1_fp16/\nTOKENIZER_PATH=/mnt/cluster/Train/megatron_llama/llama_tokenizer/tokenizer.model\nTENSORBOARD_PATH=/mnt/cluster/test-llama2-7b/ts\n\nGPUS_PER_NODE=8\n\nDISTRIBUTED_ARGS=\"--nproc_per_node $GPUS_PER_NODE --nnodes $WORLD_SIZE --node_rank $RANK --master_addr $MASTER_ADDR --master_port $MASTER_PORT\"\n\nLLAMA2_7B_ARGS=\"--tensor-model-parallel-size 1 \\\n --pipeline-model-parallel-size 1 \\\n --num-layers 32 \\\n --hidden-size 4096 \\\n --ffn-hidden-size 11008 \\\n --num-attention-heads 32 \\\n --micro-batch-size 1 \\\n --global-batch-size 128 \\\n --seq-length 4096 \\\n --max-position-embeddings 4096 \\\n --lr 0.0003 \\\n --min-lr 1.0e-5 \\\n --clip-grad 1.0 \\\n --weight-decay 1e-2 \\\n --optimizer adam \\\n --adam-beta1 0.9 \\\n --adam-beta2 0.95 \\\n --adam-eps 1e-05 \\\n --train-iters 500000 \\\n --lr-decay-iters 320000 \\\n --lr-decay-style cosine \\\n --lr-warmup-fraction .01 \\\n --no-async-tensor-model-parallel-allreduce \\\n --tokenizer-type LLaMASentencePieceTokenizer \\\n --tokenizer-model $TOKENIZER_PATH \\\n --activation-func swiglu \\\n --use-rotary-position-embeddings \\\n --rmsnorm-epsilon 1e-5 \\\n --no-position-embedding \\\n --disable-bias-linear \\\n --attention-dropout 0 \\\n --hidden-dropout 0 \\\n --embedding-dropout 0 \\\n --use-distributed-optimizer \\\n --untie-embeddings-and-output-weights \\\n --use-flash-attn \\\n --initial-loss-scale 16 \\\n --sequence-parallel \\\n --fused-rmsnorm \\\n --fp16\"\n\nOUTPUT_ARGS=\"--log-interval 1 \\\n --save-interval 50000 \\\n --eval-interval 1000 \\\n --eval-iters 10\"\n\nOTHER_ARGS=\"--data-path $DATA_PATH \\\n --data-impl mmap \\\n --split 949,50,1 \\\n --save $CHECKPOINT_SAVE_PATH \\\n --load $CHECKPOINT_LOAD_PATH \\\n --tensorboard-dir ${TENSORBOARD_PATH} \\\n --distributed-backend nccl\"\n\nPYTHONPATH=\"$ROOT_DIR/..\":\"$ROOT_DIR/../megatron/fused_kernels\":$PYTHONPATH \\\n python -m torch.distributed.launch $DISTRIBUTED_ARGS \\\n $ROOT_DIR/../pretrain_llama.py \\\n $LLAMA2_7B_ARGS \\\n $OUTPUT_ARGS \\\n $OTHER_ARGS",
"image": "registry.baidubce.com/aihc-aiak/aiak-megatron:ubuntu20.04-cu11.8-torch1.14.0-py38_v1.2.7.12_release",
"replicas": 1,
"resources": [
{
"name": "baidu.com/a800_80g_cgpu",
"quantity": 8
}
],
"enableRDMA": true,
"envs": [
{
"name": "CUDA_DEVICE_MAX_CONNECTIONS",
"value": "1"
}
]
},
"datasources": [
{
"type": "pfs",
"name": "pfs-7xWeAt",
"mountPath": "/mnt/cluster"
}
]
}
返回示例
{
"requestId": "31a7a2f7-78c1-4169-b150-c888d9f72be8",
"result": {
"jobId": "pytorchjob-265e535d-7bec-4b68-88bb-08faa4247504",
"jobName": "api-create-py-test-2"
}
}