Encontre soluções para problemas comuns durante o uso do DLC.
Consulte primeiro o Xiao PAI
O assistente de IA do PAI (Xiao PAI) oferece orientações detalhadas e instruções passo a passo para todos os produtos do PAI. Ele diagnostica instâncias do DSW, jobs do DLC e services do EAS, identifica automaticamente as causas de falhas e recomenda as próximas etapas.

P: Um job do DLC está na fila há muito tempo, mas o monitoramento de recursos mostra capacidade total suficiente. Como solucionar?
A página de monitoramento de recursos exibe a cota total do pool de recursos, mas o agendador aloca recursos com base na disponibilidade em nós individuais. Mesmo quando o cluster possui recursos totais suficientes, um job permanece na fila se nenhum nó isolado conseguir atender à combinação completa de recursos exigida pelo job (como CPU + GPU simultaneamente).
Verifique as causas comuns a seguir:
1. Fragmentação de recursos (mais comum)
Sintoma: Os recursos de GPU estão concentrados em poucos nós, mas outros jobs já consumiram a CPU ou a memória desses nós. Os recursos restantes não conseguem atender à combinação de CPU + GPU necessária para o job em fila.
Solução: Interrompa alguns jobs de menor prioridade para liberar recursos nos nós e reenvie o job desejado. Alternativamente, reduza a especificação de CPU solicitada pelo job para adequá-lo à disponibilidade fragmentada de recursos.
2. Especificação de recurso por nó solicitada é muito grande
Sintoma: A especificação de recursos que o job solicita por nó (como quantidade de núcleos de CPU ou memória) excede a capacidade real disponível em todos os nós do grupo de recursos.
Solução: Verifique a configuração real de cada nó no grupo de recursos. Tente reduzir a especificação de recursos por nó (por exemplo, menos núcleos de CPU) e verifique se o job é agendado.
3. Concorrência entre jobs e problemas de prioridade
Sintoma: Vários jobs competem pelo mesmo pool de recursos, e jobs de menor prioridade precisam aguardar a liberação de recursos por jobs de maior prioridade.
Solução: Configure adequadamente as prioridades dos jobs. Envie jobs não urgentes fora dos horários de pico.
4. Referência de códigos de erro
Se o job reportar
Resource queue timeout, lack of sufficient resources, verifique a contagem real de CPU/GPU disponível em cada nó do grupo de recursos, em vez de confiar apenas nos totais agregados.
P: O treinamento do modelo falha com "SupportsDistributedTraining false, please set InstanceCount=1"
Causa: O job de treinamento está configurado para usar múltiplas instâncias (quantidade de nós maior que 1), mas o modelo não suporta treinamento distribuído.
Solução: Defina a quantidade de nós como 1.
P: O treinamento do modelo falha com "failed to compose dlc job specs, resource limiting triggered, you are trying to use more GPU resources than the threshold"
Os jobs de treinamento têm um limite máximo de duas unidades de GPU executando simultaneamente. Se esse limiar for ultrapassado, o limite de recursos será acionado. Aguarde a conclusão dos jobs de treinamento em execução antes de iniciar novos ou envie um ticket para solicitar aumento de cota.
P: Um job sai com código de erro 137. O que fazer?
O código de erro 137 no Linux indica que o processo foi encerrado forçadamente por um sinal SIGKILL. A causa mais comum é o uso excessivo de memória, também conhecido como erro de Out of Memory (OOM).
Ao encontrar esse erro (por exemplo, "xxx exited with code 137"), verifique a utilização de memória exibida nos detalhes do worker do job. Com base nas conclusões, tente uma ou mais das ações abaixo:
Mude para um tipo de instância com mais memória.
Aumente a quantidade de workers.
Reduza a alocação de memória no seu código.
P: O que fazer quando o status de um job do DLC mostra "Failed" ou "Dequeued"?
A execução de jobs do DLC segue esta sequência de status:
|
Tipo de job |
Sequência de status |
|
|
Jobs com recursos de pagamento conforme o uso |
Usando recursos spot do Lingjun |
|
|
Usando recursos públicos do Lingjun ou de uso geral |
|
|
|
Jobs com recursos de assinatura |
|
|
-
Procedimento quando o status do job é "Preparing environment"
Se um job permanecer em Preparing environment por um período prolongado, a causa provável é o uso de um conjunto de dados CPFS sem VPC configurada no job de treinamento distribuído. Recrie o job com o conjunto de dados CPFS configurado, adicione uma VPC e garanta que a VPC selecionada corresponda à usada pelo CPFS. Para mais detalhes, consulte Create a training job.
-
Procedimento quando o status do job é "Failed"
Na página de detalhes do job, passe o mouse sobre o ícone
ao lado do status do job ou verifique o log de operações da instância para identificar a causa inicial da falha. Para mais detalhes, consulte View training job details.Se o job falhar imediatamente após a conclusão da fase de preparação do ambiente, os logs do usuário na página de detalhes do job podem estar vazios. Isso ocorre porque os logs ainda não foram sincronizados da máquina para o console do DLC.
Para solucionar o problema:
Na aba Logs, amplie o intervalo de tempo de coleta de logs e pesquise eventos de log usando o ID do job como palavra-chave.
Se você tiver configurado o envio de logs do Simple Log Service (SLS), pesquise no SLS o erro real usando o ID do job do DLC como palavra-chave.
Adicionar
sleep 10antes do comando de inicialização só ajuda se o próprio comando do job gerar saída stdout/stderr, pois isso dá tempo para a sincronização dos logs. Para comandos sem saída, comoexit 1, adicionarsleepnão gera logs para sincronização.
P: Posso alterar um job do DLC de recursos públicos para recursos dedicados?
Para trocar o tipo de recurso, crie um novo job. Na coluna Actions do job original, clique em Clone para criar um novo job que reutiliza a configuração original, evitando a necessidade de reinserir todos os parâmetros. Para detalhes de faturamento, consulte Billing for DLC.
P: Como configurar treinamento multi-nó e multi-GPU no DLC?
Para ativar o treinamento multi-nó e multi-GPU, adicione o seguinte comando de inicialização ao criar um job do DLC. Para detalhes completos de configuração, consulte Create a training job.
python -m torch.distributed.launch \ --nproc_per_node=2 \ --master_addr=${MASTER_ADDR} \ --master_port=${MASTER_PORT} \ --nnodes=${WORLD_SIZE} \ --node_rank=${RANK} \ train.py --epochs=100
P: Como baixar um modelo treinado do PAI-DLC para minha máquina local?
Ao enviar um job do DLC, anexe um conjunto de dados e configure o comando de inicialização para gravar a saída do treinamento no diretório do conjunto de dados montado. Nas configurações de Environment do job, adicione um conjunto de dados personalizado e defina o Mount path como /mnt/data/. Em seguida, no Launch command, execute cp -r ./output /mnt/data para copiar os arquivos do modelo para o diretório do conjunto de dados montado.
Após a conclusão do treinamento, os arquivos do modelo são salvos no diretório do conjunto de dados montado. Acesse o sistema de arquivos associado ao conjunto de dados para baixar os arquivos para sua máquina local.
Para saber como anexar um conjunto de dados ao enviar um job do DLC, consulte Create a training job.
Para saber como baixar arquivos de um sistema de arquivos OSS para sua máquina local, consulte Console quick start.
Para saber como baixar arquivos de um sistema de arquivos NAS para sua máquina local, consulte Mount a file system on a Function Compute function.
P: Como usar uma imagem docker no DLC?
-
Use uma imagem docker para criar um job do DLC: Envie a imagem docker para o Alibaba Cloud Container Registry (ACR) e adicione-a ao seu workspace do PAI como uma imagem personalizada. Depois, selecione essa imagem ao criar um job do DLC.
Para saber como enviar uma imagem docker para o ACR, consulte Push and pull images in a Personal Edition instance.
Para saber como adicionar uma imagem personalizada no PAI, consulte Custom images.
Instale e use o docker dentro de um contêiner do DLC: Os jobs do DLC são executados dentro de contêineres, portanto, a instalação ou execução do docker dentro de um contêiner do DLC não é suportada.
P: Alguns nós em um job do DLC terminam antecipadamente. Como liberar seus recursos para outros jobs?
Contexto:
Em um job distribuído do DLC com múltiplos workers, os workers podem terminar em momentos diferentes, por exemplo, devido a desbalanceamento de dados. Por padrão, os workers concluídos continuam ocupando seus nós alocados até que todo o job termine.
Solução: Configure o ReleaseResourcePolicy advanced parameter. Por padrão, os recursos são mantidos até que todo o job seja concluído. Defina este parâmetro como pod-exit para liberar os recursos de cada worker assim que ele terminar.
P: Um job do DLC falha com "OSError: [Errno 116] Stale file handle"
Contexto:
Vários workers encontram esse erro ao executar o torch.compile do PyTorch (compilação AOT). O erro ocorre quando um processo mantém um identificador de arquivo que se torna inválido porque o arquivo foi excluído ou movido no lado do servidor.
Causa raiz:
A compilação AOT do PyTorch armazena em cache grafos de computação otimizados no sistema de arquivos (padrão: /tmp, geralmente tmpfs local). Em ambientes de cluster, esse cache pode ser armazenado no CPFS (um sistema de arquivos distribuído montado via NFS). O NFS é sensível à exclusão de arquivos, e as condições a seguir disparam um identificador de arquivo obsoleto:
O PyTorch limpa automaticamente entradas antigas do cache ou outro processo exclui o diretório de cache.
O servidor NFS move, exclui ou altera permissões de um arquivo, mas o cliente ainda mantém o identificador antigo.
Os clientes NFS armazenam atributos de arquivo em cache por padrão, então podem não detectar alterações no lado do servidor.
Essas condições são mais prováveis em jobs com múltiplos workers: o CPFS é baseado em NFS e propenso a identificadores obsoletos sob acesso de alta concorrência, especialmente para arquivos de cache de curta duração. Workers concorrentes lendo, gravando ou limpando o cache simultaneamente podem causar condições de corrida.
Solução principal:
Force o cache a usar o tmpfs local definindo a variável de ambiente
TORCHINDUCTOR_CACHE_DIR=/dev/shm/torch_cache.
Soluções alternativas:
Use o Redis como backend de cache compartilhado seguindo a documentação oficial do PyTorch (requer um service Redis).
Ajuste as opções de montagem NFS para o CPFS (a opção
noacpode reduzir a ocorrência de identificadores obsoletos, mas pode afetar o desempenho).Desative o cache definindo
TORCHINDUCTOR_CACHE_DIR="". Isso elimina o erro, mas também remove os benefícios de desempenho da compilação.
P: O acesso a /mnt/data falha com "Transport endpoint is not connected"
Contexto:
Após o início de um job do DLC, o acesso ao caminho do conjunto de dados montado (como /mnt/data) no comando de inicialização falha com: Transport endpoint is not connected. Esse erro indica que o ponto de montagem NFS foi desconectado.
Causas comuns:
Incompatibilidade de VPC do CPFS: Ao usar um conjunto de dados CPFS, a VPC do job de treinamento deve corresponder à VPC do sistema de arquivos CPFS. Uma incompatibilidade causa falha na montagem.
Conjunto de dados não pronto: Um conjunto de dados criado por meio do gerenciamento de ativos de IA ainda pode estar inicializando.
Caminho de montagem incorreto: O caminho de montagem configurado no job não corresponde ao ponto de montagem real do conjunto de dados.
Solução:
No AI asset management, confirme se o status do conjunto de dados é "Available".
Se estiver usando um conjunto de dados CPFS: ao criar o job de treinamento, garanta que a VPC configurada corresponda à VPC do sistema de arquivos CPFS. Para detalhes de configuração de VPC, consulte Create a training job.
Verifique o caminho de montagem: execute
ls -la /mnt/datano log do job para verificar se a montagem está acessível.Se estiver usando um conjunto de dados OSS: use storage mounting em vez da montagem de conjunto de dados para melhor compatibilidade.
P: Um job do DLC fica preso em "Preparing environment" com erro "Unable to attach or mount volumes"
Contexto:
Durante a inicialização, o job do DLC fica preso na fase de inicialização de rede ou preparação de ambiente. O log mostra o seguinte erro:
Unable to attach or mount volumes: unmounted volumes=[hostpath-volume], unattached volumes=[...]: timed out waiting for the condition
Causas comuns:
Espaço em disco insuficiente no nó: O disco local no nó de computação está cheio, impedindo a montagem do hostpath-volume.
Problemas no backend de armazenamento: O armazenamento NAS, CPFS ou OSS está passando por uma falha temporária ou tempo limite de conexão.
Contenção de recursos do nó: Vários jobs são agendados para o mesmo nó simultaneamente, fazendo com que as operações de montagem de volume atinjam o tempo limite enquanto aguardam na fila.
Solução:
Reenvie o job: Na maioria dos casos, trata-se de um problema transitório e o reenvio do job resolve a situação.
Verifique a conectividade de armazenamento: Confirme se o service NAS, CPFS ou OSS associado ao conjunto de dados está íntegro e se as configurações de VPC e grupo de segurança estão corretas.
Se o problema persistir, entre em contato com o suporte técnico da Alibaba Cloud e inclua o ID do job e o log completo de erros.