Loading…
Loading…
Um RoBERTa pequeno (4,5 milhões de parâmetros) treinado do zero em português, junto com um tokenizer Byte-Level BPE próprio, usando um único livro: Crepúsculo dos Ídolos, de Nietzsche.
É um projeto de estudo. O objetivo era entender por dentro como um modelo de linguagem é treinado e, principalmente, como medir se ele aprendeu ou só decorou. Não serve para uso real.
Código, notebook e explicação passo a passo: github.com/ArthurBenedett/minha-primeira-llm
from transformers import pipeline
preencher = pipeline("fill-mask", model="ArthurBenedett/roberta-nietzsche-pt")
preencher("o que não me faz morrer me torna mais <mask>.")
Avaliado em 584 lacunas sorteadas (com semente fixa) nos últimos 10% do livro, que o modelo nunca viu no treino:
| loss | perplexidade | acerto top-1 | acerto top-5 | |
|---|---|---|---|---|
| este modelo | 6,58 | 722 | 10,6% | 19,2% |
| chute pela frequência das palavras | 6,77 | 870 | 7,0% | 15,2% |
| chute aleatório | 8,52 | 5.008 | 0,0% | 0,1% |
O modelo ganha dos dois chutes, mas por pouco do chute pela frequência. A validação parou de melhorar no passo 500 (época ~31): dali em diante o loss de treino continuou caindo e o de validação subiu, ou seja, ele começou a decorar o livro. O early stopping guardou a versão do passo 500, que é a publicada aqui.
| arquitetura | RobertaForMaskedLM, 4 camadas, 4 cabeças de atenção, hidden 256, FFN 1024 |
| tokenizer | Byte-Level BPE treinado no livro, vocabulário de 5.008 tokens |
| dados | livro concatenado e cortado em 282 blocos de 128 tokens; 253 para treino e 29 para validação (blocos seguidos, do fim do livro) |
| objetivo | masked language modeling, 15% dos tokens mascarados |
| treino | batch 16, learning rate 5e-4, 100 passos de warmup, até 300 épocas com early stopping (paciência de 5 avaliações) |
| hardware | CPU de um PC comum, sem GPU, cerca de 8 minutos |
Baseado na aula LLM na Prática do Prof. Marlon Ferrari (repo original), com adaptações: modelo menor para caber no CPU, livro inteiro em blocos, validação, early stopping e comparação com baselines.