Pular para o conteúdo principal

DeepSeek mHC explicado: Dimensionando LLMs além dos FLOPs

Dá uma olhada na arquitetura mHC do DeepSeek. Descubra como as hiperconexões com restrições múltiplas resolvem a instabilidade do treinamento e otimizam a largura de banda da memória para dimensionar LLMs.
Atualizado 26 de jan. de 2026  · 9 min lido

mHC (Hiperconexões com restrições múltiplas) resolve um problema que a maioria das equipes enfrenta ao escalar LLMs: você pode continuar adicionando GPUs, mas, em algum momento, o treinamento fica instável e o rendimento para de melhorar.

Aqui está a ideia principal:

  • Em grande escala, os limites reais geralmente são a largura de banda da memória, a comunicação entre GPUs e a sobrecarga de latência.
  • As hiperconexões (HC) tentam melhorar a capacidade do modelo, deixando as informações fluírem por caminhos residuais mais ricos, sem aumentar muito os FLOPs por camada. Mas essa mistura extra pode quebrar o “atalho de identidade” que tornava as redes residuais estáveis em primeiro lugar, fazendo com que o treinamento fosse por água abaixo.
  • O mHC resolve isso limitando como esses caminhos residuais se misturam. A mistura residual é forçada a se comportar como uma média ponderada bem comportada (uma matriz duplamente estocástica, aplicada usando Sinkhorn–Knopp), o que evita que os sinais e gradientes explodam ou desapareçam.

As hiperconexões melhoram a conectividade e a capacidade, mas as hiperconexões com restrições múltiplas (mHCs) tornam essa atualização estável e escalável, sem ignorar os verdadeiros gargalos, como largura de banda de memória e comunicação.

Se você quiser saber mais sobre alguns dos princípios abordados neste tutorial, recomendo dar uma olhada no curso Modelos Transformadores com PyTorch e o curso Deep Learning com PyTorch.

O que é mHC? De conexões residuais a hiperconexões

Nesta seção, vou explicar a necessidade de ir além das conexões residuais simples, como o HC tentou resolver isso e por que o mHC é a solução que faz a ideia funcionar em escala LLM.

Figura 1: Ilustrações de paradigmas de conexão residual (artigo sobre mHC)

As conexões residuais (Figura a) fornecem a cada camada um atalho de identidade, permitindo que sinais e gradientes fluam de forma limpa através de redes muito profundas. 

O DeepSeek usou explicitamente esse princípio de mapeamento de identidade como ponto de partida para o artigo sobre mHC. A desvantagem é que um caminho residual simples também é muito restritivo, então não permite muita troca de informações dentro do fluxo residual. 

Enquanto as Hiperconexões (HC) (Figura b) eram o próximo passo natural, que em vez de um fluxo residual, se expande em n fluxos paralelos e adiciona mapeamentos pré/pós/residuais aprendíveis para que os fluxos possam se misturar e compartilhar informações. Isso aumenta a expressividade sem necessariamente explodir os FLOPs por camada. 

Mas, em grande escala, o HC enfrenta dois grandes problemas. Primeiro, como os fluxos se misturam livremente em cada camada, essas pequenas misturas se acumulam à medida que você vai se aprofundando. Em várias camadas, a rede pode parar de funcionar como uma “conexão direta” limpa, e os sinais ou gradientes podem explodir ou desaparecer, deixando o treinamento instável. Segundo, mesmo que os cálculos extras sejam simples, o custo do hardware aumenta rapidamente.

As hiperconexões com restrições múltiplas (mHC) (Figura c) mantêm a conectividade extra das HC, mas tornam seguro treinar como uma ResNet

A ideia principal é que, em vez de deixar os fluxos residuais se misturarem de qualquer maneira, o mHC faz com que a mistura siga regras bem rígidas. No artigo, isso é feito transformando a matriz de mistura em uma “média ponderada” bem comportada, usando um procedimento chamado Sinkhorn–Knopp. O resultado é que, mesmo depois de muitas camadas, a mistura continua estável, e os sinais e gradientes não explodem nem desaparecem.

Resumindo, mudamos das conexões residuais para o mHC porque queríamos um fluxo de informações mais rico, em vez de um único caminho de salto.

Conceitos-chave do mHC

Em um nível mais alto, o mHC mantém a mistura multistream do Hyper-Connection, mas coloca proteções rígidas na mistura para que ela funcione como um caminho de salto estável, no estilo ResNet, mesmo quando empilhamos centenas de camadas. 

Os autores limitam a matriz de mistura residual Hlres​ para que ela se comporte bem em toda a profundidade, ao mesmo tempo que permite que os fluxos troquem informações.

Na prática, o mHC faz com que Hlres​​ seja duplamente estocástico, ou seja, todas as entradas são não negativas e cada linha e cada coluna somam 1. Isso faz com que o fluxo residual funcione como uma média ponderada controlada. 

Isso mostra que o mapeamento não é expansivo (norma espectral limitada por 1), fica estável quando multiplicado entre camadas (fechamento sob multiplicação) e tem uma mistura intuitiva como interpretação de mistura de média/permutação através do politopo de Birkhoff. Isso também faz com que os mapeamentos pré/pós sejam não negativos para evitar o cancelamento do sinal. 

Figura 2: Estabilidade de propagação de hiperconexões com restrições múltiplas (artigo mHC)

Em termos de implementação, o artigo mantém a praticidade calculando mapeamentos brutos sem restrições Hlpre, Hlpost e Hlres a partir do estado multistream da camada atual (eles achatam xl para preservar o contexto completo) e, em seguida, projetam-nos nas formas restritas. Hlpre e Hlpost​​ são obtidos com uma restrição baseada em sigmoide, enquanto ​Hlres é projetado usando a exponenciação de Sinkhorn-Knopp para tornar as entradas positivas e, em seguida, alternar as normalizações de linha/coluna até que as somas sejam 1.

Os autores também relatam a implementação do mHC (com n=4) em escala com apenas ~6,7% de sobrecarga de tempo de treinamento, principalmente por meio da redução agressiva do tráfego de memória. Eles reorganizaram as partes do RMSNorm para aumentar a eficiência, usaram fusão de kernel (incluindo a implementação de iterações Sinkhorn dentro de um único kernel com um backward personalizado), fundiram a aplicação de Hlpost​​ e Hlres com fusão residual para reduzir leituras/gravações, usaram recálculo seletivo para evitar o armazenamento de grandes ativações intermediárias e comunicação sobreposta em uma programação DualPipe estendida para ocultar a latência do estágio do pipeline.

Otimizando o mHC: Técnicas de Sistemas 

A estabilidade por si só não é suficiente. Se o mHC adicionar muito tráfego de memória ou comunicação entre GPUs, a gente perde em termos de rendimento. Então, os autores juntaram o método mHC com um conjunto de otimizações de infraestrutura feitas pra não sobrecarregar a memória.

Figura 3: Sobreposição de comunicação-computação para mHC (artigo sobre mHC)

Fusão do kernel para reduzir leituras/gravações na memória

Os autores aceleram o mHC juntando várias etapas em um único kernel da GPU. Em vez de aplicar Hlpost​, Hlres e, em seguida, mesclar de volta ao fluxo residual como passagens separadas (o que força a GPU a gravar tensores intermediários na memória e lê-los de volta), eles fazem essas operações em uma única passagem. 

Isso reduz bastante o tráfego de memória. Agora, o kernel lê valores de (n+1)C em vez de (3n+1)C e grava valores de nC em vez de 3nC. Aqui, C é o tamanho oculto (características por fluxo) e n é o número de fluxos residuais, então nC é o tamanho do estado residual ampliado. Menos leituras/gravações significam menos dados indo e vindo da memória. 

O artigo também sugere implementar a maioria dos kernels usando TileLang para aproveitar melhor a largura de banda da memória. 

Recálculo para controlar a memória de ativação

O mHC multistream aumenta a quantidade de ativações intermediárias que você normalmente teria que armazenar para o backprop, o que pode esgotar a memória da GPU e forçar lotes menores ou checkpoints mais agressivos. 

Para evitar isso, o artigo sugere um truque simples: não armazene os intermediários mHC após a passagem direta. Em vez disso, recalcule os kernels mHC leves durante a passagem para trás, pulando o recálculo da camada Transformer F, que é cara. 

Isso reduz a pressão sobre a memória e ajuda a manter um rendimento efetivo mais alto. Uma limitação prática é que esses blocos de recálculo devem se alinhar com os limites das etapas do pipeline; caso contrário, o agendamento do pipeline fica confuso.

Agendamento com reconhecimento de comunicação com sobreposição DualPipe

Em grande escala, o paralelismo do pipeline é comum, mas o design n-stream do mHC aumenta a quantidade de dados que precisam passar por várias etapas, o que pode causar atrasos perceptíveis na comunicação. 

O DeepSeek otimiza isso estendendo o DualPipe para que a comunicação e a computação se sobreponham nos limites do pipeline. Isso quer dizer que as GPUs fazem um trabalho útil enquanto as transferências rolam, em vez de ficarem paradas esperando o envio/recebimento terminar. Eles também rodam alguns kernels em um fluxo de computação de alta prioridade, para que a computação não bloqueie o progresso da comunicação. O resultado é que o custo extra de comunicação do mHC fica meio escondido, melhorando a eficiência do treinamento de ponta a ponta.

Pontos de interesse 

Mesmo que não implementemos o mHC, a estrutura do DeepSeek é uma boa maneira de identificar onde o sistema está realmente perdendo tempo.

  • Cargas de trabalho de contexto longo: Prompts longos tornam o preenchimento prévio caro, porque a atenção precisa mover muitos dados pela memória. Durante a decodificação, o cache KV continua a crescer, o que aumenta as leituras de memória por token. Juntos, eles aumentam os limites da largura de banda da memória e muitas vezes causam fragmentação ou processamento em lote ineficiente.
  • Roteamento MoE e paralelismo especializado: Com o Mixture of Experts (MoE), o custo não é só sobre computação. É o roteamento, a troca de tokens e a comunicação entre GPUs necessárias para enviar tokens aos especialistas e reunir os resultados. A sobreposição DualPipe do DeepSeek foca em esconder a comunicação do pipeline por trás da computação, que o MoE precisa em grande escala.
  • Tráfego multi-tenant e em pequenos lotes: Em implementações reais, as solicitações não chegam em grandes lotes organizados. A gente acaba com lotes menores e inconsistentes, comprimentos de sequência misturados e reutilização de cache mais fraca. Isso prejudica a eficiência do processamento em lote e aumenta a latência da cauda, de modo que a largura de banda da memória e o agendamento se tornam o gargalo.

Cache KV e tráfego de memória

Mesmo que o mHC seja principalmente uma ideia de treinamento, a lição principal do artigo se aplica diretamente à inferência. O artigo foca em otimizar não só os FLOPs, mas também o tráfego de memória, a comunicação e a latência. A maior prova é a decodificação de contexto longo, onde a estimativa aproximada do cache KV é:

KV_bytes ≈  2 x L x T x H x bytes_per_elem x batch

Para FP16/BF16, o valor de bytes_per_elem é 2. Por exemplo, com um formato típico (L=32, H=4096, batch=1), 8K tokens equivalem a ~4 GB de KV, enquanto 128K tokens equivalem a ~64 GB, então mesmo que a computação continue razoável, a memória ainda pode explodir e você fica limitado pela largura de banda. 

É por isso que as otimizações práticas de inferência se concentram em reduzir o movimento da memória usando técnicas como quantização de cache KV, KV paginado e evicção, kernels de atenção eficientes (família FlashAttention), agrupamento contínuo e bucketing de forma, e paralelismo sensível à comunicação. 

O objetivo é manter os ganhos de desempenho sem pagar um imposto oculto em leituras/gravações de memória e sincronização.

Tabela 1: Comparação dos custos de acesso à memória por token (artigo sobre mHC)

A DeepSeek relata que o mHC tem um desempenho consistentemente superior à linha de base e supera o HC na maioria dos benchmarks para modelos 27B, incluindo +2,1% no BBH e +2,3% no DROP em comparação com o HC. Isso mostra que o mHC traz resultados melhores em grande escala.

Conclusão

A principal lição deste artigo é que escalar LLMs não é só um problema de FLOPs; é também um problema de estabilidade e sistemas. As hiperconexões (HC) aumentam a capacidade do modelo ao expandir o fluxo residual e permitir que vários fluxos se misturem, mas em grandes profundidades, essa mistura se transforma em um mapeamento composto que pode se desviar significativamente de um caminho de identidade, levando à explosão ou desaparecimento do sinal/gradiente e a falhas no treinamento.

O mHC resolve isso colocando barreiras nessa mistura, limitando a matriz de mistura residual para ser duplamente estocástica (não negativa, soma das linhas/colunas igual a 1), aplicada via Sinkhorn–Knopp, de modo que o caminho residual se comporta como uma média ponderada controlada e permanece estável mesmo quando você empilha muitas camadas.

O DeepSeek também considera a eficiência de tempo de execução como parte do método. Eles usaram fusão de kernel para reduzir as leituras/gravações de memória de alta largura de banda e recálculo seletivo para minimizar a memória de ativação. 

Além disso, eles ampliaram o DualPipe para sobrepor a comunicação com a computação, garantindo que as paralisações do pipeline não apaguem os ganhos. O resultado não é só um treinamento mais estável, mas também um desempenho melhor a jusante em escala.

Se você quiser saber mais sobre desenvolvimento de aplicativos LLM, recomendo dar uma olhada no curso curso Desenvolvimento de Aplicativos LLM com LangChain.

Perguntas frequentes sobre o DeepSeek mHC

Qual é a diferença entre o mHC e as Hyper-Connections (HC) padrão?

As hiperconexões padrão deixam os fluxos residuais se misturarem livremente, o que muitas vezes faz com que os sinais explodam ou desapareçam ao passar por várias camadas (instabilidade). O mHC adiciona uma “barreira de proteção” matemática (usando Sinkhorn-Knopp) que faz com que essa mistura se comporte como uma média ponderada estável, restaurando a segurança do “atalho de identidade” das ResNets padrão.

O mHC aumenta a latência de inferência?

Tecnicamente, sim, porque usa vários fluxos residuais (n fluxos) em vez de um, o que aumenta o tráfego de memória. Mas o DeepSeek dá um jeito nisso usando a fusão de kernel (juntando várias operações em uma única passagem pela GPU), o que faz com que a perda de latência real seja bem pequena comparada com o aumento de desempenho.

O que o algoritmo Sinkhorn-Knopp faz nesse contexto?

É um método de normalização que funciona por tentativa e erro. No mHC, ele pega a matriz de mistura aprendida e normaliza repetidamente as linhas e colunas até que todas somem 1 (tornando-a uma matriz “duplamente estocástica”). Isso garante que o sinal não cresça descontroladamente à medida que se propaga pela rede.

Posso aplicar o mHC a outros modelos Transformer (como Llama ou GPT)?

Sim. O mHC é um bloco arquitetônico geral, não um modelo completo. Você pode trocar as conexões residuais padrão em quase qualquer arquitetura baseada em Transformer por blocos mHC para melhorar a estabilidade e a convergência do treinamento, especialmente para modelos muito profundos.


Aashi Dutt's photo
Author
Aashi Dutt
LinkedIn
Twitter

Sou Especialista Google Developers em ML (Gen AI), tricampeã no Kaggle e Embaixadora Women Techmakers, com mais de três anos de experiência na área de tecnologia. Cofundei uma startup de saúde em 2020 e atualmente faço um mestrado em ciência da computação na Georgia Tech, com foco em aprendizado de máquina.

Tópicos

Cursos mais populares do DataCamp

Curso

Aprendizagem profunda intermediária com PyTorch

4 h
23.2K
Conheça as principais arquiteturas de aprendizagem profunda, como CNNs, RNNs, LSTMs e GRUs, para modelar imagens e dados sequenciais.
Ver detalhesRight Arrow
Iniciar curso
Ver maisRight Arrow
Relacionado

blog

Entendendo e atenuando o viés em modelos de idiomas grandes (LLMs)

Mergulhe em um passo a passo abrangente sobre a compreensão do preconceito nos LLMs, o impacto que ele causa e como atenuá-lo para garantir a confiança e a justiça.
Nisha Arya Ahmed's photo

Nisha Arya Ahmed

12 min

Tutorial

Guia para iniciantes do LlaMA-Factory WebUI: Ajuste fino dos LLMs

Saiba como fazer o ajuste fino dos LLMs em conjuntos de dados personalizados, avaliar o desempenho e exportar e servir modelos com facilidade usando a estrutura com pouco ou nenhum código do LLaMA-Factory.
Abid Ali Awan's photo

Abid Ali Awan

Tutorial

Guia de Introdução ao Ajuste Fino de LLMs

O ajuste fino dos grandes modelos de linguagem (LLMs, Large Language Models) revolucionou o processamento de linguagem natural (PLN), oferecendo recursos sem precedentes em tarefas como tradução de idiomas, análise de sentimentos e geração de textos. Essa abordagem transformadora aproveita modelos pré-treinados como o GPT-2, aprimorando seu desempenho em domínios específicos pelo processo de ajuste fino.
Josep Ferrer's photo

Josep Ferrer

Tutorial

DeepSeek-Coder-V2 Tutorial: Exemplos, instalação, padrões de referência

O DeepSeek-Coder-V2 é um modelo de linguagem de código de código aberto que rivaliza com o desempenho do GPT-4, Gemini 1.5 Pro, Claude 3 Opus, Llama 3 70B ou Codestral.
Dimitri Didmanidze's photo

Dimitri Didmanidze

Tutorial

Perceptrons multicamadas em aprendizado de máquina: Um guia abrangente

Mergulhe nos Perceptrons de múltiplas camadas. Desvende os segredos dos MLPs no aprendizado de máquina para reconhecimento avançado de padrões, classificação e previsão.
Sejal Jaiswal's photo

Sejal Jaiswal

Tutorial

Como criar aplicativos LLM com o tutorial LangChain

Explore o potencial inexplorado dos modelos de linguagem grandes com o LangChain, uma estrutura Python de código aberto para criar aplicativos avançados de IA.
Moez Ali's photo

Moez Ali

Ver maisVer mais