1 pontos por GN⁺ 2025-07-09 | 1 comentários | Compartilhar no WhatsApp
  • O modelo SmolLM3 é um LLM open source de 3B parâmetros que busca eficiência e desempenho ao mesmo tempo
  • Suporta 6 idiomas, incluindo inglês, francês, espanhol, alemão, italiano e português, com expansão para até 128k de contexto
  • Com dual mode (reasoning/non-reasoning), é possível alternar o modo de raciocínio usando as flags /think e /no_think
  • Fornece todas as etapas de treinamento de pretraining, mid-training e post-training, além de datasets públicos e do blueprint de engenharia
  • Em desempenho, supera Llama-3.2-3B e Qwen2.5-3B, com competitividade próxima à de modelos 4B

Visão geral

SmolLM3 é um modelo de linguagem grande open source que busca eficiência e desempenho ao mesmo tempo na escala de 3B parâmetros. Seu grande diferencial é ser pequeno e rápido, mas ainda assim oferecer suporte a contexto longo, multilíngue e raciocínio.

  • 3B parâmetros treinados com 11 trilhões (11T) de tokens
  • Alcança desempenho de ponta (SoTA), podendo competir com modelos 4B
  • Modelo instruct de modo duplo: suporta alternância entre reasoning e non-reasoning com /think e /no_think
  • Suporte a inglês, francês, espanhol, alemão, italiano e português
  • NoPE e YaRN aplicados para até 128k de contexto

Toda a arquitetura do processo de treinamento, a composição dos dados e as receitas de cada etapa foram totalmente divulgadas.

Pretraining

Arquitetura e configuração de treinamento

O SmolLM3 é baseado em transformer decoder e modifica a arquitetura Llama para aumentar a eficiência e o desempenho em contextos longos.

  • Grouped Query Attention (GQA): mais eficiente em memória do que multi-head attention, mantendo desempenho equivalente
  • NoPE: remove rotary position embedding a cada 4ª camada para melhorar o desempenho em contextos longos
  • Máscara intradocumento: aplica masking para que documentos diferentes não atendam uns aos outros, dando suporte a um treinamento mais estável para long-context
  • Remoção de weight decay no embedding: garante comportamento de treinamento mais estável

A configuração de treinamento é:

  • batch global de 2.36M tokens, comprimento de sequência 4096, learning rate 2e-4, AdamW (β1:0.9, β2:0.95), weight decay 0.1, gradient clipping 1
  • Scheduler WSD: 2000 warmup, com queda linear nos últimos 10%
  • Treinamento distribuído com o framework nanotron, dados via datatrove e ferramenta de avaliação lighteval
  • 384 GPUs H100, 24 dias de treinamento

Mistura de dados e treinamento em etapas

Pretraining em 3 etapas:

  • Etapa 1 (0T→8T): web (85%, sendo 12% multilíngue), código (12%), matemática (3%)
  • Etapa 2 (8T→10T): web (75%, sendo 12% multilíngue), código (15%), matemática (10%) - adição de dados de código e matemática de maior qualidade
  • Etapa 3 (10T→11.1T): web (63%, sendo 12% multilíngue), código (24%), matemática (13%) - upsampling de código e matemática de alta qualidade, além da introdução de dados de instruction/raciocínio

A proporção de mistura de dados em cada etapa foi otimizada por meio de muitos experimentos de ablação.

Após o pretraining, foi aplicado um processo adicional de mid-training para reforçar o desempenho em long-context e reasoning.

Mid-training

Treinamento de long-context

Após o pretraining, foram usados 100B tokens adicionais para aumentar o comprimento de contexto em 2 etapas (4k→32k→64k).

  • Expansão do comprimento por ajuste de RoPE theta
  • Upsampling de dados de matemática, código e raciocínio
  • Otimização do desempenho em sequências longas com NoPE e decay mixture
  • Durante o treinamento vai até 64k, e com YaRN na inferência pode chegar a 128k

Mid-training de reasoning

Para aumentar a capacidade de raciocínio, o modelo foi retreinado com 35B tokens (OpenThoughts3-1.2M, Llama-Nemotron-Post-Training-Dataset etc.).

  • Aprendizado de capacidade geral de reasoning, sem foco em domínios específicos
  • Uso de template ChatML e wrapped packing
  • 4 épocas (~140B tokens) antes de salvar o checkpoint

Post-training

A maioria dos modelos de reasoning exige processos de RL fechados ou complexos, mas o SmolLM3 implementa uma estrutura dual instruction (raciocínio/não raciocínio) com dados públicos e receitas claras.

Template de chat

  • Uso das flags /think e /no_think no prompt de sistema para alternar o modo de reasoning
  • Seções separadas para XML Tools e Python Tools, permitindo suporte a código/chamada de ferramentas
  • Uso de mensagem de sistema e metadata (date, knowledge cut-off, reasoning mode), com possibilidade de override flexível

Supervised Finetuning (SFT)

Após o mid-training com 140B de dados de reasoning, foi realizado supervised finetuning com 1.8B tokens (dados SFT: raciocínio lógico/não raciocínio).

  • Para complementar domínios raros de reasoning, foram gerados dados sintéticos de reasoning com Qwen3-32B
  • Uso de best-fit decreasing packing e outras técnicas para maximizar memória/eficiência
  • Todo o dataset e os scripts de treinamento serão divulgados

Anchored Preference Optimization (APO)

  • Após o SFT, o alinhamento do modelo foi feito com APO, uma variação de DPO, com base em preferências Tulu3 (non-reasoning) e pares sintéticos de preferência Qwen3-32B/0.6B (reasoning)
  • A loss é composta por triplet prompt + response, garantindo otimização estável e bom desempenho
  • Como foi observada queda de desempenho em long-context devido ao mid-training de reasoning, isso foi superado por meio de model merging

Model merging

  • Uso da biblioteca MergeKit, com merge linear na proporção checkpoint APO modelsf(0.9) + checkpoint de mid-training (0.1)
  • Recuperação do desempenho em long-context de 128k e manutenção do desempenho geral
  • O modelo final foi lançado a partir do checkpoint ideal

Avaliação

Modelo base

Em 12 benchmarks principais, mostra desempenho muito superior a outros modelos 3B e próximo de modelos 4B

  • Pontos fortes equilibrados em compreensão de documentos, raciocínio, matemática e coding
  • Capacidade clara de expansão de comprimento em benchmarks como RULER 64k
  • Capacidade multilíngue comprovada em Global MMLU, MLMM HellaSwag, Flores-200, Belebele etc.
  • Desempenho consistente em 5 línguas europeias além do inglês

Modelo Dual Instruct / Reasoning

Avaliação non-reasoning

O SmolLM3 supera Llama3.2-3B Instruct e Qwen2.5 3B Instruct, com bom equilíbrio entre eficiência e desempenho no nível de modelos 4B de reasoning

Avaliação de reasoning

Com /think ativado, o desempenho sobe fortemente na maioria dos benchmarks

  • AIME 2025 (36.7% vs 9.3%), LiveCodeBench (30.0% vs 15.2%), GPQA Diamond (41.7% vs 35.7%) etc., resolvendo também problemas difíceis
  • Raciocínio 3B comparável ao Qwen3 4B, com capacidade de reasoning matemático e resolução de problemas complexos

Com o modo duplo, é possível escolher entre velocidade e análise aprofundada

Guia de uso prático

O SmolLM3 tem suporte oficial no transformers v4.53.0 ou superior

  • Carregamento do modelo, escrita de prompt e inferência com código simples
  • O modo reasoning/non-reasoning é alternado no prompt de sistema com as flags /think e /no_think

Há suporte aos parâmetros xml_tools e python_tools para chamadas de ferramentas (Agentic)

Conclusão

SmolLM3 é um modelo fully open que oferece long-context, multilíngue e reasoning na escala de 3B.

  • Divulgação completa do blueprint de engenharia, incluindo receitas de treinamento por etapa, datasets e logs de treinamento
  • Pode maximizar a participação da comunidade em melhorias e validação

Materiais

  • Modelo, scripts, datasets etc.: HuggingFaceTB/SmolLM3-3B
  • Para artigo, avaliações, quantização e ferramentas de merging, consulte os links correspondentes no GitHub, Hugging Face e papers

1 comentários

 
GN⁺ 2025-07-09
Opiniões no Hacker News
  • Parece entrar com mérito naquele raro clube de modelos que alcançam grande parte do desempenho SOTA com tamanho de 3B, além de serem totalmente abertos, com código e até a receita de reprodução toda publicada. Para treinar do zero, provavelmente seriam necessários cerca de um milhão de dólares em tempo de GPU (com base em 4000 GPUs por 24 dias), e a documentação generosamente compartilhada também impressiona; é visto como uma contribuição positiva e sólida para o setor
    • Na prática, seriam 384 H100 rodando por 24 dias, então o custo fica em menos da metade de um milhão de dólares
    • Fiz uma validação cruzada de uns 10 minutos pela manhã com os benchmarks do Phi-4-mini, e achei estranho esse modelo ter ficado de fora; no geral ele aparece sempre atrás. Para contexto, estou desenvolvendo um cliente de LLM, e meu objetivo principal é minimizar a diferença entre local e nuvem (llama.cpp). Normalmente eu deixo esse tipo de coisa passar, mas embora a HF seja realmente uma excelente cidadã, destacar a superioridade de outros modelos sem mencionar o superstar acaba, na minha visão, ignorando o SoTA local de longa data nesta área; por isso achei que valia a pena me manifestar desta vez
  • Este modelo é pequeno (3B) e mostra ótimo desempenho em benchmarks. Como combina bem com implantação em edge/mobile, há bastante vantagem em relação ao gemma3-4b. Suporta modo duplo de raciocínio/não raciocínio e também divulga completamente todo o método de treinamento > Lançamos o SmolLM3 junto com um blueprint de engenharia. Inclui a arquitetura detalhada, uma estratégia de pré-treinamento em 3 etapas para elevar gradualmente o desempenho por domínio e a metodologia para construir um modelo híbrido de raciocínio. Para obter esse tipo de resultado, normalmente seria preciso passar meses fazendo engenharia reversa, mas nós abrimos toda a metodologia
  • Eu mesmo corrigi o problema do chat template para llama.cpp e outros motores de inferência; para rodar, use o comando ./llama.cpp/llama-cli -hf unsloth/SmolLM3-3B-GGUF:Q4_K_XL --jinja -ngl 99
  • O desempenho chega muito perto do Qwen3 distill, mas o modelo tem só 75% do tamanho, o que é impressionante. O modelo base do smollm já é de alta qualidade, então tenho usado com frequência também para fine-tuning, e pretendo usar em agentes locais ou conclusão de código em um futuro próximo. O algoritmo de RL também parece interessante. Até agora eu vinha trabalhando mais com algoritmos do OpenAI, mas acho que está na hora de revisar o SOTA mais recente (a velocidade real dessa área é insana, difícil de acompanhar)
  • Queria recomendações de modelos pequenos bons para fine-tuning em vários datasets corporativos; na nossa unidade de negócios estamos procurando um modelo pequeno que rode no navegador e no mobile, e queremos resolver isso sem o sofrimento de RAG e recursos em nuvem
    • Modelos pequenos têm fraqueza para acumular conhecimento. Eu não recomendaria muito a abordagem de tentar “injetar” conhecimento via fine-tuning. Em vez disso, parece melhor implementar em wasm um sistema de RAG embarcado que possa ser distribuído offline; já existem casos de sucesso com essa abordagem
    • O importante é realmente testar vários modelos por conta própria e ter um benchmark decente. ML não é minha especialidade, mas mesmo fazendo fine-tuning com os guias e ferramentas oficiais do Mistral 7B, o resultado ficou abaixo do esperado. Eu inseri perguntas bem específicas do dataset, e por mais que variasse o fine-tuning, ele não conseguia responder direito. Em vez de esperar que ele “aprenda” a informação, uma combinação de busca vetorial + busca por palavras-chave foi muito mais eficaz para extrair contexto. Usei uma abordagem de dataset pré-treinado, e talvez uma abordagem melhor fosse sintetizar Q&A com base nos dados para treinar, mas não tive tempo de experimentar até esse ponto
    • Fiz fine-tuning com o Gemma 3N 2B e o desempenho foi bom, mas no S23U o carregamento é lento. Depois que sobe, roda bem. Também usei SmolVLM 256M e 500M; eles iniciam muito mais rápido e podem ser incluídos no app como assets, então com algum know-how dá para usar. Mas os modelos pequenos têm desempenho limitado pela quantidade de parâmetros. E no Android, arquivos acima de 2GB não podem ser distribuídos por causa de problemas de compactação, então o modelo precisa ser baixado separadamente; além disso, ele não carrega direto da pasta de downloads, então precisa ser copiado para uma pasta própria do app. O Gemma 3N 2B tem 3,14GB e exige pelo menos 7GB de espaço livre
    • Fiquei curioso sobre qual objetivo você quer alcançar fazendo fine-tuning desse jeito
  • Parece trecho de esquete de comédia britânica: "Isso é um grande modelo de linguagem, embora você diga que é pequeno?" "Sim, é realmente pequeno." "Mas como pode ser grande e pequeno ao mesmo tempo?" "Pelos padrões de grandes modelos de linguagem... ele é pequeno." "Então quer dizer que é grande?" "Isso, bem grande." "Grande em comparação com o quê?" "Com os pequenos modelos de linguagem." "Então o que seria algo como o ChatGPT? Grande entre os grandes?" "Exatamente. Um LLLM."
    • Tem um ar de comédia australiana, lembra o estilo Clarke and Dawe/Utopia
    • O próprio critério continua mudando. O GPT-2 já foi “grande”, mas hoje tem metade do tamanho deste modelo. E além disso o Sam Altman dizia na época que nem o GPT-2 podia ser liberado por ser perigoso. Para mim, se não roda em dispositivo de consumidor, então é “grande”; discutir definição tem pouca utilidade
    • Não vou mexer no hamster espacial gigante miniatura (piada de BG)
    • Fico confuso se é big little planet ou small big planet
  • Pelo que ouvi, os modelos llama3 parecem relativamente fáceis de fazer fine-tuning (corrijam-me se eu estiver errado ou se houver um modelo melhor aqui). Tenho curiosidade sobre o grau de dificuldade de fine-tuning do smollm3; os LLMs MoE parecem especialmente temperamentais nessa parte
  • O ponto interessante é que eles não aplicaram RL diretamente por conta própria, e sim fizeram fine-tuning usando apenas reasoning traces de um grande dataset
    • Na prática, eles usaram um método offline como Anchored Preference Optimization; como vimos no projeto Open R1, aplicar RL multitarefa a modelos pequenos não é nada trivial. Métodos offline dependem mais da curadoria/geração do dataset, então o ciclo de iteração é muito mais rápido. É uma abordagem adequada para a escala de modelos com que estamos lidando
  • Trabalho excelente; deixo meu respeito ao anton e aos envolvidos. Espero que continuem também com modelos na faixa de 50~100M de parâmetros. Acho que modelos que terminam rapidamente em CPU, como nos casos de teste do Solve by LLM, também têm bastante valor