O Deep Learning Containers (DLC) do Platform for AI (PAI) oferece suporte a jobs de treinamento distribuído do tipo MPIJob. Este guia orienta você no envio de um MPIJob usando mpirun ou DeepSpeed (pdsh), desde a preparação do código-fonte até o monitoramento dos logs de treinamento.
Pré-requisitos
Antes de começar, verifique se você possui:
DLC ativado e um workspace padrão criado. Consulte Ativar o PAI e criar o workspace padrão
Recursos Lingjun adquiridos e uma cota de recursos criada. Consulte Criar cotas de recursos
Limitações
Os jobs de treinamento MPIJob têm suporte apenas na região China (Ulanqab) com recursos Lingjun.
Como funciona
Um MPIJob utiliza duas funções: um launcher e um ou mais workers. O launcher inicia o processo de treinamento em todos os nós, enquanto os workers executam a computação distribuída. O DLC gera automaticamente o hostfile e configura a comunicação entre nós, eliminando a necessidade de configurar o SSH manualmente.
O DLC pré-configura variáveis de ambiente para o launcher. Se necessário, substitua esses padrões no comando de inicialização. Consulte Variáveis de ambiente do sistema.
Escolha um método de inicialização
O DLC oferece dois métodos para iniciar o treinamento MPIJob:
|
Método |
Mecanismo de inicialização |
Quando usar |
|
mpirun |
kubexec (gerenciado pelo DLC) |
Treinamento distribuído MPI padrão |
|
DeepSpeed (pdsh) |
pdsh |
Treinamento com paralelismo de pipeline DeepSpeed |
Ambos os métodos utilizam a mesma configuração de recursos. A única diferença é o comando de inicialização.
Etapa 1: Prepare um código-fonte
Crie um código-fonte utilizando o repositório oficial de exemplos do DeepSpeed.
-
No console do DLC, acesse Code Builds e crie um novo código-fonte com os parâmetros abaixo. Mantenha os valores padrão para os demais parâmetros. Consulte Configuração de código.
Parâmetro
Valor
Name
deepspeed-examplesGit repository
https://github.com/microsoft/DeepSpeedExamples.git
Etapa 2: Envie um job de treinamento distribuído
Opção 1: mpirun
No PAI console, selecione sua região e workspace e clique em Deep Learning Containers (DLC).
Na página do DLC, clique em Create Job.
-
Na página Create Job, configure os seguintes parâmetros. Para os demais parâmetros, consulte Criar um job de treinamento. Startup command:
Resource type e Driver settings aparecem apenas quando o workspace oferece suporte tanto a recursos Lingjun quanto a recursos gerais.
Informações de ambiente
Parâmetro
Valor
Image URL
dsw-registry-vpc.<RegionID>.cr.aliyuncs.com/pai-common/deepspeed-training:23.08-gpu-py310-cu122-ubuntu22.04— substitua<RegionID>pelo ID da sua região. Para China (Ulanqab), usecn-wulanchabu. Para outros IDs de região, consulte Regiões e zonas.Startup command
Veja abaixo
Code Builds
Selecione Online configuration e escolha o código-fonte criado. Mantenha o Mount path padrão.
Informações de recursos
Parâmetro
Valor
Resource type
Lingjun AI Computing Service
Source
Resource Quota
Resource quota
Selecione a cota de recursos Lingjun criada
Framework
MPI
Number of nodes
2
vCPUs
4
GPUs
1
Memory (GiB)
8
Shared memory (GiB)
8
Driver settings
535.54.03(recomendado para a imagem de teste acima)cd /root/code/DeepSpeedExamples/training/cifar/ # -np 2: launch 2 processes (one per node) # -bind-to none -map-by slot: use all available CPU cores on each slot # -x LD_LIBRARY_PATH -x PATH: forward these environment variables to worker nodes # -mca pml ob1 -mca btl ^openib: use TCP instead of InfiniBand for point-to-point messaging mpirun -np 2 --allow-run-as-root \ -bind-to none -map-by slot \ -x LD_LIBRARY_PATH -x PATH \ -mca pml ob1 -mca btl ^openib \ python /root/code/DeepSpeedExamples/training/cifar/cifar10_tutorial.py Clique em OK.
Opção 2: DeepSpeed (pdsh)
Use este comando de inicialização em vez do comando mpirun acima. Todos os outros parâmetros permanecem iguais.
cd /root/code/DeepSpeedExamples/training/pipeline_parallelism
# --hostfile: DLC auto-generates this file with all node addresses
# -p 2: number of pipeline stages
# --steps 200: total training steps
deepspeed --hostfile /etc/mpi/hostfile train.py \
--deepspeed_config=ds_config.json \
-p 2 \
--steps=200
Para usar uma imagem personalizada com o DeepSpeed, instale as bibliotecas MPI e DeepSpeed necessárias na imagem. As imagens oficiais do DeepSpeed no DockerHub já incluem essas bibliotecas pré-instaladas.
Etapa 3: Visualize detalhes e logs do job
Após enviar o job, clique no nome dele na página Deep Learning Containers (DLC).
Na página de detalhes do job, verifique as informações básicas e o status de execução.
-
Na seção Instance, na parte inferior da página, localize a instância com o tipo launcher e clique em Log na coluna Actions.

Variáveis de ambiente do sistema
O DLC pré-configura as seguintes variáveis de ambiente para a função launcher. Substitua-as no comando de inicialização caso seu ambiente exija configurações diferentes.
| Variável de ambiente | Descrição | Padrão | Método aplicável |
|---|---|---|---|
OMPI_MCA_btl_tcp_if_include |
Controlador de interface de rede (NIC) para comunicação entre launcher e worker. Separe múltiplos NICs por vírgulas. | eth0 |
mpirun |
OMPI_MCA_orte_default_hostfile |
Caminho do arquivo de hosts para o comando mpirun. O DLC gera esse arquivo automaticamente. | /etc/mpi/hostfile |
|
OMPI_MCA_plm_rsh_agent |
Método usado pelo launcher para iniciar processos de worker em nós remotos. | /etc/mpi/kubexec.sh |
|
PDSH_RCMD_TYPE |
Tipo de comando remoto para pdsh. | ssh |
DeepSpeed (pdsh) |
Quando substituir: Substitua OMPI_MCA_btl_tcp_if_include se seus nós usarem um NIC diferente de eth0 para comunicação entre nós (por exemplo, eth1 ou uma interface agregada). Substitua PDSH_RCMD_TYPE se seu cluster exigir um método de execução remota diferente de SSH.