Mozyke

Modelo · setembro de 2026

mochat-1

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.

ondehardwarememória de vídeocusto
Nuvem, a opção mais barata que carrega
AWS g5g.xlarge
NVIDIA T4G, processador ARM Graviton216 GB US$ 0,42 / hora
≈ US$ 307 por mês, ligado o tempo todo
Nuvem, equivalente x86
AWS g4dn.xlarge
NVIDIA T4, processador Intel16 GB US$ 0,53 / hora
≈ US$ 384 por mês
Placa própria mais barata
GeForce RTX 5050
Blackwell, 130 W, 8 GB GDDR68 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 unificadosusa 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,0 PT 42,0 8,0 5,0
estágio 2 — 1,5 milhão de documentos, 2,2 GBmais português, mais matemática
EN 28,1 PT 49,8 6,0 16,1
português inglês código matemá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árioinglês (limite 1,45)português (limite 1,80)veredito
32.7681,50531,4407reprovado
49.1521,45611,3741reprovado
65.5361,42781,3351aprovado

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.

0,85 0,95 1,05 1,15 0 1000 2000 3000 4000 5000 passo de treino PT 0,834 EN 0,818
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.

0,85 0,95 1,05 1,15 0 0,5 B 1,0 B 1,5 B 2,05 B tokens de treino de conversa PT 1,199 EN 1,079
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çãoresultado
pergunta em português → responde em português19 de 20sólido
pergunta em inglês → responde em inglês15 de 15sólido
sem pista de idioma → deveria puxar para o português3 de 10falhou
pedido explícito de troca de idioma3 de 5falhou

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.

medidalimiteoriginalcontinuação
idioma correto≥ 90%80%90% passou
troca explícita de idiomamelhorar3 de 55 de 5
ENEM≥ 0,2400,2760,274
texto cru, inglêssubir ≤ 0,021,0791,121 estourou
texto cru, portuguêssubir ≤ 0,021,1991,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.

provanotaacasoleitura
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
MMLU34,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.

Abrir o playground