Envío de un trabajo de entrenamiento de ModelArts
Ejecute el comando ma-cli ma-job submit para enviar un trabajo de entrenamiento de ModelArts.
Antes de ejecutar este comando, configure YAML_FILE para especificar la ruta al archivo de configuración del trabajo de destino. Si no se especifica este parámetro, el archivo de configuración estará vacío. El archivo de configuración está en formato de YAML y sus parámetros son el parámetro option del comando. Si especifica tanto el archivo de configuración YAML_FILE como el parámetro option en la CLI, el valor del parámetro option lo sobrescribirá en el archivo de configuración.
$ma-cli ma-job submit -h Usage: ma-cli ma-job submit [OPTIONS] [YAML_FILE]... Submit training job. Example: ma-cli ma-job submit --code-dir obs://your_bucket/code/ --boot-file main.py --framework-type PyTorch --working-dir /home/ma-user/modelarts/user-job-dir/code --framework-version pytorch_1.8.0-cuda_10.2-py_3.7-ubuntu_18.04-x86_64 --data-url obs://your_bucket/dataset/ --log-url obs://your_bucket/logs/ --train-instance-type modelarts.vm.cpu.8u --train-instance-count 1 Options: --name TEXT Job name. --description TEXT Job description. --image-url TEXT Full swr custom image path. --uid TEXT Uid for custom image (default: 1000). --working-dir TEXT ModelArts training job working directory. --local-code-dir TEXT ModelArts training job local code directory. --user-command TEXT Execution command for custom image. --pool-id TEXT Dedicated pool id. --train-instance-type TEXT Train worker specification. --train-instance-count INTEGER Number of workers. --data-url TEXT OBS path for training data. --log-url TEXT OBS path for training log. --code-dir TEXT OBS path for source code. --output TEXT Training output parameter with OBS path. --input TEXT Training input parameter with OBS path. --env-variables TEXT Env variables for training job. --parameters TEXT Training job parameters (only keyword parameters are supported). --boot-file TEXT Training job boot file path behinds `code_dir`. --framework-type TEXT Training job framework type. --framework-version TEXT Training job framework version. --workspace-id TEXT The workspace where you submit training job(default "0") --policy [regular|economic|turbo|auto] Training job policy, default is regular. --volumes TEXT Information about the volumes attached to the training job. -q, --quiet Exit without waiting after submit successfully. -C, --config-file PATH Configure file path for authorization. -D, --debug Debug Mode. Shows full stack trace when error occurs. -P, --profile TEXT CLI connection profile to use. The default profile is "DEFAULT". -H, -h, --help Show this message and exit.
Parámetro |
Tipo |
Obligatorio |
Descripción |
---|---|---|---|
YAML_FILE |
String |
No |
Archivo de configuración de un trabajo de entrenamiento. Si no se especifica este parámetro, el archivo de configuración estará vacío. |
--code-dir |
String |
Sí |
Ruta de OBS hacia el código fuente del entrenamiento |
--data-url |
String |
Sí |
Ruta de OBS hacia los datos de entrenamiento |
--log-url |
String |
Sí |
Ruta de OBS a los logs de entrenamiento |
--train-instance-count |
String |
Sí |
Número de nodos de cómputo en un trabajo de entrenamiento. El valor predeterminado es 1 e indica que se trata de un nodo independiente. |
--boot-file |
String |
No |
El archivo de inicio especificado cuando se utiliza un comando preestablecido se utiliza para enviar un trabajo de entrenamiento. Este parámetro se puede omitir cuando se utiliza una imagen o un comando personalizados para enviar un trabajo de entrenamiento. |
--name |
String |
No |
Nombre de un trabajo de entrenamiento |
--description |
String |
No |
Descripción de un trabajo de entrenamiento |
--image-url |
String |
No |
URL de SWR de una imagen personalizada, que tiene el formato "organization/image_name:tag". |
--uid |
String |
No |
UID en tiempo de ejecución de una imagen personalizada. El valor predeterminado es 1000. |
--working-dir |
String |
No |
Directorio de trabajo donde se ejecuta un algoritmo |
--local-code-dir |
String |
No |
Directorio local del contenedor de entrenamiento en el que se descarga el directorio de códigos del algoritmo |
--user-command |
String |
No |
Comando para ejecutar una imagen personalizada. El directorio debe estar bajo /home. Este parámetro no tiene efecto cuando el prefijo file:// es code-dir. |
--pool-id |
String |
No |
ID del grupo de recursos seleccionado para un trabajo de entrenamiento. Para obtener el ID, haga lo siguiente: Inicie sesión en la consola de gestión de ModelArts y elija Dedicated Resource Pools en el panel de navegación de la izquierda y vea el ID del grupo de recursos en la lista del grupo de recursos dedicado. |
--train-instance-type |
String |
No |
Variante de recurso seleccionada para un trabajo de entrenamiento |
--output |
String |
No |
Training output. Una vez especificado este parámetro, el trabajo de entrenamiento cargará el directorio de salida del contenedor de entrenamiento correspondiente al parámetro de salida especificado en el script de entrenamiento en una ruta de OBS especificada. Para especificar múltiples parámetros, utilice --output output1=obs://bucket/output1 --output output2=obs://bucket/output2. |
--input |
String |
No |
Entradas de entrenamiento. Una vez especificado este parámetro, el trabajo de entrenamiento descargará los datos de OBS al contenedor de entrenamiento y transferirá la ruta de almacenamiento de datos al script de entrenamiento a través del parámetro especificado. Para especificar múltiples parámetros, utilice --input data_path1=obs://bucket/data1 --input data_path2=obs://bucket/data2. |
--env-variables |
String |
No |
Entrada de variables de entorno durante el entrenamiento. Para especificar múltiples parámetros, utilice --env-variables ENV1=env1 --env-variables ENV2=env2. |
--parameters |
String |
No |
Parámetros de entrada de entrenamiento. Para especificar varios parámetros, utilice --parameters "--epoch 0 --pretrained". |
--framework-type |
String |
No |
Motor seleccionado para un trabajo de entrenamiento |
--framework-version |
String |
No |
Versión del motor seleccionada para un trabajo de entrenamiento |
-q / --quiet |
Bool |
No |
Después de enviar un trabajo de entrenamiento, el sistema se cierra directamente y no imprime el estado del trabajo de manera sincrónica. |
--workspace-id |
String |
No |
Espacio de trabajo donde se despliega un trabajo de entrenamiento. El valor predeterminado es 0. |
--policy |
String |
No |
Modo de especificación de recursos de entrenamiento. Las opciones son regular, economic, turbo y auto. |
--volumes |
String |
No |
Montar discos de EFS. Para especificar varios parámetros, utilice --volumes. "local_path=/xx/yy/zz;read_only=false;nfs_server_path=xxx.xxx.xxx.xxx:/" -volumes "local_path=/xxx/yyy/zzz;read_only=false;nfs_server_path=xxx.xxx.xxx.xxx:/" |
Envío de un trabajo de entrenamiento basado en una imagen preestablecida de ModelArts
Enviar un trabajo de entrenamiento especificando el parámetro options en la CLI.
ma-cli ma-job submit --code-dir obs://your-bucket/mnist/code/ \ --boot-file main.py \ --framework-type PyTorch \ --working-dir /home/ma-user/modelarts/user-job-dir/code \ --framework-version pytorch_1.8.0-cuda_10.2-py_3.7-ubuntu_18.04-x86_64 \ --data-url obs://your-bucket/mnist/dataset/MNIST/ \ --log-url obs://your-bucket/mnist/logs/ \ --train-instance-type modelarts.vm.cpu.8u \ --train-instance-count 1 \ -q
A continuación se muestra un ejemplo de train.yaml utilizando una imagen predefinida:
# Example .ma/train.yaml (preset image) # pool_id: pool_xxxx train-instance-type: modelarts.vm.cpu.8u train-instance-count: 1 data-url: obs://your-bucket/mnist/dataset/MNIST/ code-dir: obs://your-bucket/mnist/code/ working-dir: /home/ma-user/modelarts/user-job-dir/code framework-type: PyTorch framework-version: pytorch_1.8.0-cuda_10.2-py_3.7-ubuntu_18.04-x86_64 boot-file: main.py log-url: obs://your-bucket/mnist/logs/ ##[Optional] Uncomment to set uid when use custom image mode uid: 1000 ##[Optional] Uncomment to upload output file/dir to OBS from training platform output: - name: output_dir obs_path: obs://your-bucket/mnist/output1/ ##[Optional] Uncomment to download input file/dir from OBS to training platform input: - name: data_url obs_path: obs://your-bucket/mnist/dataset/MNIST/ ##[Optional] Uncomment pass hyperparameters parameters: - epoch: 10 - learning_rate: 0.01 - pretrained: ##[Optional] Uncomment to use dedicated pool pool_id: pool_xxxx ##[Optional] Uncomment to use volumes attached to the training job volumes: - efs: local_path: /xx/yy/zz read_only: false nfs_server_path: xxx.xxx.xxx.xxx:/
Uso de una imagen personalizada para crear un trabajo de entrenamiento
Enviar un trabajo de entrenamiento especificando el parámetro options en la CLI.
ma-cli ma-job submit --image-url atelier/pytorch_1_8:pytorch_1.8.0-cuda_10.2-py_3.7-ubuntu_18.04-x86_64-20220926104358-041ba2e \ --code-dir obs://your-bucket/mnist/code/ \ --user-command "export LD_LIBRARY_PATH=/usr/local/cuda/compat:$LD_LIBRARY_PATH && cd /home/ma-user/modelarts/user-job-dir/code && /home/ma-user/anaconda3/envs/PyTorch-1.8/bin/python main.py" \ --data-url obs://your-bucket/mnist/dataset/MNIST/ \ --log-url obs://your-bucket/mnist/logs/ \ --train-instance-type modelarts.vm.cpu.8u \ --train-instance-count 1 \ -q
A continuación se muestra un ejemplo de train.yaml utilizando una imagen personalizada:
# Example .ma/train.yaml (custom image) image-url: atelier/pytorch_1_8:pytorch_1.8.0-cuda_10.2-py_3.7-ubuntu_18.04-x86_64-20220926104358-041ba2e user-command: export LD_LIBRARY_PATH=/usr/local/cuda/compat:$LD_LIBRARY_PATH && cd /home/ma-user/modelarts/user-job-dir/code && /home/ma-user/anaconda3/envs/PyTorch-1.8/bin/python main.py train-instance-type: modelarts.vm.cpu.8u train-instance-count: 1 data-url: obs://your-bucket/mnist/dataset/MNIST/ code-dir: obs://your-bucket/mnist/code/ log-url: obs://your-bucket/mnist/logs/ ##[Optional] Uncomment to set uid when use custom image mode uid: 1000 ##[Optional] Uncomment to upload output file/dir to OBS from training platform output: - name: output_dir obs_path: obs://your-bucket/mnist/output1/ ##[Optional] Uncomment to download input file/dir from OBS to training platform input: - name: data_url obs_path: obs://your-bucket/mnist/dataset/MNIST/ ##[Optional] Uncomment pass hyperparameters parameters: - epoch: 10 - learning_rate: 0.01 - pretrained: ##[Optional] Uncomment to use dedicated pool pool_id: pool_xxxx ##[Optional] Uncomment to use volumes attached to the training job volumes: - efs: local_path: /xx/yy/zz read_only: false nfs_server_path: xxx.xxx.xxx.xxx:/
Ejemplos
- Enviar un trabajo de entrenamiento basado en un archivo YAML.
ma-cli ma-job submit ./train-job.yaml
- Enviar un trabajo de entrenamiento utilizando pytorch1.8-cuda10.2-cudnn7-ubuntu18.04 de imágenes preestablecidas con la CLI.
ma-cli ma-job submit --code-dir obs://automation-use-only/Original/TrainJob/TrainJob-v2/pytorch1.8.0_cuda10.2/code/ \ --boot-file test-pytorch.py \ --framework-type PyTorch \ --working-dir /home/ma-user/modelarts/user-job-dir/code \ --framework-version pytorch_1.8.0-cuda_10.2-py_3.7-ubuntu_18.04-x86_64 \ --data-url obs://automation-use-only/Original/TrainJob/TrainJob-v2/pytorch1.8.0_cuda10.2/data/ \ --log-url obs://automation-use-only/Original/TrainJob/TrainJob-v2/pytorch1.8.0_cuda10.2/data/logs/ \ --train-instance-type modelarts.vm.cpu.8u \ --train-instance-count 1 \