您可以通過用戶端工具提交多種類型的訓練任務。本文介紹提交任務相關的命令詳情,包括調用格式、參數解釋和使用樣本。
提交任務的通用參數
使用DLC命令列提交TensorFlow(tfjob),PyTorch(pytorchjob),XGBoost(xgboostjob)任務時,存在通用的參數。通用參數列表如下
表 1. 提交任務的通用參數
參數 | 是否必選 | 描述 | 類型 | 任務參數描述檔案中是否支援該參數 |
name | 是 | 任務的名稱,多個任務名稱可以相同。 | STRING | 是 |
command | 是 | 各個節點的啟動命令。 | STRING | 是 |
data_sources | 否 | 繫結資料集ID,您可以前往資料集管理頁面查看,詳情請參見建立及管理資料集。如存在多個,則以半形逗號(,)分隔,預設為空白。 | STRING | 是 |
code_source | 否 | 代碼集ID,您可以前往代碼集頁面查看,詳情請參見代碼配置。只傳入單個,預設為空白。 | STRING | 是 |
code_branch | 否 | 指定代碼倉庫的分支,與參數code_source配合使用。 | STRING | 是 |
code_commit | 否 | 指定代碼倉庫的CommitId,與參數code_source配合使用。 | STRING | 是 |
thirdparty_libs | 否 | Python三方庫;若存在多個,則以半形逗號(,)分隔,預設為空白。 | STRING | 是 |
thirdparty_lib_dir | 否 | Python三方庫安裝使用的requirements.txt檔案所在檔案夾,預設為空白。 | STRING | 否 |
vpc_id | 否 | 任務可訪問的Virtual Private Cloud的ID,預設為空白。 | STRING | 是 |
switch_id | 否(若存在vpc_id則為必選) | 任務訪問的Virtual Private Cloud中的交換器ID,預設為空白。 | STRING | 是 |
security_group_id | 否(若存在vpc_id則為必選) | 任務訪問的Virtual Private Cloud中的安全性群組ID,預設為空白。 | STRING | 是 |
job_file | 否 | 任務參數描述檔案;如果傳入,會優先使用job_file中參數,格式為 | STRING | 否 |
interactive | 否 | 是否以互動模式啟動任務。 | BOOL | 是 |
job_max_running_time_minutes | 否 | 任務的最大運行時間長度。預設值為0,表示不設定最大運行時間長度。 | INT64 | 是 |
success_policy | 否 | 目前僅支援TFJob,取值如下:
預設為空白表示AllWorkers。 | STRING | 是 |
envs | 否 | 配置Worker的環境變數,環境變數之間通過半形逗號(,)分隔,環境變數的Key與Value之間通過等號分隔。格式為 | StringToString | 是 |
tags | 否 | 配置作業的標籤,標籤之間通過半形逗號(,)分隔,標籤的Key與Value之間通過等號分隔。格式為: | StringToString | 是 |
oversold_type | 否 | 配置作業閑時資源的使用方式,取值如下:
| STRING | 是 |
driver | 否 | 配置作業使用的GPU驅動版本。 | STRING | 是 |
default_route | 否 | 當選擇VPC時,配置訪問公網的方式,取值如下:
| STRING | 是 |
priority | 否 | 配置作業的優先順序,預設值為1,參數值的範圍是1~9。其中:
| INT32 | 是 |
exit_code_on_stopped | 否 | 以互動模式運行任務時,當任務被停止時指定命令列工具的退出碼,預設值是0。 | INT32 | 是 |
job_reserved_minutes | 否 | 設定任務結束時的保留時間長度,單位是分鐘,預設值是0。 | INT32 | 是 |
job_reserved_policy | 否 | 設定任務保留的策略,可選值:
| STRING | 是 |
提交TensorFlow訓練任務(submit tfjob)
功能
用於提交TensorFlow訓練任務。
格式
系統支援通過命令列參數或任務參數描述檔案的方式提交TensorFlow任務。
./dlc submit tfjob [flags]
參數
如果通過命令列參數的方式提交TensorFlow任務,則需要將命令中的如下參數替換為實際值。如果通過任務參數描述檔案的方式提交TensorFlow任務,則將任務參數描述檔案中支援的參數以
<parameterName>=<parameterValue>
的形式寫入檔案中。提交TensorFlow任務的通用參數如文章開頭的列表所示,以下為TensorFlow的任務特有參數:表 2. 提交TensorFlow任務的特有參數
參數
是否必選
描述
類型
任務參數描述檔案中是否支援該參數
workspace_id
是
工作空間的ID,(即作業提交DLC公用的工作空間)預設為空白。如何建立工作空間可以參考建立工作空間。
STRING
是
chief
否
是否啟用TensorFlow Chief節點,該參數取值包括:
false:預設值,表示關閉TensorFlow Chief節點。
true:表示開啟TensorFlow Chief節點。
BOOL
是
chief_image
否
TensorFlow Chief節點的鏡像,預設值為空白。
STRING
是
chief_spec
否
TensorFlow Chief節點使用的伺服器型號,預設值為空白。
STRING
是
master_image
否
TensorFlow Master節點的鏡像,預設值為空白。
STRING
是
master_spec
否
TensorFlow Master節點使用的伺服器型號。
STRING
是
masters
否
TensorFlow Master節點的數量,預設值為0。
INT
是
ps
否
TensorFlow Parameter Server節點的數量,預設值為0。
INT
是
ps_image
否
TensorFlow Parameter Server節點的鏡像,預設值為空白。
STRING
是
ps_spec
否
TensorFlow Parameter Server節點使用的伺服器型號,預設值為空白。
STRING
是
worker_image
否
TensorFlow Worker節點的鏡像,預設值為空白。
STRING
是
worker_spec
否
TensorFlow Worker節點使用的伺服器型號,預設值為空白。
STRING
是
workers
否
TensorFlow Worker節點的數量,預設值為0。
INT
是
evaluator_image
否
TensorFlow Evaluators節點的鏡像,預設值為空白。
STRING
是
evaluator_spec
否
TensorFlow Evaluators節點使用的伺服器型號,預設值為空白。
STRING
是
evaluators
否
TensorFlow Evaluators節點的數量,預設值為0。
INT
是
graphlearn_image
否
TensorFlow GraphLearn節點的鏡像,預設值為空白。
STRING
是
graphlearn_spec
否
TensorFlow GraphLearn節點使用的伺服器型號,預設值為空白。
STRING
是
graphlearns
否
TensorFlow GraphLearn節點的數量,預設值為0。
INT
是
表 3. 提交TensorFlow任務至專有資源群組的特有參數
參數
是否必選
描述
類型
任務參數描述檔案中是否支援該參數
resource_id
否(若要提交任務至專有資源群組則為必選)
專有資源配額的ID,預設為空白。如何建立專有資源配額可以參考通用計算資源配額。
STRING
是
priority
否
任務優先順序,預設為1。
INT
是
chief_cpu
否
TensorFlow Chief節點使用CPU的個數,預設為空白。
STRING
是
chief_gpu
否
TensorFlow Chief節點使用GPU的個數,預設為空白。
STRING
是
chief_gpu_type
否
TensorFlow Chief節點使用GPU的類型,預設為空白。樣本值:GU50。
STRING
是
chief_memory
否
TensorFlow Chief節點使用記憶體資源,預設為空白。樣本值:500 Mi,1 Gi。
STRING
是
chief_shared_memory
否
TensorFlow Chief節點用於共用的記憶體資源,預設為空白。樣本值:500 Mi,1 Gi。
STRING
是
master_cpu
否
TensorFlow Master節點使用CPU的個數,預設為空白。
STRING
是
master_gpu
否
TensorFlow Master節點使用GPU的個數,預設為空白。
STRING
是
master_gpu_type
否
TensorFlow Master節點使用GPU的類型,預設為空白。樣本值:GU50。
STRING
是
master_memory
否
TensorFlow Master節點使用記憶體資源,預設為空白。樣本值:500 Mi,1 Gi。
STRING
是
master_shared_memory
否
TensorFlow Master節點用於共用的記憶體資源,預設為空白。樣本值:500 Mi,1 Gi。
STRING
是
*_cpu
否
TensorFlow *節點使用CPU的個數,預設為空白。*可替換為(ps,worker,evaluator,graphlearn)。
STRING
是
*_gpu
否
TensorFlow *節點使用GPU的個數,預設為空白。*可替換為(ps,worker,evaluator,graphlearn)。
STRING
是
*_gpu_type
否
TensorFlow *節點使用GPU的類型,預設為空白。樣本值:GU50。*可替換為(ps,worker,evaluator,graphlearn)。
STRING
是
*_memory
否
TensorFlow *節點使用的記憶體資源,預設為空白。樣本值:500 Mi,1 Gi。*可替換為(ps,worker,evaluator,graphlearn)。
STRING
是
*_shared_memory
否
TensorFlow *節點用於共用記憶體資源,預設為空白。樣本值:500 Mi,1 Gi。*可替換為(ps,worker,evaluator,graphlearn)。
STRING
是
樣本
通過命令列參數提交一個2 Worker+ 1 PS的分布式作業,樣本如下。
./dlc submit tfjob --name=test_2021 --ps=1 \ --ps_spec=ecs.g6.8xlarge \ --ps_image=registry-vpc.cn-beijing.aliyuncs.com/pai-dlc/tensorflow-training:1.12.2PAI-cpu-py27-ubuntu16.04 \ --workers=2 \ --worker_spec=ecs.g6.4xlarge \ --worker_image=registry-vpc.cn-beijing.aliyuncs.com/pai-dlc/tensorflow-training:1.12.2PAI-cpu-py27-ubuntu16.04 \ --command="python /root/data/dist_mnist/code/dist-main.py --max_steps=10000 --data_dir=/root/data/dist_mnist/data/" \ --workspace_id=***** \ --data_sources=data-2021xxxxxxxxxx-xxxxxxxxxxxx
系統返回如下類似結果。
+----------------------------------+--------------------------------------+ | JobId | RequestId | +----------------------------------+--------------------------------------+ | dlcmp6vwljkz**** | xxxxxxxx-79AF-4EFC-9CE9-xxxxxxxxxxxx | +----------------------------------+--------------------------------------+
通過任務參數描述檔案提交一個2 Worker+ 1 PS的分布式作業,樣本如下。
./dlc submit tfjob --job_file=job_file.dist_mnist.1ps2w
其中job_file.dist_mnist.1ps2w為任務參數描述檔案,採用
<parameterName>=<parameterValue>
的格式填寫參數。job_file.dist_mnist.1ps2w的內容如下所示。name=test_2021 workers=2 worker_spec=ecs.g6.4xlarge worker_image=registry-vpc.cn-beijing.aliyuncs.com/pai-dlc/tensorflow-training:1.12.2PAI-cpu-py27-ubuntu16.04 ps=1 ps_spec=ecs.g6.8xlarge ps_image=registry-vpc.cn-beijing.aliyuncs.com/pai-dlc/tensorflow-training:1.12.2PAI-cpu-py27-ubuntu16.04 command=python /root/data/dist_mnist/code/dist-main.py --max_steps=10000 --data_dir=/root/data/dist_mnist/data/ workspace_id=***** data_sources=data-2021xxxxxxxxxx-xxxxxxxxxxxx
提交PyTorch訓練任務(submit pytorchjob)
功能
用於提交PyTorch訓練任務。
格式
系統支援通過命令列參數或任務參數描述檔案的方式提交PyTorch任務。
./dlc submit pytorchjob [flags]
參數
如果通過命令列參數的方式提交PyTorch任務,則需要將命令中的如下參數替換為實際值。如果通過任務參數描述檔案的方式提交PyTorch任務,則將任務參數描述檔案中支援的參數以
<parameterName>=<parameterValue>
的形式寫入檔案中。提交PyTorch任務的通用參數如文章開頭的列表所示,以下為PyTorch任務的特有參數:表 4. 提交PyTorch任務的特有參數
參數名稱
是否必選
描述
類型
任務參數描述檔案中是否支援該參數
workspace_id
是
工作空間的ID,(即作業提交DLC公用的工作空間)預設為空白。如何建立工作空間可以參考建立工作空間。
STRING
是
master_image
否
PyTorch Master節點的鏡像,預設值為空白。
STRING
是
master_spec
否
PyTorch Master節點使用的伺服器型號,預設值為空白。
STRING
是
masters
否
PyTorch Master節點的數量,預設值為0。
INT
是
worker_image
否
PyTorch Worker節點的鏡像,預設值為空白。
STRING
是
worker_spec
否
PyTorch Worker節點使用的伺服器型號,預設值為空白。
STRING
是
workers
否
PyTorch Worker節點的數量,預設值為0。
INT
是
表 5. 提交PyTorch任務至專有資源群組的特有參數
參數
是否必選
描述
類型
任務參數描述檔案中是否支援該參數
resource_id
否(若要提交任務至專有資源群組則為必選)
專有資源配額的ID,預設為空白。如何建立專有資源配額可以參考通用計算資源配額。
STRING
是
priority
否
任務優先順序。預設為1。
INT
是
master_cpu
否
PyTorch Master節點使用CPU的個數,預設為空白。
STRING
是
master_gpu
否
PyTorch Master節點使用GPU的個數,預設為空白。
STRING
是
master_gpu_type
否
PyTorch Master節點使用GPU的類型,預設為空白。樣本值:GU50。
STRING
是
master_memory
否
PyTorch Master節點使用記憶體資源,預設為空白。樣本值:500 Mi,1 Gi。
STRING
是
master_shared_memory
否
PyTorch Master節點用於共用的記憶體資源,預設為空白。樣本值:500 Mi,1 Gi。
STRING
是
worker_cpu
否
PyTorch Worker節點使用CPU的個數,預設為空白。
STRING
是
worker_gpu
否
PyTorch Worker節點使用GPU的個數,預設為空白。
STRING
是
worker_gpu_type
否
PyTorch Worker節點使用GPU的類型,預設為空白。樣本值:GU50。
STRING
是
worker_memory
否
PyTorch Worker節點使用記憶體資源,預設為空白。樣本值:500 Mi,1 Gi。
STRING
是
worker_shared_memory
否
PyTorch Worker節點用於共用的記憶體資源,預設為空白。樣本值:500 Mi,1 Gi。
STRING
是
樣本
通過命令列參數提交一個GPU的模型訓練任務,樣本如下。
./dlc submit pytorchjob --name=test_pt_face \ --workers=1 \ --worker_spec=ecs.gn6e-c12g1.3xlarge \ --worker_image=registry-vpc.cn-beijing.aliyuncs.com/pai-dlc/pytorch-training:1.7.1-gpu-py37-cu110-ubuntu18.04 \ --command="apt-get update; apt-get -y --allow-downgrades install libpcre3=2:8.38-3.1 libpcre3-dev libgl1-mesa-glx libglib2.0-dev; cd /root/data/face; python train.py --num_workers 0 --save_folder outputs" \ --data_sources=data-20210410224621-xxxxxxxxxxxx \ --workspace_id=*****
系統返回如下類似結果。
+----------------------------------+--------------------------------------+ | JobId | RequestId | +----------------------------------+--------------------------------------+ | dlcu704xxuxk**** | xxxxxxxx-79AF-4EFC-9CE9-xxxxxxxxxxxx | +----------------------------------+--------------------------------------+
提交XGBoost訓練任務(submit xgboostjob)
功能
用於提交XGBoost訓練任務。
格式
系統支援通過命令列參數或任務參數描述檔案的方式提交XGBoost任務。
./dlc submit xgboostjob [flags]
參數
如果通過命令列參數的方式提交XGBoost任務,則需要將命令中的如下參數替換為實際值。如果通過任務參數描述檔案的方式提交XGBoost任務,則將任務參數描述檔案中支援的參數以
<parameterName>=<parameterValue>
的形式寫入檔案中。提交XGBoost任務的通用參數如文章開頭的列表所示,以下為XGBoost任務的特有參數:表 6. 提交XGBoost任務的特有參數
參數名稱
是否必選
描述
類型
任務參數描述檔案中是否支援該參數
workspace_id
是
工作空間的ID,(即作業提交DLC公用的工作空間)預設為空白。如何建立工作空間可以參考建立工作空間。
STRING
是
master_image
否
XGBoost Master節點的鏡像,預設值為空白。
STRING
是
master_spec
否
XGBoost Master節點使用的伺服器型號,預設值為空白。
STRING
是
masters
否
XGBoost Master節點的數量,預設值為0。
INT
是
worker_image
否
XGBoost Worker節點的鏡像,預設值為空白。
STRING
是
worker_spec
否
XGBoost Worker節點使用的伺服器型號,預設值為空白。
STRING
是
workers
否
XGBoost Worker節點的數量,預設值為0。
INT
是
表 7. 提交XGBoost任務至專有資源群組的特有參數
參數
是否必選
描述
類型
任務參數描述檔案中是否支援該參數
resource_id
否(若要提交任務至專有資源群組則為必選)
專有資源配額的ID,預設為空白。如何建立專有資源配額可以參考通用計算資源配額。
STRING
是
priority
否
任務優先順序。預設為1。
INT
是
master_cpu
否
XGBoost Master節點使用CPU的個數,預設為空白。
STRING
是
master_gpu
否
XGBoost Master節點使用GPU的個數,預設為空白。
STRING
是
master_gpu_type
否
XGBoost Master節點使用GPU的類型,預設為空白。樣本值:GU50。
STRING
是
master_memory
否
XGBoost Master節點使用記憶體資源,預設為空白。樣本值:500 Mi,1 Gi。
STRING
是
master_shared_memory
否
XGBoost Master節點用於共用的記憶體資源,預設為空白。樣本值:500 Mi,1 Gi。
STRING
是
worker_cpu
否
XGBoost Worker節點使用CPU的個數,預設為空白。
STRING
是
worker_gpu
否
XGBoost Worker節點使用GPU的個數,預設為空白。
STRING
是
worker_gpu_type
否
XGBoost Worker節點使用GPU的類型,預設為空白。樣本值:GU50。
STRING
是
worker_memory
否
XGBoost Worker節點使用記憶體資源,預設為空白。樣本值:500 Mi,1 Gi。
STRING
是
worker_shared_memory
否
XGBoost Worker節點用於共用的記憶體資源,預設為空白。樣本值:500 Mi,1 Gi。
STRING
是
樣本
通過命令列參數提交一個XGBoost任務,樣本如下。
./dlc submit xgboostjob --name=test_xgboost \ --workers=1 \ --worker_spec=ecs.gn6e-c12g1.3xlarge \ --worker_image=xgboost-training:1.6.0-cpu-py36-ubuntu18.04 \ --command="python /root/code/horovod/xgboost/main.py --job_type=Train --xgboost_parameter=objective:multi:softprob,num_class:3 --n_estimators=50 --model_path=autoAI/xgb-opt/2" \ --workspace_id=*****
系統返回如下類似結果。
+----------------------------------+--------------------------------------+ | JobId | RequestId | +----------------------------------+--------------------------------------+ | dlc1nvu3gli0**** | xxxxxxxx-79AF-4EFC-9CE9-xxxxxxxxxxxx | +----------------------------------+--------------------------------------+
提交任務時使用指定節點調度
使用靈駿智算或通用計算的資源配額提交任務時,您可以通過在DLC命令列中配置參數來調度指定節點。
該功能暫時僅供白名單使用者使用。如有需要,請聯絡您的商務經理添加白名單。
參數
參數
描述
樣本值
--allow_nodes="${allow_nodes}"
指定節點名稱列表,多個節點名稱使用半形逗號(,)分隔,建議中間不要有空格。
lingjuc47iextvg9-***,lingjuc47iextvg9-***
--deny_nodes="${deny_nodes}"
排除節點名稱列表,多個節點名稱使用半形逗號(,)分隔,建議中間不要有空格。
lingjuc47iextvg9-***,lingjuc47iextvg9-***
樣本
命令列參數
不指定調度節點
./dlc submit pytorchjob --name=assign_node_test_no_node \--workers=1 \ --worker_image=dsw-registry-vpc.****.cr.aliyuncs.com/pai/easyanimate:1.1.5-pytorch2.2.0-gpu-py310-cu118-ubuntu22.04 \ --command="sleep 1000" \ --workspace_id='****' \ --resource_id='quotau2h98mt****' \ --worker_cpu="1" \ --worker_memory='2Gi'
指定調度節點
./dlc submit pytorchjob --name=assign_node_test_2_allow_nodes \--workers=1 \ --worker_image=dsw-registry-vpc.****.cr.aliyuncs.com/pai/easyanimate:1.1.5-pytorch2.2.0-gpu-py310-cu118-ubuntu22.04 \ --command="sleep 1000" \ --workspace_id='****' \ --resource_id='quotau2h98mt****' \ --worker_cpu="1" \ --worker_memory='2Gi' \ --allow_nodes="lingjuc47iextvg9-****,lingjuc47iextvg9-****"
排除指定節點
./dlc submit pytorchjob --name=assign_node_test_two_deny_nodes \--workers=1 \ --worker_image=dsw-registry-vpc.****.cr.aliyuncs.com/pai/easyanimate:1.1.5-pytorch2.2.0-gpu-py310-cu118-ubuntu22.04 \ --command="sleep 1000" \ --workspace_id='****' \ --resource_id='quotau2h98mt****' \ --worker_cpu="1" \ --worker_memory='2Gi' \ --deny_nodes="lingjuc47iextvg9-****,lingjuc47iextvg9-****"
指定調度節點&排除指定節點
./dlc submit pytorchjob --name=assign_node_test_two_allow_two_deny \--workers=1 \ --worker_image=dsw-registry-vpc.****.cr.aliyuncs.com/pai/easyanimate:1.1.5-pytorch2.2.0-gpu-py310-cu118-ubuntu22.04 \ --command="sleep 1000" \ --workspace_id='****' \ --resource_id='quotau2h98mt****' \ --worker_cpu="1" \ --worker_memory='2Gi' \ --allow_nodes="lingjuc47iextvg9-****,lingjuc47iextvg9-****" \ --deny_nodes="lingjuc47iextvg9-****,lingjuc47iextvg9-****"
檔案讀取
命令列
./dlc submit pytorchjob -f job_file
job_file檔案樣本
不指定調度節點
name=assign_node_test_no_node workers=1 worker_image=dsw-registry-vpc.****.cr.aliyuncs.com/pai/easyanimate:1.1.5-pytorch2.2.0-gpu-py310-cu118-ubuntu22.04 command=sleep 1000 workspace_id=**** resource_id=quotau2h98mt**** worker_cpu=1 worker_memory=2Gi
指定調度節點
name=assign_node_test_2_allow_nodes workers=1 worker_image=dsw-registry-vpc.****.cr.aliyuncs.com/pai/easyanimate:1.1.5-pytorch2.2.0-gpu-py310-cu118-ubuntu22.04 command=sleep 1000 workspace_id=**** resource_id=quotau2h98mt**** worker_cpu=1 worker_memory=2Gi allow_nodes=lingjuc47iextvg9-****,lingjuc47iextvg9-****
排除指定節點
name=assign_node_test_two_allow_two_deny workers=1 worker_image=dsw-registry-vpc.****.cr.aliyuncs.com/pai/easyanimate:1.1.5-pytorch2.2.0-gpu-py310-cu118-ubuntu22.04 command=sleep 1000 workspace_id=**** resource_id=quotau2h98mt**** worker_cpu=1 worker_memory=2Gi deny_nodes=lingjuc47iextvg9-****,lingjuc47iextvg9-****
指定調度節點&排除指定節點
name=assign_node_test_two_allow_two_deny workers=1 worker_image=dsw-registry-vpc.****.cr.aliyuncs.com/pai/easyanimate:1.1.5-pytorch2.2.0-gpu-py310-cu118-ubuntu22.04 command=sleep 1000 workspace_id=**** resource_id=quotau2h98mt**** worker_cpu=1 worker_memory=2Gi allow_nodes=lingjuc47iextvg9-****,lingjuc47iextvg9-**** deny_nodes=lingjuc47iextvg9-****,lingjuc47iextvg9-****