Resultado medido
bits-por-byte (bpb) num holdout limpo do fineweb-2 PT (400 documentos, sha256
2273c5e4…9663e028c). Menor e' melhor. bpb e' agnostico ao tokenizador, entao compara
modelos com vocabularios diferentes de forma justa.
Table with columns: modelo, parametros, tokens, tok/param, bpb| modelo | parametros | tokens | tok/param | bpb |
|---|
| Bee-350M (este) | 345,4M | 21,75B | 63 | 0,8207 |
| Bee-150M | 151,2M | 21,75B | 143 | 0,8438 |
O Bee-350M supera o Bee-150M em 2,76% usando 3,3x menos tokens por parametro.
Como foi treinado
Table | |
|---|
| arquitetura | Llama-like, 32 camadas, d_model 960, 15q/5kv GQA, intermediate 2560 |
| contexto | 2048 tokens |
| corpus | 21,75B tokens de portugues (fineweb-2 PT + dominio publico) |
| schedule | WSD — warmup 2%, plato em 55% do pico, decaimento 1-sqrt(t) nos ultimos 20% |
| LR de pico | 2,181e-03 (Step Law) |
| hardware | 1x RTX 5090, 115,5 h |
| custo | ~US$ 118 |
O que aprendemos treinando ele
Dois resultados medidos que valem mais que o modelo:
- O decaimento de LR vale ~10% de bpb. O mesmo modelo, nos mesmos 15,00B tokens, mede
0,9167 no plato e 0,8223 decaido. Comparar marcos intermediarios de modelos com
schedules diferentes mede o schedule, nao o modelo.
- O volume de tokens saturou antes da escala. 15,00B -> 21,75B (+45% de dado)
rendeu 0,19% de bpb. Ja 151M -> 345M parametros rendeu 2,76%.
Limitacoes
- Modelo base: nao segue instrucoes, nao conversa, nao usa ferramentas.
- 345M parametros e 2048 de contexto — alucina fatos com facilidade.
- Treinado predominantemente em web PT; herda os vieses dessa fonte.
bpb mede modelagem de linguagem. Fluencia de resposta e uso de ferramenta so' se medem
pos-SFT, por execucao.
Uso
from transformers import AutoModelForCausalLM, AutoTokenizer
tok = AutoTokenizer.from_pretrained("BrCamp/bee-350m-pt-base")
modelo = AutoModelForCausalLM.from_pretrained("BrCamp/bee-350m-pt-base")
ids = tok("O Brasil e' um pais", return_tensors="pt")
print(tok.decode(modelo.generate(**ids, max_new_tokens=40)[0]))