Nosso primeiro modelo de linguagem. Pequeno de propósito:
1,4 bilhão de parâmetros que cabem numa placa de vídeo de duzentos e cinquenta dólares e respondem
em tempo real sem sair da sua máquina. O português não foi acrescentado depois — ele ocupou 42% do
texto de treino desde o primeiro passo.
1,4 Bparâmetros
2.048tokens de contexto
PT · ENbilíngue de origem
2,6 GBde peso em bf16
O modelo
Para que ele serve
O mochat-1 conversa em
português e em inglês, responde no idioma de quem pergunta e escreve texto descritivo com
naturalidade. Foi treinado do zero: nenhum peso veio de outro modelo, nenhuma etapa foi herdada.
Isso é raro em modelos com português de verdade, e é o que torna cada número desta página
verificável até a origem.
Ele é a primeira geração, e isso aparece. Fatos específicos são pouco confiáveis, contas dão
errado, e há situações em que ele ignora o texto que acabou de receber de uma busca. As medidas
dessas falhas estão mais abaixo, com o número de questões de cada teste, porque o objetivo aqui é
mostrar onde ele está e não onde gostaríamos que estivesse.
Não há chamada de ferramentas. Ele não busca na web,
não usa calculadora e não decide acionar nada: responde apenas com o que memorizou durante o treino.
Essa é uma limitação de dados de treino, medida e não suposta, e está detalhada mais abaixo.
Junto com ele servimos duas variantes: o modelo de pré-treino, que completa texto em vez de
conversar e é o melhor modelador de texto cru da casa, e uma versão supervisionada em que um modelo
grande avalia cada resposta e explica o que deu errado.
Onde ele roda
O que custa manter este modelo no ar
Um modelo de 1,4 bilhão de parâmetros em meia precisão ocupa 2,6 GB de
memória de vídeo. Cada conversa aberta acrescenta cerca de 200 MB de cache. Na prática, oito
conversas simultâneas cabem em 5 GB, e uma placa de 8 GB roda o modelo com folga.
onde
hardware
memória de vídeo
custo
Nuvem, a opção mais barata que carrega AWS g5g.xlarge
NVIDIA T4G, processador ARM Graviton2
16 GB
US$ 0,42 / hora ≈ US$ 307 por mês, ligado o tempo todo
Nuvem, equivalente x86 AWS g4dn.xlarge
NVIDIA T4, processador Intel
16 GB
US$ 0,53 / hora ≈ US$ 384 por mês
Placa própria mais barata GeForce RTX 5050
Blackwell, 130 W, 8 GB GDDR6
8 GB
US$ 249 de lista cerca de US$ 309 na praça
Onde ele foi treinado e está agora dois DGX Spark
NVIDIA GB10, 121 GB unificados
usa 9,3 GB
—
A conta que interessa
Um mês de nuvem ligada sem parar custa mais do que a placa de vídeo inteira. A instância mais
barata que carrega este modelo sai por cerca de US$ 307 por mês; a RTX 5050 custa US$ 249 e é sua
para sempre, consumindo 130 watts, o equivalente a uma lâmpada potente. Para uma demonstração que
fica no ar, o hardware próprio se paga no primeiro mês.
Note também que a opção mais barata na nuvem é ARM, a mesma arquitetura das máquinas onde o
modelo nasceu. A imagem que serve o modelo aqui roda lá sem nenhuma alteração.
Preços de lista públicos da região us-east-1 e do varejo americano, consultados em
setembro de 2026. Valores de nuvem consideram uso contínuo, sem desconto de reserva ou instância
spot, que costumam derrubar a conta para perto de um terço.
Como foi construído
Onze dias, oito etapas
Do primeiro teste de hardware ao modelo servindo
requisições. Cada etapa traz a ficha técnica ao lado, com os números que saíram do diário de bordo
do projeto.
8 de setembro
Descobrir o que a máquina não faz
A primeira descoberta foi desagradável: o FlashAttention-3 não tem build para a GB10, que é
Blackwell de capacidade 12.1, e o código só toma esse caminho em Hopper. O treino inteiro rodou
sobre SDPA, e isso obrigou a fixar atenção densa em todas as execuções seguintes — janelas
deslizantes sob SDPA derrubam a utilização da placa.
Ficha técnica
GPU
NVIDIA GB10, capacidade 12.1, 121,7 GiB visíveis pelo torch
atenção
FlashAttention-3 indisponível (só existe para a geração Hopper) → volta para SDPA
consequência
--window-pattern L obrigatório: janelas deslizantes sob SDPA derrubam a utilização
interconexão
ConnectX-7 entre os dois nós, validada com o benchmark NCCL antes de qualquer treino
9 a 11 de setembro
Montar o corpus
Nenhum conjunto pronto tinha a mistura que queríamos, então ela foi construída. Catorze fontes
públicas lidas em paralelo por 22 processos, filtradas por nota educacional, toxicidade e idioma,
e remontadas em dois estágios: um grande e variado, outro menor e mais rico em português.
O português custa mais caro de coletar. A cada três documentos em português lidos, um é
descartado pelos filtros; em inglês, quase nada é descartado. Coletar 42% de português exige ler
muito mais texto do que coletar 45% de inglês.
estágio 1 — 7,5 milhões de documentos, 11 GBrealizado, alvo cumprido na casa decimal
EN 45,0PT 42,08,05,0
estágio 2 — 1,5 milhão de documentos, 2,2 GBmais português, mais matemática
EN 28,1PT 49,86,016,1
portuguêsinglêscódigomatemática
Fontes principais
português
GigaVerbo-v2 (filtrado por nota educacional), FineWeb-2 por_Latn, FineWeb2-HQ, Wikipédia em português, UltrachatBR
inglês
FineWeb-Edu, Cosmopedia-v2, SmolTalk
código
CodeParrot (Python), JavaScript do GitHub
matemática
FineMath 3+ e 4+, OpenMathReasoning
taxa de aproveitamento
inglês 100% · matemática 99,5% · português 63,3%
teste de vazamento
20.000 documentos de treino comparados com cada conjunto de validação: zero colisões nos quatro
Escolher como cortar as palavras
11 de setembro
Três tamanhos de vocabulário treinados e medidos contra um critério de fertilidade fixado
antes do teste, sobre os conjuntos de validação que o tokenizador nunca viu.
O resultado surpreendeu na direção contrária à esperada: o critério apertou no inglês,
não no português. Com 42% de português na mistura, o dicionário gasta boa parte dos seus pedaços com
o português e fica excelente nele, e é o inglês que paga a conta.
vocabulário
inglês (limite 1,45)
português (limite 1,80)
veredito
32.768
1,5053
1,4407
reprovado
49.152
1,4561
1,3741
reprovado
65.536
1,4278
1,3351
aprovado
Os números são quantos pedaços, em média, cada palavra vira. Menor é melhor.
12 e 13 de setembro · 55 horas contínuas
O treino principal
Aqui o modelo aprende a língua. Cinco mil quatrocentos e sessenta passos, cada um consumindo
pouco mais de um milhão de tokens, distribuídos pelas duas máquinas. Trinta e seis segundos por
passo, sem desvio mensurável ao longo de dois dias.
O resultado que mais importa não é a nota final e sim a distância entre as duas línguas. Ela
ficou praticamente constante do começo ao fim: as duas melhoraram juntas, nenhuma comeu a outra.
Era exatamente isso que a mistura de 42% deveria produzir.
Bits por byte nos textos de validação: quanto menor, melhor o modelo prevê o texto.
No passo zero o valor era 3,48. A diferença entre português e inglês ficou dentro de uma faixa
de 0,005 ao longo de oito medições e terminou em 0,016.
Ficha técnica
arquitetura
transformer de 20 camadas, 1.399,9 M de parâmetros, janela de 2.048 tokens
passos
5.460, lote de 1.048.576 tokens por passo
tempo por passo
36,3 s incluindo avaliações e salvamentos; desvio de −0,1% em 350 passos
troca de estágio
passo 4.641: a mistura muda para a do estágio 2
temperatura
66–75 °C nas duas máquinas, relógio estável em 2.180 MHz, zero throttling
resultado
bpb 0,8150 · EN 0,8184 · PT 0,8342 · CORE 0,2043
Para calibrar o CORE: o GPT-2 de 1,6 bilhão marca 0,2565 no mesmo teste, que é
inteiramente em inglês. Gastar 42% da capacidade com português é uma troca deliberada, e ela
aparece aqui.
13 de setembro, 18h37 → 14 de setembro, 15h55
Ensinar a conversar
O modelo do passo anterior completa texto, mas não conversa: se você perguntar algo, ele continua
a pergunta em vez de responder. Vinte e uma horas de treino adicional sobre dois milhões de diálogos
transformaram um completador de texto num interlocutor.
Essa fase tem um custo que raramente é mostrado. Ao aprender a conversar, o modelo piora na
tarefa original de prever texto cru da web, e piora mais em português do que em inglês, porque a
mistura de diálogos era 61,5% portuguesa.
A mesma medida de antes, agora subindo: o preço de aprender a conversar. O inglês
paga quase todo o custo cedo e recupera um pouco no fim; o português segue piorando até o
último passo. Por isso o modelo de completar texto e o de conversar são servidos separadamente.
Ficha técnica
duração
21,3 horas, 1.951 passos, 2,05 bilhões de tokens
mistura
61,5% português · 38,5% inglês; diálogos, questões de múltipla escolha e problemas de matemática com ferramenta
perda de treino
1,452 no passo 4 → 1,005 no fim
bpb de conversa
0,4236 → 0,3095
tamanho no disco
3,5 GB por checkpoint
14 de setembro
A prova
Um critério fixado antes de qualquer resultado: o modelo precisa responder no idioma de quem
pergunta em pelo menos 90% de cinquenta situações separadas. Ele tirou 80%. O comportamento central
estava perfeito, 34 de 35 acertos; o que falhou foram dois comportamentos raros que quase não
apareceram no treino.
situação
resultado
pergunta em português → responde em português
19 de 20
sólido
pergunta em inglês → responde em inglês
15 de 15
sólido
sem pista de idioma → deveria puxar para o português
3 de 10
falhou
pedido explícito de troca de idioma
3 de 5
falhou
O diagnóstico é de volume de dados, não de capacidade: os dois comportamentos que
falharam tinham 300 e 150 exemplos numa mistura de 2,05 milhões de linhas, contra 460 mil conversas
em inglês puxando o padrão para o outro lado.
14 e 15 de setembro
A tentativa de consertar, e a regra que impediu
Um treino curto e concentrado no comportamento que falhou levou a nota de 80% para 90%, passando
exatamente no critério. Mas o mesmo treino degradou a capacidade de prever texto cru além de um
limite que também tinha sido fixado antes. Pela regra, a versão consertada foi rejeitada e a
original ficou.
medida
limite
original
continuação
idioma correto
≥ 90%
80%
90%passou
troca explícita de idioma
melhorar
3 de 5
5 de 5
ENEM
≥ 0,240
0,276
0,274
texto cru, inglês
subir ≤ 0,02
1,079
1,121 estourou
texto cru, português
subir ≤ 0,02
1,199
1,257 estourou
Por que isso importa
Entre os dois resultados, 88% e 90%, existe uma única pergunta de cinquenta, e eles são
estatisticamente indistinguíveis. O valor do limite fixado nunca esteve no número em si: esteve
em ninguém poder movê-lo depois que a resposta ficou inconveniente. O veredito contrariou o
objetivo do projeto e foi seguido assim mesmo.
16 de setembro
Colocar de pé
O modelo escolhido virou um serviço: uma API compatível com a da OpenAI, que qualquer
biblioteca existente consegue chamar trocando só o endereço, e um playground para conversar com ele
no navegador. Uma ferramenta de busca na web foi acrescentada, no mesmo protocolo de ferramentas que
o modelo viu durante o treino, e um modo em que um modelo grande avalia cada resposta do pequeno e
explica onde ele errou.
O que está no ar
mochat-1
o modelo de conversa, com busca na web opcional
mochat-1-base
o modelo de pré-treino, que completa texto e não conversa
mochat-1-supervised
a mesma resposta, embrulhada numa avaliação feita por um modelo grande
velocidade
cerca de 40 tokens por segundo nesta máquina
Sem maquiagem
O que ele sabe e o que ele não sabe
Todas as notas abaixo saíram dos conjuntos de teste completos, com o
número de questões anotado. Em provas de múltipla escolha, acertar por acaso já dá uma nota; o que
importa é a distância acima dela.
prova
nota
acaso
leitura
ENEM (500 questões)
27,6%
20%
sinal real, quase 8 pontos acima do acaso
ARC-Easy (2.376)
48,0%
25%
ciências elementares, bem acima do acaso
ARC-Challenge (1.172)
40,4%
25%
idem, mais difícil
MMLU
34,0%
25%
conhecimento geral, sinal modesto
ASSIN2 (500)
51,4%
50%
no acaso; provável questão de formato
OAB (500)
24,6%
25%
no acaso; esperado a 1,4 bilhão
GSM8K (1.319)
0,08%
—
uma questão certa em 1.319
Ele não chama ferramentas, e isso explica o GSM8K
Uma nota dessas depois de quatro épocas de treino em problemas de matemática não é plausível
como falta de capacidade, então foi investigada. O modelo tem um mecanismo de calculadora embutido,
e a calculadora funciona: acionada diretamente, ela calcula 47 × 83 = 3.901 corretamente. O que o
modelo não faz é acioná-la. A ferramenta nunca quebrou; ela nunca foi chamada.
Medimos isso de duas formas. Em perguntas que pedem conta ou fato atual, ele nunca emitiu o
token que inicia uma chamada. Declarar as ferramentas disponíveis no prompt, com o formato exato,
não mudou nada: zero chamadas em seis tentativas, com e sem a declaração. Perguntado quanto é
47 vezes 83, respondeu "47 vezes 83 é igual a 47".
Por isso não oferecemos busca na web neste modelo. Seria o servidor decidindo e executando a
busca, com o modelo apenas escrevendo o texto da consulta, e apresentar isso como capacidade dele
seria falso. Chamada de ferramenta é objetivo declarado da próxima geração, e depende de dados de
treino com declaração e chamada, que este modelo nunca viu.
O que deu errado
Sete erros que valeram o tempo
Nenhum projeto assim é uma linha reta. Estes foram registrados no diário
no momento em que aconteceram, com a correção ao lado, porque cada um deles teria passado despercebido
num relatório só de resultados.
Os dois conjuntos de validação saíram vazios
O escritor de arquivos cortava o final de cada conjunto para deixar o tamanho uniforme. Qualquer
conjunto com menos de 1.024 documentos virava zero arquivos, em silêncio. A uniformidade não servia
para nada: o carregador percorre índices, não contagens.
O primeiro estágio não tinha remoção de duplicatas
A verificação existia, mas a estrutura que ela consultava era nula justamente no estágio 1.
O mesmo artigo aparece em vários domínios na web, então duplicatas de conteúdo importam mesmo
quando cada documento é único.
A validação vinha de uma fatia só da coleta
Ao ler os dados coletados, os arquivos eram concatenados por processo. A validação sai do começo
da fila, então ela era uma amostra de um único processo, e não da fonte. Nada nos artefatos mostrava
isso.
Uma hora perdida esperando um processo que nunca rodou
O laço de espera procurava pelo nome do processo, e a própria linha de comando do laço continha
esse nome. Ele encontrava a si mesmo e reportava "rodando" para sempre, enquanto nada rodava.
Dezoito horas de máquina parada
Depois de um ensaio bem-sucedido, o relatório foi escrito e a etapa seguinte não foi lançada.
Logs, checkpoints e diário pareciam saudáveis o tempo todo, porque um sistema parado tem exatamente
a mesma aparência de um sistema em dia.
Um conjunto de números publicado e depois retirado
O script que media o custo do treino de conversa carregava o modelo errado, sem oferecer opção.
As conclusões tiradas dele foram retiradas publicamente e a medição refeita. O erro estava num
caminho de código que nunca tinha sido executado ponta a ponta.
Um treino de 60 passos que foram 15
O contador de iterações contava lotes pequenos, não passos de otimização. O agendamento da taxa
de aprendizado decaiu quatro vezes mais rápido que o planejado, e só o exame do checkpoint revelou.
Onde ele mora agora
Converse com ele
O modelo está no ar, servido pela mesma máquina em que foi treinado.
Você pode conversar no navegador ou chamá-lo por uma API compatível com a da OpenAI.