Princípios de design do sistema
O objetivo de otimização do serviço de inferência DeepSeek-V3/R1 é:Maior taxa de transferência e menor latência.
Para otimizar esses dois objetivos, o DeepSeek emprega uma solução chamada EP (paralelismo especializado entre nós).
- Primeiro, o EP dimensiona significativamente o tamanho do lote, melhorando a eficiência do cálculo de matriz da GPU e aumentando a produtividade.
- Em segundo lugar, o EP reduz a latência ao distribuir especialistas em várias GPUs, com cada GPU processando apenas uma pequena fração dos especialistas (reduzindo os requisitos de acesso à memória).
No entanto, o EP aumenta a complexidade do sistema de duas maneiras principais:
- O EP introduz a comunicação entre nós. Para otimizar o rendimento, os fluxos de trabalho computacionais apropriados devem ser projetados para sobrepor a comunicação à computação.
- O EP envolve vários nós e, portanto, requer o próprio Paralelismo de Dados (DP) e o balanceamento de carga entre diferentes instâncias de DP.
Este artigo se concentra em DeepSeek Como enfrentar esses desafios:
- Use EP para aumentar o tamanho do lote.
- Ocultação de atrasos na comunicação por trás da computação e
- Realizar o balanceamento de carga.
Paralelismo especializado entre nós em grande escala (EP)
Devido ao grande número de especialistas no DeepSeek-V3/R1 (apenas 8 dos 256 especialistas por camada são ativados), a alta esparsidade do modelo exige um tamanho de lote total muito grande. Isso garante um tamanho de lote suficiente por especialista, resultando em maior rendimento e menor latência. O EP entre nós em grande escala é crucial.
Como o DeepSeek emprega uma arquitetura de separação entre pré-população e decodificação, diferentes níveis de paralelismo são usados nas fases de pré-população e decodificação:
- Fase de pré-população [Especialista em roteamento EP32, MLA/Perito compartilhado DP32]Cada unidade de implementação abrange 4 nós e tem 32 especialistas em roteamento redundantes, com cada GPU lidando com 9 especialistas em roteamento e 1 especialista compartilhado.
- Fase de decodificação [Especialista em Roteamento EP144, Especialista em MLA/Compartilhamento DP144]Cada unidade de implementação abrange 18 nós e tem 32 especialistas em roteamento redundantes, com cada GPU gerenciando 2 especialistas em roteamento e 1 especialista compartilhado.
sobreposição de computação e comunicações
O EP entre nós em grande escala introduz uma sobrecarga de comunicação significativa. Para atenuar isso, o DeepSeek emprega uma estratégia de sobreposição de lote duplo para ocultar o custo de comunicação e melhorar a taxa de transferência geral, dividindo um lote de solicitações em dois micro-lotes. Na fase de pré-população, esses dois micro-lotes são executados alternadamente, e o custo de comunicação de um micro-lote fica oculto por trás do cálculo do outro.
Cálculo da fase de pré-população - sobreposição de comunicação
Na fase de decodificação, o tempo de execução de diferentes estágios é desigual. Portanto, o DeepSeek subdivide a camada de atenção em duas etapas e usa um pipeline de 5 fases para obter uma sobreposição perfeita de computação e comunicação.
Sobreposição de comunicação computacional na fase de decodificação
Para obter mais detalhes sobre o mecanismo de sobreposição de computação e comunicação do DeepSeek, visite https://github.com/deepseek-ai/profile-data.
Obtenção de balanceamento de carga ideal
O paralelismo maciço (incluindo DP e EP) apresenta um desafio importante: se uma única GPU estiver sobrecarregada com computação ou comunicação, ela se tornará um gargalo de desempenho, diminuindo a velocidade de todo o sistema enquanto as outras GPUs estiverem ociosas. Para maximizar a utilização de recursos, o DeepSeek se esforça para equilibrar a carga de computação e comunicação em todas as GPUs.
1. balanceador de carga pré-preenchido
- Problema principal: o número diferente de solicitações e os comprimentos de sequência entre as instâncias de DP levam a um desequilíbrio na computação da atenção central e na carga de envio de agendamento.
- Metas de otimização:
- Equilibrar a computação de atenção central entre GPUs (balanceamento de carga da computação de atenção central).
- Equalização das entradas para cada GPU Token (agendamento de envio de balanceamento de carga) para evitar longos tempos de processamento em GPUs específicas.
2. decodificação de balanceadores de carga
- Problema principal: o número desigual de solicitações e os comprimentos de sequência entre as instâncias de DP levam a diferenças na computação da atenção central (relacionada ao uso do KVCache) e à carga de envio de agendamento.
- Metas de otimização:
- Equilibrar o uso do KVCache entre GPUs (balanceamento de carga do Core Attention Computing).
- Equilibrar o número de solicitações por GPU (agendamento de envio de balanceamento de carga).
3. balanceador de carga paralelo especializado
- Principal problema: para um determinado modelo de MoE, há uma carga inerentemente alta de especialistas, resultando em uma carga de trabalho de computação especializada desequilibrada entre diferentes GPUs.
- Metas de otimização:
- Equilibrar a computação especializada em cada GPU (ou seja, minimizar a carga máxima de recebimento de agendamento em todas as GPUs).
Diagrama esquemático do sistema de raciocínio on-line DeepSeek
Diagrama esquemático do sistema de raciocínio on-line DeepSeek
Estatísticas do serviço on-line do DeepSeek
Todos os serviços de inferência do DeepSeek-V3/R1 são fornecidos em GPUs H800 com precisão consistente com o treinamento. Especificamente, a multiplicação de matrizes e as transferências de agendamento estão no formato FP8 consistente com o treinamento, enquanto os cálculos do núcleo MLA e as transferências combinatórias usam o formato BF16 para garantir o desempenho ideal do serviço.
Além disso, devido à alta carga de serviço durante o dia e à baixa carga à noite, o DeepSeek implementou um mecanismo para implantar o serviço de inferência em todos os nós durante as horas de pico do dia. Durante as horas de baixa carga à noite, o DeepSeek reduz os nós de inferência e aloca recursos para pesquisa e treinamento. Nas últimas 24 horas (12:00 UTC+8 27 de fevereiro de 2025 a 12:00 UTC+8 28 de fevereiro de 2025), o pico de ocupação dos nós para os serviços de inferência V3 e R1 totalizou 278 nós, com uma ocupação média de 226,75 nós (cada um contendo 8 GPUs H800). Considerando um custo de aluguel de US$ 2 por hora para uma GPU H800, o custo diário total é de US$ 87.072.
H800 Número de nós de serviço de inferência
V3 e R1 durante o período estatístico de 24 horas (das 12h00 UTC+8 de 27 de fevereiro de 2025 às 12h00 UTC+8 de 28 de fevereiro de 2025):
- Token de entrada total: 608B, dos quais 342B Token (56.3%) atingiram o cache KV no disco.
- Token de saída total: 168 B. A velocidade média de saída é de 20-22 tokens por segundo, e o comprimento médio do kvcache de cada token de saída é de 4.989 tokens.
- Cada nó H800 fornece uma média de ~73,7k Token/s de taxa de transferência de entrada (incluindo acessos ao cache) durante o pré-populamento ou ~14,8k Token/s de taxa de transferência de saída durante a decodificação.
As estatísticas acima incluem todas as solicitações de usuários da Web, do aplicativo e da API. Se todos os tokens estiverem de acordo com o DeepSeek-R1 A receita diária total é de US$ 562.027 com uma margem de custo de 545% com base no faturamento de preços (*).
() Preço R1: US$ 0,14/M para Token de entrada (acerto no cache), US$ 0,55/M para Token de entrada (falha no cache), US$ 2,19/M para Token de saída.
No entanto, a receita real da DeepSeek é muito menor pelos seguintes motivos:
- O DeepSeek-V3 tem um preço bem abaixo do R1, o
- Apenas alguns dos serviços são cobrados (o acesso à Web e ao APP continua gratuito).
- Os descontos noturnos são aplicados automaticamente fora dos horários de pico.
Custos e receitas teóricas