Pocket-LM 269M — LM brasileiro para rodar no celular

Modelo de linguagem decoder de 269M de parâmetros, treinado do zero em português, feito para rodar offline em celulares de entrada (169 MB em Q4_K_M, ~15 tok/s num Helio G36, 80 tok/s medidos num Dimensity 9500s via llama.cpp).

Nenhum peso de terceiros: outras IAs participaram apenas como professoras (geração e filtragem de dados), nunca como fonte de pesos.

Medições, réguas de avaliação e lições do projeto (incluindo resultados negativos): github.com/MaxxArtes/pocket-lm-notas.

Resultados (05/08/2026)

benchmark Pocket-LM 269M referência
LAMBADA-PT (n=5.153) 36,85 1º entre modelos <1,2B em pt (Tucano-1b1: 34,70 com 250B tokens)
CALAME-PT (n=2.076) 53,13 3º, acima de Bloom-1b1 e GlórIA-1b3 (4× o tamanho)
IFEval-pt (n=308) 39,61 sem nenhum treino de instrução
MultiBLiMP (gramática) 96,3% acaso: 50%

Total de treino: 25,4 bilhões de tokens — 10× menos que o comparável mais próximo. Avaliação pareada por item; detalhes e réguas no repositório do projeto.

Linhagem de dados (transparência)

  • Última fase (12,3B tokens): 100% corpus com licença declarada — finepdfs (ODC-By), FineWeb2-HQ (ODC-By), HPLT 2.0 (CC0) — deduplicado globalmente, com shards de validação segregados.
  • Fases anteriores (13,1B tokens): Common Crawl filtrado (ClassiCC-PT, sem licença explícita no cartão), Wikipédia-PT (CC-BY-SA) e sintético permissivo (Apache-2.0).
  • Ou seja: a última rodada é integralmente licenciada; a linhagem completa dos pesos inclui uma fase anterior de licença indefinida. Um retreino do zero 100% limpo está no roteiro.

Limitações honestas

  • Não é chat. É modelo base: completa texto. Para uso, dê começos de frase ou acople a um fluxo de instrução.
  • Não sabe recusar: medimos que julgamento de respondibilidade não se forma neste porte (três controles independentes; artigo a caminho). Não use para QA factual sem camada de verificação.
  • Conhecimento de mundo limitado pelo porte: erra fatos com confiança.
  • Contexto de 512 tokens.

Uso rápido (llama.cpp)

llama-cli -m pocket-lm-269m-q4_k_m.gguf -p "O Brasil é um país" -n 50 -t 4

Atribuições de dados

finepdfs e FineWeb2-HQ (HuggingFaceFW/epfml, ODC-By 1.0) · HPLT 2.0 (CC0) · Wikipédia-PT (CC-BY-SA 3.0) · gigaverbo-v2-synth (Apache-2.0) · ClassiCC-PT (citado; sem licença declarada) · avaliações: CALAME-PT, LAMBADA-PT (TucanoBR), MASSIVE (CC-BY-4.0).

Assistente de ações (novo, 06/08/2026)

pocket-assistente-q4_k_m.gguf (177 MB) — um arquivo que entende comandos E lê texto: fusão 0,85·SFT-de-ações + 0,15·base, quantizada com imatrix. Números (fatia cega): 88,2% de intenção / 79,3 de slot F1 no MASSIVE localizado pt-BR; CALAME 50,9 (base pura: 53,1).

Como usar no modo comando: prompt frase: <comando>\nacao: com stop=["\n"] e temperatura 0; saída intencao;campo=valor|.... Recomendado: se o modelo não disse desconhecido mas p(token " desconhecido") > 0,05 no 1º passo, trate como desconhecido (rejeição near-domain sobe de 57,5% para 77,5%, custando 0,8pp de intenção). Confirme com o usuário antes de executar qualquer ação.

Extensão: 9 funções nativas de celular (adapter de 20 MB, 07/08/2026)

Um adapter LoRA de 20 MB (r=16, sobre a base congelada) adiciona nove comandos nativos que o MASSIVE não cobre: timer, lembrete, ligação, mensagem, lanterna, abrir aplicativo, Wi-Fi/Bluetooth/modo avião, cálculo e conversão de unidade.

Arquivo: pocket-lora-acoes-v6.gguf — usar com a base pura (pocket-lm-269m-q4_k_m.gguf), não com o pocket-assistente já fundido:

llama-server -m pocket-lm-269m-q4_k_m.gguf \
             --lora-scaled pocket-lora-acoes-v6.gguf:1.0 -c 512
# prompt: "frase: me acorda às sete\nacao:"  ->  " alarm_set;time=sete"

Medições (mesmo avaliador, mesma fatia, comparado ao adapter de ações anterior)

métrica adapter anterior v6
intenção (60 do MASSIVE) 88,6 90,0
F1 de campos 78,2 79,9
recusa fora do escopo 97,7 99,0
falso-desconhecido 1,4% 1,0%
9 funções novas 87,4%
hard-OOS (fronteira difícil) 61,0 54,5

Por função (teste cego de 1.051 exemplos independentes, ~117 por função): toggles 99,0 · ligação 97,5 · timer 94,2 · cálculo 91,7 · abrir app 88,9 · lanterna 87,6 · conversão 86,7 · mensagem 72,5 · lembrete 69,5.

Limitação conhecida, medida e não resolvida

O hard-OOS cai 6,5 pontos (61,0 → 54,5). Adicionar intenções move a fronteira do que é "fora do escopo": comandos que antes eram claramente externos passam a se parecer com as funções novas. Os negativos do treino foram limpos dos casos que viraram válidos, mas não foram acrescentados negativos das novas bordas — essa correção está pendente. Com a regra de confiança do app (p(desconhecido) > 0,05 no primeiro token), a recusa difícil vai de 54,5 para 74,0.

Duas funções (lembrete e mensagem) estão abaixo de 75% e não deveriam ser habilitadas num produto sem mais dado de treino.

Troca de modo (ação ↔ conversa)

Dois adapters podem ficar residentes e alternar por escala (1,0 no modo ativo, 0,0 no outro) — a troca leva 1 ms e não recarrega o modelo. Somar os dois não funciona: custa 5 pontos de intenção e degrada a conversa. Um adapter de conversa experimental existe, mas conversa livre não é viável neste tamanho (24,4% de coerência em teste cego de 200 prompts) — fica para o modelo de 400M.

Qual quantização usar (matriz medida, 07/08/2026)

Doze níveis medidos neste modelo, com o adapter v6 fundido na base e o mesmo conjunto de teste em todos (300 MASSIVE, 300 nativas, 150 fora de escopo, 150 fronteira difícil, 400 CALAME). Números de 7B da comunidade não se transferem para cá — por isso medimos.

Intervalos de confiança de 95%, para leitura honesta da tabela: intenção, nativas e F1 ±3,7 a 4,0pp · recusa ±2,7pp · hard-OOS ±8,0pp · CALAME ±4,9pp. Diferença menor que o IC não é resultado.

nível MB intenção F1 campos nativas recusa OOS CALAME
F16 514,6 87,67 75,38 88,33 98,00 49,25
Q8_0 274,6 87,33 75,71 88,33 98,00 49,00
Q6_K 212,6 87,67 75,99 88,67 98,00 49,00
Q5_K_M 190,0 87,33 75,72 88,67 97,33 49,25
Q4_K_M (publicado) 168,8 87,00 75,16 87,67 98,00 49,75
Q3_K_M 141,3 89,67 75,99 87,33 97,33 50,50
Q3_K_S 118,8 88,00 76,38 88,33 97,33 48,75
Q2_K 110,7 86,00 71,97 87,33 96,67 45,75
Q2_K + imatrix 110,7 87,00 74,46 86,67 97,33 47,00
IQ2_M + imatrix 100,1 86,67 73,63 88,67 96,00 48,50
Q2_K_S + imatrix 96,3 87,33 73,08 84,00 96,67 45,50
IQ2_XXS + imatrix 80,3 84,33 70,07 81,33 86,00 43,75
IQ1_M + imatrix 74,3 81,67 61,22 71,33 80,00 40,00

Recomendação: Q4_K_M (o arquivo publicado). Se precisar de menos espaço, Q3_K_S (118,8 MB) não custa nada mensurável, e IQ2_M (100,1 MB) é o piso. Não use IQ2_XXS nem 1 bit.

O que a matriz ensinou

De F16 até Q3_K_S não há perda mensurável. Diverge do reportado para modelos de 7B, onde 3 bits já dói. Hipótese: a tarefa aqui é classificar e extrair campos, não gerar texto livre — bem mais tolerante a peso grosseiro.

"Q2_K" quase não é 2 bits neste modelo. As regras de mistura do llama.cpp deixam só o ffn_up em Q2_K; attn_qkv (categoria sensível, e somos MHA), attn_output e ffn_down vão para Q3_K, e token_embd amarrado vai para Q6_K. Daí o Q3_K_S custar só 8 MB a mais em vez dos 25% que a razão de bits sugeriria.

Quem define o piso é a recusa, não a acurácia. No IQ2_XXS a intenção ainda parece aceitável (84,3%), mas a recusa cai de 98,0 para 86,0 — 14% dos pedidos fora de escopo o modelo tenta executar em vez de dizer "não sei". O modelo perde a noção do próprio limite antes de perder a capacidade.

Métrica de recusa nunca se lê sozinha. O hard-OOS melhor de toda a matriz (61,3) é o do Q2_K sem imatrix — a pior configuração testada. Ao corrigir esse nível com imatrix, o modelo melhora em F1 e CALAME e o hard-OOS desaba para 44,0. Aquele 61 era um modelo degradado se escondendo no "desconhecido", não detecção de fronteira.

Acerto conjunto: 60,7%. Intenção certa e todos os campos certos ao mesmo tempo — a condição real para o app executar — contra 87,7% de intenção e 75,4 de F1 nos mesmos itens. O F1 dá crédito parcial por acertar dois campos de três; o usuário não. O gargalo do produto é extração de campos, não classificação. Considere este o número de referência.

Downloads last month
47
GGUF
Model size
0.3B params
Architecture
gpt2
Hardware compatibility
Log In to add your hardware

4-bit

Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Collection including Magurofg/pocket-lm-269m