O Deep Learning Containers (DLC) permite criar rapidamente jobs de treinamento em nó único ou distribuído, sem provisionar máquinas ou configurar ambientes manualmente. Este tutorial demonstra o processo completo para treinamento com GPU única em nó único e com múltiplas GPUs em múltiplos nós, usando a tarefa de reconhecimento de dígitos manuscritos MNIST.
O reconhecimento de dígitos manuscritos MNIST é uma tarefa introdutória clássica em deep learning. O objetivo é construir um modelo de machine learning capaz de reconhecer 10 dígitos manuscritos (de 0 a 9).
1. Pré-requisitos
Use sua conta principal para ativar o PAI e crie um workspace. Acesse o PAI console, selecione uma região no canto superior esquerdo e siga as instruções para conceder permissões e ativar o service.
2. Faturamento
Os exemplos deste tutorial usam recursos públicos para criar jobs do DLC, cobrados na modalidade de pagamento conforme o uso. Para mais informações, consulte Billing for Deep Learning Containers (DLC).
3. Treinamento em nó único com GPU única
3,1 Criar um dataset
Um dataset armazena seu código de treinamento, dados e artefatos do modelo. Esta seção explica como usar um dataset baseado no Object Storage Service (OSS) da Alibaba Cloud.
No painel de navegação à esquerda do PAI console, escolha Datasets > Custom Dataset > Create datasets.
-
Configure os seguintes parâmetros principais e mantenha os valores padrão para os demais.
Name: Por exemplo, insira
dataset_mnist.Storage Type: Selecione OSS.
-
OSS Path: Clique no ícone de pasta
, selecione um bucket e crie um novo diretório, como dlc_mnist.Se você ainda não ativou o OSS ou não tem um bucket disponível na região atual, siga estas etapas para ativar o OSS e criar um bucket:
Clique em Confirm para criar o dataset.
-
Faça upload do código de treinamento e dos dados.
-
Baixe o script de treinamento fornecido: mnist_train.py. Para simplificar o processo, o script baixa automaticamente os dados de treinamento para o diretório dataSet do seu dataset durante a execução.
Para seus próprios projetos, faça upload prévio do código e dos dados de treinamento para um dataset do PAI.
Faça upload do código. Na página de detalhes do dataset, clique em View Data para acessar o OSS console. Em seguida, clique em Upload Object >Select Files > Upload Object para enviar o script de treinamento ao OSS.
-
3,2 Criar um job do DLC
No painel de navegação à esquerda do PAI console, escolha Deep Learning Containers (DLC) > Create Job.
-
Configure os seguintes parâmetros principais e mantenha os valores padrão para os demais. Para a lista completa de parâmetros, consulte Create a training job.
-
Image Configuration: Selecione Image Address e insira o endereço de imagem apropriado para sua Region.
Na barra de navegação superior do console, use o seletor de Region para confirme sua região atual, como China (Hangzhou).
Region
Image address
China (Beijing)
dsw-registry-vpc.cn-beijing.cr.aliyuncs.com/pai/modelscope:1.28.0-pytorch2.3.1tensorflow2.16.1-gpu-py311-cu121-ubuntu22,04
China (Shanghai)
dsw-registry-vpc.cn-shanghai.cr.aliyuncs.com/pai/modelscope:1.28.0-pytorch2.3.1tensorflow2.16.1-gpu-py311-cu121-ubuntu22,04
China (Hangzhou)
dsw-registry-vpc.cn-hangzhou.cr.aliyuncs.com/pai/modelscope:1.28.0-pytorch2.3.1tensorflow2.16.1-gpu-py311-cu121-ubuntu22,04
Other
Find your region ID e substitua <Region ID> no endereço da imagem para obter a URL completa:
dsw-registry-vpc.<Region ID>.cr.aliyuncs.com/pai/modelscope:1.28.0-pytorch2.3.1tensorflow2.16.1-gpu-py311-cu121-ubuntu22,04
Esta imagem usa o mesmo ambiente verificado do tópico Get Started with DSW Interactive Modeling . Ao criar modelos com o PAI, um fluxo de trabalho típico consiste em verificar primeiro o ambiente e desenvolver o código no DSW, usando depois o DLC para treinamento.
Dataset Mount: Selecione Custom Dataset e escolha o dataset criado na etapa anterior. O Mount Path padrão é
/mnt/data.-
Startup Command:
python /mnt/data/mnist_train.pyO comando de inicialização é o mesmo usado ao executar o código no DSW ou localmente. No entanto, como o
mnist_train.pyagora está montado em/mnt/data/, basta alterar o caminho do código para/mnt/data/mnist_train.py. -
Source: Selecione Public Resources e escolha
ecs.gn7i-c8g1.2xlargepara o Resource Type.Se este tipo de instância estiver indisponível, escolha outro tipo de instância com GPU.
Clique em OK para criar o job. A execução leva cerca de 15 minutos. Durante o processo, clique em Logs para visualizar o progresso do treinamento.
O log de treinamento mostra que o modelo MNIST atinge uma acurácia de validação de 9886/10000 (aproximadamente 99%) na Época 18. Quando o status do job mudar para Succeeded, o log exibirá a saída final:
Training complete. writer.close().Após a conclusão do job, o DLC salva o melhor checkpoint do modelo e o log do TensorBoard no caminho
outputdo dataset montado.O diretório
dlc_mnist/no seu bucket OSS agora contém um subdiretóriodataSet/para os dados de treinamento, um subdiretóriooutput/para os artefatos do modelo e o scriptmnist_train.py. -
3,3 (Opcional) Visualizar no TensorBoard
Use a ferramenta de visualização TensorBoard para ver a curva de perda e compreender melhor o processo de treinamento.
Para usar o TensorBoard em um job do DLC, configure um dataset.
Na página de detalhes do job do DLC, clique na aba Tensorboard e depois em Create TensorBoard.
-
Defina o Configuration Type como By Task. No campo Summary Path, insira o caminho onde o SummaryWriter salva os dados no código de treinamento:
/mnt/data/output/runs/. Clique em OK para iniciar.Isso corresponde ao trecho de código:
writer = SummaryWriter('/mnt/data/output/runs/mnist_experiment') -
Clique em View TensorBoard para visualizar a curva train_loss (perda do conjunto de treinamento) e a curva validation_loss (perda do conjunto de validação).

3,4 Implantar o modelo treinado
Para mais informações, consulte V. Use EAS to deploy model services.
4. Treinamento distribuído com múltiplas GPUs
Se uma única GPU não tiver memória suficiente para seu modelo ou se você quiser acelerar o treinamento, crie um job de treinamento distribuído com múltiplas GPUs ou múltiplos nós.
Esta seção usa duas instâncias, cada uma com uma única GPU, como exemplo. O mesmo procedimento se aplica a outras configurações com múltiplas GPUs e múltiplos nós.
4,1 Preparar o dataset e o script
Se você já criou um dataset na seção 3. Single-node, single-GPU training, basta baixe o arquivo mnist_train_distributed.py e fazer o upload. Caso contrário, primeiro 3,1 Create a dataset e depois envie o código.
4,2 Criar um job distribuído do DLC
No painel de navegação à esquerda do PAI console, escolha Deep Learning Containers (DLC) > Create Job.
-
Configure os seguintes parâmetros principais e mantenha os valores padrão para os demais. Para a lista completa de parâmetros, consulte Create a training job.
-
Image Configuration: Selecione Image Address e insira o endereço de imagem apropriado para sua Region.
Region
Image address
China (Beijing)
dsw-registry-vpc.cn-beijing.cr.aliyuncs.com/pai/modelscope:1.28.0-pytorch2.3.1tensorflow2.16.1-gpu-py311-cu121-ubuntu22,04
China (Shanghai)
dsw-registry-vpc.cn-shanghai.cr.aliyuncs.com/pai/modelscope:1.28.0-pytorch2.3.1tensorflow2.16.1-gpu-py311-cu121-ubuntu22,04
China (Hangzhou)
dsw-registry-vpc.cn-hangzhou.cr.aliyuncs.com/pai/modelscope:1.28.0-pytorch2.3.1tensorflow2.16.1-gpu-py311-cu121-ubuntu22,04
Other
Find your region ID e substitua <Region ID> no endereço da imagem para obter a URL completa:
dsw-registry-vpc.<Region ID>.cr.aliyuncs.com/pai/modelscope:1.28.0-pytorch2.3.1tensorflow2.16.1-gpu-py311-cu121-ubuntu22,04
Esta imagem usa o mesmo ambiente verificado do tópico Get Started with DSW Interactive Modeling . Ao criar modelos com o PAI, um fluxo de trabalho típico consiste em verificar primeiro o ambiente e desenvolver o código no DSW, usando depois o DLC para treinamento.
Dataset Mount: Selecione Custom Dataset e escolha o dataset criado. O Mount Path padrão é
/mnt/data.-
Startup Command:
torchrun --nproc_per_node=1 --nnodes=${WORLD_SIZE} --node_rank=${RANK} --master_addr=${MASTER_ADDR} --master_port=${MASTER_PORT} /mnt/data/mnist_train_distributed.pyO DLC injeta automaticamente variáveis de ambiente comuns do environment variables , como
MASTER_ADDReWORLD_SIZE, acessíveis pela sintaxe$VARIABLE_NAME. -
Source: Selecione Public Resources, defina o Number of Nodes como 2 e escolha
ecs.gn7i-c8g1.2xlargepara o Resource Type.Se este tipo de instância estiver indisponível, escolha outro tipo de instância com GPU.
Clique em Confirm para criar o job. A execução leva cerca de 10 minutos. Durante o processo, visualize o Log de treinamento de ambas as instâncias na página Overview.
Após a conclusão do job, o DLC salva o melhor checkpoint do modelo e o log do TensorBoard no caminho
output_distributeddo dataset montado. -
4,3 (Opcional) Visualizar no TensorBoard
Use a ferramenta de visualização TensorBoard para ver a curva de perda e compreender melhor o processo de treinamento.
Para usar o TensorBoard em um job do DLC, configure um dataset.
Na página de detalhes do job do DLC, clique na aba TensorBoard e depois em Create TensorBoard.
-
Defina o Configuration Type como By Task. No campo Summary Path, insira o caminho onde o código de treinamento salva os arquivos de resumo:
/mnt/data/output_distributed/runs. Clique em OK para iniciar.Isso corresponde ao trecho de código:
writer = SummaryWriter('/mnt/data/output_distributed/runs/mnist_experiment') -
Clique em View TensorBoard para visualizar a curva train_loss (perda do conjunto de treinamento) e a curva validation_loss (perda do conjunto de validação).

4,4 Implantar o modelo treinado
Para mais informações, consulte V. Deploying model services using EAS.
5. Informações relacionadas
Para mais detalhes sobre os recursos do DLC, consulte Deep Learning Containers (DLC).