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.
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 \