Uma única H200, 5,7 bilhões de tokens de treinamento, 35 milhões de parâmetros — e uma pontuação média de 41,01% em nove benchmarks zero-shot. Essa combinação foi suficiente para superar o Liquid LFM2.5-230M-Base, um modelo com 6,55 vezes mais parâmetros, além do GPT-2 125M e do Pythia-160M. O desenvolvedor independente Harshal Singh disponibilizou o BarunLM-35M como open source sob Apache 2.0, chamando-o de o melhor modelo da classe sub-100M, com pesos, código de treinamento e scripts de avaliação todos públicos.
Isso não é um truque de leaderboard. A arquitetura incorpora ideias comprovadas na fronteira por modelos da classe DeepSeek e Kimi — atenção local, QK Norm, RoPE parcial — e adiciona um seletor residual aprendível customizado. Para pesquisa em modelos pequenos, ensino e prototipagem local, é uma implementação de referência completa que você realmente pode executar.
De Onde Vem a Eficiência de Parâmetros
O design do BarunLM se resume a três ideias: um ritmo misto de atenção, roteamento residual seletivo e um orçamento de treinamento alinhado à capacidade.
1. Um ritmo de atenção local-global de 3:1
A atenção global padrão escala quadraticamente com o comprimento da sequência, mas boa parte da estrutura de dependências da linguagem vive entre tokens vizinhos. O BarunLM executa três camadas consecutivas de atenção local sobre uma janela de 256 tokens e usa cada quarta camada para uma troca global completa de informações. A atenção global deixa de ser um pedágio pago em todas as camadas e se torna uma camada periódica de comunicação — computação economizada, fluxo de longo alcance preservado. O ritmo de 3:1 vem diretamente do manual de atenção esparsa dos modelos de fronteira da classe DeepSeek e Kimi.
2. Um seletor residual aprendível a cada 4 camadas
Em uma rede pequena, cada camada é preciosa: características úteis formadas cedo podem ser sobrescritas por computações posteriores, e o modelo não tem capacidade sobrando para reaprendê-las. O BarunLM insere um seletor convexo leve a cada quatro camadas que decide o que levar adiante entre a entrada do bloco e seu estado transformado — efetivamente uma via de fidelidade aprendida para cada grupo de 4 camadas, a um custo de parâmetros praticamente invisível.
3. Treinamento alinhado à capacidade: 162,5 tokens por parâmetro
5,7B de tokens ÷ 35M de parâmetros ≈ 162,5 tokens por parâmetro. O corpus mistura FineWeb-Edu, Cosmopedia v2, FineMath-4+, DCLM, CodeSearchNet Python e CodeParrot Clean — texto educacional, dados sintéticos, matemática e código, totalmente deduplicados. O estágio final de 4B de tokens rodou em uma única H200 com o otimizador Muon ao longo de 40.690 passos.
A avaliação é incomumente cuidadosa para essa faixa de tamanho. Todos os nove benchmarks zero-shot rodaram no LM Evaluation Harness 0.4.12; uma varredura de correspondência exata de 13 tokens por todo o corpus de treinamento sinalizou e removeu 1.854 amostras contaminadas antes de qualquer comparação; e a margem sobre o LFM2.5 foi testada com 10.000 reamostragens bootstrap, resultando em um intervalo de confiança de [+0,92, +2,71] pontos percentuais.
O que torna este lançamento útil além da pontuação é que nada está escondido. A pesquisa com modelos pequenos costuma viver em dois extremos: laboratórios de fronteira publicando artigos sem pesos, e projetos amadores publicando pesos sem treinamento reproduzível. O BarunLM fica no meio produtivo — uma receita completa em que o ritmo de atenção, o posicionamento dos seletores, a mistura de dados e o cronograma do otimizador são todos inspecionáveis, e cada número de destaque carrega a cadeia de evidências que o produziu.
Código e Configuração Principais: Executando em Dez Minutos
Comece com inferência para confirmar que o modelo é mais do que um comunicado de imprensa:
# 1. Clone o repositório
git clone https://github.com/harrrshall/barunlm-35m.git
cd barunlm-35m
# 2. Configure o ambiente
python -m venv .venv
source .venv/bin/activate
pip install -e .
# 3. Gere (baixa os pesos do HF automaticamente, verifica SHA-256, usa CUDA se disponível)
python examples/generate.py \
--prompt "The future of efficient language models is" \
--max-new-tokens 48 \
--temperature 0.8
# Para saída determinística: --temperature 0
Somente os pesos, se preferir:
hf download harrrshall/BarunLM-35M --local-dir BarunLM-35M
sha256sum -c BarunLM-35M/SHA256SUMS
A arquitetura principal, conforme medido no barun_config.json:
{
"parameters": 35072768, // 35M
"layers": 12,
"hidden_size": 448,
"num_attention_heads": 7, // 7 cabeças de query
"num_key_value_heads": 1, // 1 cabeça KV compartilhada (GQA)
"local_window": 256, // janela de atenção local
"attention_rhythm": "3:1", // 3 camadas locais + 1 global
"position_encoding": "50% partial RoPE",
"ffn_width": 1228,
"residual_selector_every": 4, // um seletor a cada 4 camadas
"vocab_size": 16384, // BPE em nível de byte
"context_length": 2048,
"tie_embeddings": true
}
Replicar o treinamento exige computo da classe H200: estágio final com Muon, taxa de aprendizado de pico 1e-4, weight decay 0,1, batch size 48. Uma ressalva antes de construir sobre ele — este é um modelo base puro, sem ajuste por instrução, então use-o com prompts como um modelo de continuação, não como um assistente de chat.
Orientações Práticas
-
Prototipagem local. Com 35M de parâmetros e contexto de 2K, a inferência roda em uma única GPU de consumo ou até em uma CPU — muito adequado para experimentos de continuação de texto e demonstrações em sala de aula. O autor recomenda explicitamente contra uso médico, jurídico ou financeiro.
-
Referência de pesquisa. Se você vai treinar seu próprio modelo pequeno, copie diretamente as três jogadas: o ritmo misto de atenção 3:1 (economiza mais de 40% da computação de atenção), os seletores residuais (preservação de características) e um orçamento alinhado à capacidade começando próximo de 162,5 tokens por parâmetro. A pilha estabilizadora — GQA, RoPE parcial, QK Norm, SwiGLU limitado, embeddings atados — já vem pronta.
-
Reproduza a avaliação. O benchmark_results.json no repositório traz pontuações completas por tarefa, intervalos de confiança e hashes de evidência, para que você possa rodar novamente todos os nove benchmarks e comparar diretamente.
-
Respeite os limites. Sem capacidade de seguir instruções, qualidade factual muito abaixo dos modelos grandes — não o trate como substituto do ChatGPT. Seu valor é a densidade de capacidade por parâmetro, não a capacidade absoluta.
Recursos
-
Pesos no Hugging Face: huggingface.co/harrrshall/BarunLM-35M
-
Passo a passo completo da receita de treinamento — arquitetura, dados, trade-offs: harrrshall.github.io/barunlm-35m/blog/
Um orçamento de treinamento de GPU única produzindo um modelo genuinamente competitivo — esse tipo de diversão retrô está se tornando o novo normal na pesquisa com modelos pequenos. O próximo recorde sub-100M pode estar escondido nos seus próprios experimentos de GPU única.