Enable javascript in your browser for better experience. Need to know to enable it? Go here.

Desmistificando o DeepSeek

Uma análise técnica aprofundada

Em 10 de janeiro de 2025, a DeepSeek lançou um LLM, o R1, que a startup afirmou ser comparável ao ChatGPT da OpenAI para tarefas de raciocínio. O aplicativo atingiu os primeiros lugares nas paradas da App Store em tempo recorde, capturando a imaginação não apenas da indústria de tecnologia, mas também do público em geral. Uma afirmação foi particularmente surpreendente: o modelo teria sido treinado por menos de US$ 6 milhões (em contraste com os US$ 100 milhões investidos pela OpenAI no GPT-4). Isso gerou repercussões no mercado de ações e na mídia.

 

Embora a tempestade midiática e financeira seja difícil de evitar, o que é mais interessante para nós na Thoughtworks é tentar entender o que a DeepSeek fez, exatamente, e como. Começaremos com os principais fatos e primeiras impressões e, em seguida, exploraremos o que sabemos até agora a partir dos documentos deles sobre a arquitetura do modelo, os dados de treinamento, a abordagem para avaliações e as técnicas utilizadas. Por fim, veremos as tentativas de reproduzir os resultados deles e o que vem a seguir.

 

Os novos modelos da DeepSeek: quais são os fatos?

 

Quem os construiu?

 

Fundada em maio de 2023, a DeepSeek é uma startup de IA chinesa com sede em Hangzhou e Pequim. A empresa é apoiada pelo fundo de hedge chinês High-Flyer, localizado em Hangzhou. Tanto a High-Flyer quanto a DeepSeek foram fundadas por Liang Wenfeng.

 

Em 10 de janeiro de 2025, a DeepSeek lançou seu aplicativo móvel; em 20 de janeiro de 2025, a empresa liberou os pesos do R1 no Huggingface e o código de inferência do R1 no GitHub.

 

O que a DeepSeek realmente construiu?

 

A DeepSeek construiu dois tipos de modelos e aplicativos para utilizá-los. As versões mais recentes desses dois tipos de modelos são V3 e R1. O V3, como o nome sugere, é a versão 3 de um modelo de linguagem de uso geral, enquanto o R1 é um modelo de raciocínio baseado no V3-Base. Eles também oferecem versões destiladas de seus modelos para que possam ser executados em laptops.

 

Existem duas variantes do V3. Uma é construída sobre o Llama (modelo de código aberto da Meta) e a outra sobre o Qwen (modelo de código aberto da Alibaba).

 

Embora tenham liberado os pesos do modelo R1 e o código para rodar o modelo em inferência, eles não divulgaram nenhum código de treinamento ou o código para todas as otimizações feitas mais próximas do hardware.

Nossas primeiras impressões ao usar DeepSeek

 

Algumas de nós na Thoughtworks utilizamos a DeepSeek através do site da empresa, enquanto outras usaram o Ollama para rodar um modelo destilado do R1 em seus laptops. Passamos algum tempo utilizando o modelo, assim como faríamos com outros modelos — para tarefas que vão desde programação até questões de raciocínio.

 

Com base em nossa experiência nos últimos dias, aqui estão algumas das nossas primeiras impressões e reflexões:

 

  • O desempenho multilíngue apresentou bons resultados em inglês e mandarim, mas foi menos fluido em francês, com caracteres chineses ou árabes indesejados aparecendo e, ocasionalmente, o modelo voltando para o inglês durante raciocínios complexos;

  • O estilo de raciocínio do modelo pode ser excessivamente prolixo — às vezes, ele ficava dando voltas quando o utilizávamos;

  • Gostaríamos de saber mais sobre como a DeepSeek está pensando sobre aspectos de segurança e privacidade — particularmente do ponto de vista da usuária;

  • Instâncias do modelo estão disponíveis em diversos tamanhos e podem ser instaladas em diferentes hardwares de consumo, incluindo modelos com economia de energia;

  • A versão hospedada parece ter limitações alinhadas com a visão de mundo do governo chinês. O próprio modelo pode refletir perspectivas consistentes com esse alinhamento;

  • Não temos visibilidade sobre os dados usados para treiná-lo (embora seja importante notar que o mesmo é válido para Llama, OpenAI, Claude). Isso deixa alguns governos e empresas preocupados.

Como você pode usar a DeepSeek?

 

Você pode testar o modelo no site ou no aplicativo móvel da DeepSeek. Alternativamente, pode usar o comando ollama run deepseek-r1:32b para rodar a versão destilada do modelo localmente. Para isso, será necessário baixar e instalar o Ollama.

 

Provedores de serviços em nuvem também entraram nessa. Você pode implantar os modelos da DeepSeek no GCP Vertex AI, AWS Bedrock e Azure AI Foundry. Também é possível implantá-lo como um NVIDIA NIM.

 

Os modelos da DeepSeek são certamente intrigantes o suficiente para serem considerados na adição à caixa de ferramentas da sua plataforma de IA, juntamente com outros modelos de código aberto, já que as desenvolvedoras de aplicações provavelmente irão experimentar ou usar diferentes modelos para diferentes finalidades.

 

Podemos confiar nos resultados de desempenho reportados pela DeepSeek?

 

Os resultados da DeepSeek ainda não foram reproduzidos. Estamos acompanhando de perto a tentativa do Huggingface de reproduzi-los no openR1

 

Também gostaríamos de entender se o modelo foi exposto aos dados de benchmark durante o treinamento, e se os métodos de avaliação utilizados no artigo são apropriados.

 

Dito isso, não temos nenhuma razão específica para acreditar que os resultados não são reais.

 

Uma questão que causou repercussão foi o uso de 2.788M de horas de GPU (aproximadamente US$ 5,576 milhões) para o treinamento (veja a primeira tabela deste artigo). O artigo do V3 deixa claras as suposições por trás deste valor, mas também oferece ressalvas, afirmando que ele representa apenas o último ciclo de treinamento. Dado o quanto a indústria tem se empolgado com a cobertura dessa família de modelos, suspeitamos que esse número tenha sido apresentado fora de contexto diversas vezes nessa cobertura.

Componentes técnicos da DeepSeek

 

O R1 foi treinado utilizando uma combinação de SFT (supervised fine-tuning) e RL (reinforcement learning) sobre o V3-Base. São transformadores altamente otimizados para frameworks específicos de hardware/software com base nas limitações impostas pelo ambiente (especificamente, os controles de exportação do governo dos EUA sobre os chips NVIDIA H100). A DeepSeek também utilizou uma combinação de técnicas novas e antigas de formas interessantes. Vamos começar analisando o V3-Base.

 

O V3-Base usa uma forte abordagem de mistura de especialistas (mixture-of-experts). Isso é semelhante ao Mixtral, mas mais eficiente. O V3-Base é treinado com 671 bilhões de parâmetros, enquanto o Llama tem uma versão de 405 bilhões. Tanto o V3-Base quanto o Llama 3.1 405B utilizam quantização FP8. O V3-Base foi treinado com 14,8 trilhões de tokens, enquanto o Llama foi treinado com 15 trilhões. Ambos suportam uma janela de contexto de 128K.

 

A principal diferença é que o artigo do V3 menciona que eles usaram apenas 2,788 milhões de horas de GPU, enquanto a página do Llama 3.1 405B FP8 no Hugging Face diz que usaram 39,3 milhões de horas de GPU cumulativas. Aqui está a nuance: pelo que entendemos, as 2,788 milhões de horas de GPU usadas para treinar o V3 foram apenas para o último ciclo completo de treinamento, enquanto o número reportado para o Llama é um número cumulativo. Os detalhes de como interpretar exatamente as palavras surgirão eventualmente, mas por enquanto, ainda não temos clareza sobre se existe uma comparação direta a ser feita aqui. Como exemplo, o V3 foi treinado com alguns dados gerados por um R1 ainda não lançado; os custos de treinamento calculados para o V3 devem incluir os custos de treinamento para o R1 nesse caso?

 

O R1 foi construído sobre o V3-Base utilizando fine-tuning supervisionado (SFT) e reinforcement learning (RL) para adicionar raciocínio ao modelo. O R1 utiliza o padrão de cadeia longa de pensamento (long chain-of-thought) para realizar o raciocínio. O R1 foi então destilado em modelos menores e mais densos. Assim como o V3-Base, a DeepSeek lançou versões baseadas no Llama e no Qwen. Eles também lançaram o R1-Zero, que não utiliza SFT e tem algumas limitações, como legibilidade e mistura de idiomas, embora apresente alguns comportamentos interessantes de raciocínio. Essas limitações significam que o R1-Zero é provavelmente mais interessante para pesquisadoras do que para usuárias. Para superar essas limitações, aplicaram treinamento em múltiplas etapas, bem como dados de início frio antes do RL.

 

O V3 foi então aprimorado utilizando dados criados pelos padrões de raciocínio, verificação e reflexão do R1 para melhorar ainda mais o V3-Base e criar um modelo mais completo, o V3.

 

Todos esses modelos foram treinados utilizando GPUs NVIDIA H800. Estes são versões dos chips H100 da NVIDIA feitas para o mercado chinês e, como mencionado anteriormente, têm limitações para cumprir com os controles de exportação dos EUA. Especificamente, os chips H800 possuem metade da velocidade de interconexão chip-a-chip dos H100 (cerca de 400GB/s contra 900GB/s no NVLink).

 

O custo para treinar o R1 é reportado como sendo US$ 5,58 milhões. Sabemos que eles estão errados, mas não está claro o quanto estão errados. O cálculo vem do relatório técnico do V3, que é o custo de treinamento do modelo base da DeepSeek. A CNN está correta ao afirmar que esse custo foi para o modelo base — no entanto, não ajudam a entender a diferença entre os dois.

 

O R1 foi treinado sobre o V3-Base, então o custo cumulativo de treinamento do R1 seria definitivamente maior do que o custo para treinar o modelo base. Os números na tabela 1 do Relatório Técnico do V3 parecem se referir a uma execução completa, provavelmente a última execução de treinamento. Se você tentasse replicar o processo de treinamento, provavelmente precisaria fazer mais de uma execução completa.

 

Há também relatos conflitantes de que a DeepSeek tem acesso a 50.000 A100s, o que está mais alinhado com o que a OpenAI supostamente usou para treinar o GPT-4 (25.000 A100s).


Se você alugasse 50.000 GPUs A100 nos EUA hoje, provavelmente pagaria cerca de US$ 1,35/hora por GPU (se encontrasse essa quantidade disponível). Isso daria cerca de US$ 11,34 milhões por semana. No caso da DeepSeek, parece que eles poderiam ter usado GPUs que seu investidor, o fundo de hedge High-Flyer, adquiriu anteriormente para fins de negociação de alta frequência.

Aprofundamento no que torna o DeepSeek distinto

 

Existem várias maneiras sofisticadas pelas quais a DeepSeek modificou a arquitetura do modelo, as técnicas de treinamento e os dados para extrair o máximo do hardware limitado disponível para eles. Vamos agora analisar esses aspectos de baixo para cima.

 

Otimização para o hardware disponível

 

Existem duas limitações principais dos H800s que a DeepSeek teve que usar em comparação com os H100s. Primeiro, eles têm metade da largura de banda de interconexão de GPU para GPU dos H100s e, segundo, memória muito menor: 80 GB contra 188 GB.

 

Curiosamente, a DeepSeek parece ter transformado essas limitações em uma vantagem. "[O] custo econômico de treinamento do DeepSeek-V3... [foi] alcançado por meio do nosso design otimizado de algoritmos, frameworks e hardware", escreveu a equipe da DeepSeek. Em outras palavras, eles tomaram decisões que permitiram extrair o máximo do que tinham disponível.

 

Por exemplo, utilizaram FP8 para reduzir significativamente a quantidade de memória necessária. O artigo do V3 afirma que "o treinamento de baixa precisão surgiu como uma solução promissora para um treinamento eficiente". No entanto, antes deste trabalho, o FP8 era visto como eficiente, mas menos eficaz; a DeepSeek demonstrou como ele pode ser usado de forma eficaz. "Neste trabalho, introduzimos um framework de treinamento de precisão mista FP8 e, pela primeira vez, validamos sua eficácia em um modelo de escala extremamente grande. Com o suporte para computação e armazenamento FP8, conseguimos tanto acelerar o treinamento quanto reduzir o uso de memória das GPUs."

 

Eles também otimizaram ainda mais o hardware restrito em um nível muito baixo. O artigo do V3 também afirma: "Desenvolvemos também eficientes núcleos de comunicação cross-node all-to-all para aproveitar ao máximo as larguras de banda do InfiniBand (IB) e NVLink. Além disso, otimizamos minuciosamente a pegada de memória, tornando possível treinar o DeepSeek-V3 sem usar paralelismo de tensor caro. Combinando esses esforços, alcançamos alta eficiência no treinamento." Isso é um trabalho muito profundo para extrair o máximo do hardware que estavam limitados a usar.

 

Além disso, o artigo fala sobre algo que achamos particularmente interessante: "Quanto ao framework de treinamento, projetamos o algoritmo DualPipe para paralelismo eficiente de pipeline, que tem menos falhas de pipeline e esconde a maior parte da comunicação durante o treinamento por meio da sobreposição computação-comunicação. Essa sobreposição garante que, à medida que o modelo escala, desde que mantenhamos uma constante relação computação-comunicação, ainda podemos empregar especialistas de granulação fina entre nós, enquanto alcançamos uma sobrecarga de comunicação all-to-all quase zero." A constante relação computação-comunicação e a sobrecarga de comunicação all-to-all quase zero são impressionantes em relação aos métodos "normais" de escalar o treinamento distribuído, que normalmente significa "adicionar mais hardware à pilha".

 

Este é um claro exemplo de que a necessidade é a mãe da invenção.

 

O impacto do reinforcement learning no desempenho do benchmark pós-treinamento

 

A DeepSeek aplicou o reinforcement learning com GRPO (Group Relative Policy Optimization) no V2 e V3. Mas, aparentemente, o reinforcement learning teve um grande impacto no modelo de raciocínio, o R1 — seu impacto no desempenho do benchmark é notável.

 

Ao usar o GRPO para aplicar a recompensa ao modelo, a DeepSeek evita usar um grande modelo "crítico"; isso economiza memória. No entanto, o GRPO segue uma abordagem baseada em regras, que, embora funcione melhor para problemas que têm uma resposta objetiva — como programação e matemática — pode ter dificuldades em domínios onde as respostas são subjetivas ou variáveis. Será interessante acompanhar os trade-offs à medida que mais pessoas o usarem em diferentes contextos.

 

Multi-head latent attention (MLA)

 

O Multi-head Latent Attention é uma variação da atenção multi-cabeça que foi introduzida pela DeepSeek no artigo do V2. Segundo este post, enquanto as técnicas anteriores de atenção multi-cabeça eram consideradas um compromisso, no sentido de que você reduz a qualidade do modelo para obter melhor escala no treinamento de grandes modelos, a DeepSeek afirma que o MLA não só permite a escala, mas também melhora o modelo. Estamos ansiosos para nos aprofundar nisso.

 

Destilação vs. reinforcement learning

 

O artigo do R1 tem uma discussão interessante sobre destilação vs. reinforcement learning. A equipe da DeepSeek escreve que seu trabalho torna possível: "tirar duas conclusões: Primeiro, destilar modelos mais poderosos em modelos menores gera excelentes resultados, enquanto modelos menores que dependem do RL em larga escala mencionado neste artigo exigem um poder computacional enorme e podem nem mesmo alcançar o desempenho da destilação. Segundo, enquanto as estratégias de destilação são econômicas e eficazes, avançar além dos limites da inteligência ainda pode exigir modelos base mais poderosos e reinforcement learning em maior escala."

 

A primeira conclusão é interessante e na verdade intuitiva. A segunda é reconfortante — eles não, pelo menos, subverteram completamente nosso entendimento sobre como o deep learning funciona em termos de requisitos significativos de computação.

 

O que podemos aprender sobre o que não funcionou?

 

Isso é sempre interessante de ler. O que a DeepSeek tentou e não funcionou?

 

  • Primeiro, usar um modelo de recompensa de processo (PRM) para guiar o reinforcement learning foi inviável em grande escala. No entanto, ainda poderia ser usado para reclassificar as top-N respostas;

  • Segundo, a busca em árvore de Monte Carlo (MCTS), que foi usada pelo AlphaGo e AlphaZero, não escala para tarefas gerais de raciocínio porque o espaço de problemas não é tão "construído" quanto o xadrez ou até mesmo o Go. Lembre-se de que, há menos de uma década, o espaço do Go era considerado complexo demais para ser viável computacionalmente? Agora, é "construído".

 

Outras coisas interessantes

 

Há obviamente uma enorme quantidade de coisas interessantes que poderíamos comentar. No entanto, há alguns pontos que vale a pena destacar:

 

  • Um benchmark de codificação muito impressionante;

  • O pós-treinamento + escalabilidade de inferência parece ser uma estratégia viável para criar um modelo muito eficaz.

O que vem a seguir?

 

Quebrando a circularidade de benchmarks e modelos

 

Após o lançamento de um novo e melhor modelo, ficamos nos perguntando se ele foi exposto aos dados do benchmark durante o treinamento. "Ele apenas estudou para a prova ou realmente aprendeu o conteúdo?".

 

Isso acontece por causa da circularidade perversa dos conjuntos de dados de benchmarks; é um ciclo sem fim de exageros enganosos. Você cria um bom conjunto de dados de benchmark, o próximo modelo o "engancha" para vencer, recebe hype, depois é necessário criar outro benchmark "justo"... isso agrega valor até o próximo modelo quebrar esse benchmark, e assim por diante. O "Último Exame da Humanidade" só será o que diz ser até o próximo modelo ser lançado.

 

Para colocar de outra forma, quando um LLM gera respostas corretas com confiança nos benchmarks atuais, isso é ótimo, se sua aplicação também ocorrer em dados reais cuja complexidade seja semelhante. Por outro lado, quando o LLM falha em um benchmark mais novo (ou no domínio em que é aplicado), geralmente é porque ele está confiante em respostas erradas. Isso acontece porque o novo benchmark possui complexidade que ele não conhecia no momento do treinamento.


Esse ciclo precisa parar, e precisamos de mecanismos de avaliação melhores e mais genéricos, com métricas informativas que não dependam de novos benchmarks a cada poucas semanas. (Falamos sobre isso em outro lugar.)

 

Reproduzindo os resultados do DeepSeek R1

 

Uma grande tarefa que ainda precisa ser feita é reproduzir os resultados do R1 e validar suas descobertas de forma independente. Estamos acompanhando de perto o openR1 do Huggingface, enquanto a comunidade de código aberto tenta reproduzir os resultados. Para reproduzir os resultados, serão necessárias algumas coisas:

 

  1. GPUs: 2048 não é um número tão grande, assim como $5,5 milhões não é um valor exorbitante por execução de treinamento;
  2. Código de treinamento: o DeepSeek não liberou o seu;

  3. Dados de treinamento: talvez a maior lacuna.

 

O DeepSeek provavelmente não liberará seu conjunto completo de dados de treinamento, assim como OpenAI ou Anthropic não liberam os deles. Pelo que conseguimos descobrir, o DeepSeek não liberou amostras dos dados usados para o treinamento de "long chain-of-thought", por exemplo. Então, a comunidade de código aberto corajosa começou a criar conjuntos de dados. OpenThoughts é um exemplo disso.

 

Enquanto isso, pesquisadoras de Berkeley alegam ter reproduzido o R1-zero por menos de U$30... 

 

... Acho que preciso tirar um cochilo.

Obrigado às minhas colegas Shayan Mohanty, Ben O'Mahony, Chris Kramer, Sahger Lad, Prathamesh Kalamkar, Lauris Jullien, Emily Gorcenski, Karrtik Iyer, Runyan Tan, Parag Mahajani e Andy Yates, que ontribuíram para este artigo.

Ajudamos organizações a aproveitar o potencial da IA