Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Actualización más reciente 2024-09-20 GMT+08:00

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.
Tabla 1 Parámetros

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

Ruta de OBS hacia el código fuente del entrenamiento

--data-url

String

Ruta de OBS hacia los datos de entrenamiento

--log-url

String

Ruta de OBS a los logs de entrenamiento

--train-instance-count

String

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 \