Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Atualizado em 2024-09-14 GMT+08:00

Envio de um trabalho de treinamento do ModelArts

Execute o comando ma-cli ma-job submit para enviar um trabalho de treinamento do ModelArts.

Antes de executar esse comando, configure YAML_FILE para especificar o caminho para o arquivo de configuração do trabalho de destino. Se este parâmetro não for especificado, o arquivo de configuração estará vazio. O arquivo de configuração está no formato YAML e seus parâmetros são o parâmetro option do comando. Se você especificar o arquivo de configuração YAML_FILE e o parâmetro option na CLI, o valor do parâmetro option substituirá isso no arquivo de configuração.

$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.
Tabela 1 Parâmetros

Parâmetro

Tipo

Obrigatório

Descrição

YAML_FILE

String

Não

Arquivo de configuração de um trabalho de treinamento. Se este parâmetro não for especificado, o arquivo de configuração estará vazio.

--code-dir

String

Sim

Caminho do OBS para o código-fonte do treinamento

--data-url

String

Sim

Caminho do OBS para os dados de treinamento

--log-url

String

Sim

Caminho do OBS para logs de treinamento

--train-instance-count

String

Sim

Número de nós de computação em um trabalho de treinamento. O valor padrão é 1, indicando um nó independente.

--boot-file

String

Não

O arquivo de inicialização especificado quando você usa um comando predefinido é usado para enviar um trabalho de treinamento. Esse parâmetro pode ser omitido quando você usa uma imagem ou um comando personalizado para enviar um trabalho de treinamento.

--name

String

Não

Nome de um trabalho de treinamento

--description

String

Não

Descrição de um trabalho de treinamento

--image-url

String

Não

URL do SWR de uma imagem personalizada, que está no formato de "organization/image_name:tag".

--uid

String

Não

UID de tempo de execução de uma imagem personalizada. O valor padrão é 1000.

--working-dir

String

Não

Diretório de trabalho onde um algoritmo é executado

--local-code-dir

String

Não

Diretório local para o contêiner de treinamento para o qual o diretório de código do algoritmo é baixado

--user-command

String

Não

Comando para executar uma imagem personalizada. O diretório deve estar em /home. Quando code-dir é prefixo com file://, este parâmetro não tem efeito.

--pool-id

String

Não

ID do pool de recursos selecionado para um trabalho de treinamento. Para obter o ID, faça o seguinte: faça logon no console de gerenciamento do ModelArts, escolha Dedicated Resource Pools no painel de navegação à esquerda e visualize o ID do pool de recursos na lista de pool de recursos dedicados.

--train-instance-type

String

Não

Flavor de recurso selecionado para um trabalho de treinamento

--output

String

Não

Saída de treinamento. Depois que esse parâmetro for especificado, o trabalho de treinamento carregará o diretório de saída do contêiner de treinamento correspondente ao parâmetro de saída especificado no script de treinamento para um caminho do OBS especificado. Para especificar vários parâmetros, use --output output1=obs://bucket/output1 --output output2=obs://bucket/output2.

--input

String

Não

Entrada de treinamento. Depois que esse parâmetro for especificado, o trabalho de treinamento fará o download dos dados do OBS para o contêiner de treinamento e transferirá o caminho de armazenamento de dados para o script de treinamento por meio do parâmetro especificado. Para especificar vários parâmetros, use --input data_path1=obs://bucket/data1 --input data_path2=obs://bucket/data2.

--env-variables

String

Não

Entrada de variáveis de ambiente durante o treinamento. Para especificar vários parâmetros, use --env-variables ENV1=env1 --env-variables ENV2=env2.

--parameters

String

Não

Parâmetros de entrada de treinamento. Para especificar vários parâmetros, use --parameters "--epoch 0 --pretrained".

--framework-type

String

Não

Mecanismo selecionado para um trabalho de treinamento

--framework-version

String

Não

Versão do mecanismo selecionada para um trabalho de treinamento

-q / --quiet

Bool

Não

Depois que um trabalho de treinamento é enviado, o sistema sai diretamente e não imprime o status do trabalho de forma síncrona.

--workspace-id

String

Não

Espaço de trabalho onde um trabalho de treinamento é implementado. O valor padrão é 0.

--policy

String

Não

Modo de especificação de recursos de treinamento. As opções são regular, economic, turbo e auto.

--volumes

String

Não

Montar discos EFS. Para especificar vários parâmetros, use --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:/"

Enviar um trabalho de treinamento baseado em uma imagem do ModelArts predefinida

Envie um trabalho de treinamento especificando o parâmetro options na 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

Veja a seguir um exemplo de train.yaml usando uma imagem 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:/

Usar uma imagem personalizada para criar um trabalho de treinamento

Envie um trabalho de treinamento especificando o parâmetro options na 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

Veja a seguir um exemplo de train.yaml usando uma imagem 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:/

Exemplos

  • Envie um trabalho de treinamento baseado em um arquivo YAML.
    ma-cli ma-job submit ./train-job.yaml

  • Envie um trabalho de treinamento usando imagem predefinida pytorch1.8-cuda10.2-cudnn7-ubuntu18.04 por meio da 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 \