- 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
/thinke/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
Opiniões no Hacker News
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 vezllama.cppe 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