Deepseek-R1: Explicado de Forma Simples
Chang Gillingham bu sayfayı düzenledi 11 saat önce


Uma das disciplinas que leciono na Pontifícia Universidade Católica do Paraná, Construção de Interpretadores engloba o processamento de linguagens formais a naturais. Dado o terremoto provocado pela DeepSeek com o seu modelo DeepSeek-R1, fiquei curioso e resolvi fazer um apanhado artigos para que as vozes na minha cabeça se acalmem um pouco. Curiosidade mata gato mas excita o pesquisador. Esse é o resultado deste esforço.

A primeira coisa importante a notar é que o DeepSeek-R1 está sob a licença MIT, e que pode ser encontrado no Hugging Face. Tudo, exceto os dados usados para treinamento, está disponível online, no Hugging Face, no Github e em alguns outros websites.

A grande questão é: porque não os dados de treinamento? A resposta mais óbvia é: porque aqui está o problema. Mas isso fica para outra discussão1.

O R1 chamou a atenção por empatar, ou bater os modelos antigos e tradicionais.

Comparação entre os resultados de diversos modelos

Achei o máximo escrever modelos antigos e tradicionais para uma tecnologia de 4 anos, no máximo.

O R1 quase derrubou a web por, supostamente, ter sido criado com um custo 20 vezes menor.

O que realmente me interessa, já que não tenho acesso aos dados, neste modelo é o uso de Reinforcement Learning por eles que foi descaradamente explicitado em vários artigos abertos. Me interessa porque eu tenho falado para os meus alunos que o próximo salto evolutivo da humanidade será devido a Support Learning. Então, talvez, só talvez, a DeepSeek não me deixe mentir sozinho.

Uma das inovações do DeepSeek-R1 é a adoção da Group Robust Preference Optimization (GRPO), introduzida no artigo DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models sobre o trabalho de Schulman et.al de 2017 Group Robust Preference Optimization in Reward-free RLHF. Essa técnica substitui métodos tradicionais de otimização de políticas, como o Proximal Policy Optimization (PPO), apresentado por Schulman et al. em Proximal Policy Optimization Algorithms. Simplificando, a GRPO permite que o modelo aprenda de forma mais eficaz comparando seu desempenho com o de outros modelos em um grupo, otimizando suas ações para alcançar melhores resultados em tarefas de raciocínio matemático. Essa abordagem torna o processo de treinamento mais eficiente e escalável se comparado com o PPO.

Além da GRPO, o DeepSeek-R1 incorpora a Multi-head Latent Attention (MLA), uma técnica introduzida no DeepSeek-V3, que, por sua vez, foi inspirada no trabalho de Kitaev, photorum.eclat-mauve.fr Kaiser e Levskaya em Reformer: The Efficient Transformer. A MLA aborda as ineficiências computacionais e de memória associadas ao processamento de sequências longas, especialmente em modelos de linguagem com atenção multi-cabeça. Em termos simples podemos dizer que a MLA melhora a eficiência do modelo ao simplificar a maneira como ele processa as informações. Ela projeta as matrizes Key-Query-Value (KQV) em um espaço latente de menor dimensão, reduzindo a complexidade computacional e melhorando a eficiência do modelo.

Neste momento você tem duas escolhas claras: sentar em um lugar mais confortável já que vai demorar, ou ir fazer scroll no instagram.

Fundamentos da Arquitetura

A sopa de letrinhas que precisa ser consumida, morna e vagarosamente, para entender como o DeepSeek-R1 funciona, ainda precisa de algum tempero.

Algumas das mudanças realizadas pela equipe de DeepSeek, liderada por Luo Fuli um prodígio com cara de atriz de dorama, incluem Mixture of Experts (MoE), Multi-head Latent Attention (MLA), Quantização FP8 e Multi-Token Prediction (MTP). A saber:

Mixture of Experts (MoE)

O mecanismo Mixture of Experts (MoE) ativa apenas um subconjunto dos parâmetros totais dentro de cada bloco Transformer, permitindo economias computacionais substanciais enquanto preserva a qualidade do modelo. Esta ativação seletiva é particularmente vantajosa para escalar os parâmetros do modelo sem aumentar proporcionalmente os custos computacionais.

A função gate de seleção de especialistas é governada por uma função de porta $G( x)$ que direciona tokens $x$ para especialistas $E_k$, definida como:

Cada token é então processado pelos especialistas selecionados, agregados como:

Uma perda de balanceamento de carga é adicionada para encorajar utilização igual dos especialistas, reduzindo gargalos computacionais.

Vamos ver um exemplo simplificado de como o MoE funciona na prática. Imagine que temos:

- 3 especialistas ($ E_1$, $E_2$, $E_3$).

  • Um token de entrada $x$ representando a palavra "computador"

    Primeiro, o token passa pela função gate $G( x)$, que calcula um rating para cada especialista. Vamos dizer que após a transformação $W_gx$ e aplicação do softmax, obtemos:

    Isto significa que:

    - Especialista 1 ($ E_1$): 70% de ativação.
  • Especialista 2 ($ E_2$): 20% de ativação.
  • Especialista 3 ($ E_3$): 10% de ativação

    Agora, suponha que cada especialista processe o token e produza um vetor de características:

    A saída final será a soma ponderada desses vetores, usando os pesos da função gate:

    Agora, imagine que após processar vários tokens, notamos que o Especialista 1 está sendo usado 80% do tempo. Aqui é onde a perda de balanceamento entra em ação:

    Para $K = 3$ especialistas, a frequência ideal é $ frac 1 K = frac 1 3 approx 0.33$

    Calculando a perda de balanceamento para este caso (com $ alpha = 1$):

    Este valor alto de $L _ balance $ indica um desequilíbrio significativo na utilização dos especialistas, e o modelo será penalizado por isso durante o treinamento, incentivando-o a desenvolver uma distribuição mais equilibrada nas próximas iterações.

    O MoE funciona essencialmente como um sistema de distribuição de tráfego inteligente, onde o "roteador" (chamado de função de gate ou porta) choose qual especialista ou combinação de especialistas deve processar cada token de entrada. Este roteamento é feito de forma dinâmica e aprendida, não através de regras fixas.

    Para entender melhor, podemos fazer uma analogia com um health center: Imagine um grande health center com vários médicos especialistas. Quando um paciente chega, comparable a um token de entrada, um enfermeiro de triagem muito experiente, a função de gate, avalia rapidamente o caso e choose quais especialistas devem atender o paciente. Alguns casos podem precisar de apenas um especialista, enquanto outros podem requerer uma equipe de diferentes especialidades.

    No contexto do DeepSeek-R1, este roteamento é representado matematicamente pela função $G( x)$, que podemos entender como um direcionador que:

    1. Recebe um token de entrada $x$.
  • Avalia suas características através de uma transformação $W_gx$.
  • Usa uma função softmax para gerar probabilidades de encaminhamento para diferentes especialistas.
  • Direciona o token para os especialistas mais apropriados

    Finalmente temos a perda de balanceamento de carga. Um mecanismo que evita que alguns especialistas fiquem sobrecarregados enquanto outros ficam ociosos. Para entender este conceito, podemos voltar ao nosso hospital:

    Imagine que em um health center, alguns médicos especialistas começam a receber muito mais pacientes que outros. Por exemplo, um cardiologista está sempre ocupado, atendendo 80% dos pacientes, enquanto um neurologista mal recebe pacientes. Isso cria dois problemas: o cardiologista fica sobrecarregado, podendo causar atrasos e queda na qualidade do atendimento