A inferência distribuída multinó do EAS permite implantar modelos MoE grandes, como o DeepSeek 671B, que excedem a capacidade de um único dispositivo.
Pré-requisitos
As imagens oficiais do SGLang e vLLM no EAS ou no Model Gallery oferecem suporte nativo à inferência distribuída. Para usar uma imagem personalizada, verifique se ela atende aos requisitos de rede do framework de inferência distribuída e segue os padrões convencionais de processamento distribuído. Para obter detalhes, consulte Como funciona.
Como funciona
Principais conceitos e princípios de implementação da inferência distribuída:
Unidade de instância
A inferência distribuída introduz unidades de instância (chamadas de Unit neste tópico). As instâncias dentro de uma Unit utilizam comunicação de rede de alto desempenho e estratégias de paralelismo, como paralelismo de tensores (TP) e paralelismo de pipeline (PP), para processar cada solicitação. As instâncias em uma Unit são stateful. Já as Units são totalmente simétricas e stateless entre si.
ID da instância
Cada instância em uma Unit recebe um ID sequencial por meio de uma variável de ambiente. Para consultar a lista de variáveis de ambiente, veja Apêndice. Use esses IDs para atribuir tarefas diferentes às instâncias.
Tratamento de tráfego
Por padrão, cada Unit lida com o tráfego apenas pela instância 0 (RANK_ID = 0). O sistema roteia o tráfego do usuário para a instância 0 de cada Unit usando descoberta de serviço. Cada Unit processa solicitações de maneira distribuída e gerencia o tráfego independentemente.
Atualizações contínuas
Durante uma atualização contínua, a Unit é reconstruída como um todo. Todas as instâncias na nova Unit iniciam em paralelo. Após todas as novas instâncias estarem prontas, o sistema remove o tráfego da Unit antiga e exclui suas instâncias.
Ciclo de vida
Reconstrução da Unit
Quando uma Unit é recriada, todas as instâncias da Unit antiga são excluídas em paralelo e todas as instâncias da nova Unit são criadas em paralelo. Não ocorre nenhum tratamento especial com base no ID da instância.
Recriação de instância
Por padrão, cada instância em uma Unit compartilha o ciclo de vida da instância 0. Quando a instância 0 é recriada, todas as outras instâncias da Unit também são recriadas. Se uma instância diferente de zero for recriada, as demais permanecem inalteradas.
Tolerância a falhas distribuída
-
Tratamento de falha de instância
Ao detectar uma falha em qualquer instância de um serviço distribuído, o sistema reinicia automaticamente todas as instâncias da Unit.
Essa medida evita inconsistências no estado do cluster causadas por falhas de ponto único e garante que todas as instâncias iniciem com um ambiente limpo e consistente.
-
Recuperação coordenada
Após a reinicialização das instâncias, o sistema aguarda até que todas as instâncias da Unit atinjam um estado pronto consistente, utilizando uma barreira de sincronização. Os processos de negócio iniciam somente depois que todas as instâncias estiverem prontas.
-
Isso atende às seguintes finalidades:
Evita falhas no grupo de comunicação NCCL causadas por estados inconsistentes das instâncias.
Garante uma sincronização rigorosa de inicialização em todos os nós de uma tarefa de inferência distribuída.
A tolerância a falhas distribuída vem desativada por padrão. Para ativá-la, defina o parâmetro unit.guard conforme mostrado no exemplo a seguir:
{
"unit": {
"size": 2,
"guard": true
}
}
Procedimento
Implantar usando o Model Gallery
Recomenda-se o uso do Model Gallery para implantação distribuída multinó.
A inferência distribuída tem suporte apenas quando o mecanismo de inferência é SGLang ou vLLM.
Selecione recursos de implantação compatíveis com o modelo escolhido.
No cartão do modelo, clique em Deploy. Em seguida, clique no ícone de edição ao lado do modelo de implantação. Na caixa de diálogo aberta, selecione Distributed.
Implantar usando uma imagem personalizada
-
Faça login no PAI console. Selecione uma região na parte superior da página. Depois, selecione o workspace desejado e clique em Elastic Algorithm Service (EAS).
Criar um serviço: Na aba Inference Service, clique em Deploy Service. Selecione Custom Model Deployment> Custom Deployment.
Atualizar um serviço: Na aba Inference Service, localize o serviço alvo na lista de serviços. Na coluna Actions, clique em Update.
-
No formulário de configuração de parâmetros, defina os seguintes parâmetros. Para mais detalhes, consulte Implantação personalizada.
-
Na seção Environment Information, configure a imagem de runtime e o comando de início:
Image Configuration: Na lista Alibaba Cloud Image, selecione uma imagem vllm ou sglang.
Command: Após selecionar uma imagem, o sistema define o comando de início automaticamente. Não o modifique.
-
Na área Features, ative a chave Distributed Inference e configure os seguintes parâmetros principais:
Parâmetro
Descrição
Number of Machines for Single-Replica Deployment
Número de máquinas para uma única instância de inferência de modelo. O valor mínimo é 2.
RDMA Network
Ative o RDMA para garantir conexões de rede de alta velocidade entre as máquinas.
NotaO RDMA está disponível apenas para serviços implantados em recursos Lingjun.
-
Após configurar os parâmetros, clique em Deploy ou Update.
Apêndice
Ao implantar um serviço de inferência distribuída, configure a rede para frameworks como Torch Distributed ou Ray. Se você ativar VPC ou RDMA, cada instância terá múltiplas NICs. Especifique qual NIC usar para comunicação entre instâncias.
RDMA ativado: Usa a NIC RDMA (net0) por padrão.
RDMA desativado: Usa a NIC VPC (eth1) configurada pelo usuário.
Passe essas configurações como variáveis de ambiente no seu comando de início:
|
Nome da Variável de Ambiente |
Descrição |
Valor de Exemplo |
|
RANK_ID |
ID da instância, começando em 0 e incrementando de 1 em 1. |
0 |
|
COMM_IFNAME |
NIC para comunicação entre instâncias:
|
net0 |
|
RANK_IP |
Endereço IP para comunicação entre instâncias, correspondente à NIC especificada por COMM_IFNAME. |
11...* |
|
MASTER_ADDRESS |
Endereço IP da instância 0 (RANK_ID = 0), correspondente à NIC especificada por COMM_IFNAME para a instância 0. |
11...* |