Suzuki-m1 GPT — modelo causal pré-treinado do zero em português
Modelo de linguagem GPT-2 style (decoder-only) treinado do zero sobre o corpus em português Raivatv24/Suzuki-m1. Projeto de demonstração/acadêmico: pequeno, mas completo (tokenizador BPE próprio + treino do zero + checkpointing continuado no Hub).
Versão do checkpoint no Hub: passo 2000 (o treino continua; o app atualiza automaticamente quando novos passos são pushados).
Tamanho
| Item | Valor |
|---|---|
| Parâmetros | ~23M (GPT2 config) |
| Tipo | Causal LM (decoder-only) |
| Vocabulário | 32.000 (BPE próprio, treinado sobre o corpus) |
Contexto (block) |
256 tokens |
Arquitetura
from transformers import GPT2Config
cfg = GPT2Config(
vocab_size=32000,
n_positions=256,
n_embd=384,
n_layer=6,
n_head=6,
)
Treinamento
| Item | Valor |
|---|---|
| Otimizador | AdamW |
| LR | 3e-4 (cosine com warmup de 200 steps) |
| Batch efetivo | 64 (16 × grad accumulation 4) |
| Passos | 10.000 planejados (em andamento) |
| Hardware | Notebook Kaggle, acelerador GPU |
| Salva | A cada 1.000 passos (ckpt.pt + model.safetensors + tokenizer) |
O treino usa RESUME=True: se a sessão cair, ele baixa o ckpt.pt do Hub e continua de onde parou.
Uso
Para transformers >= 4.49 (carrega tokenizer e config direto):
from transformers import pipeline
pl = pipeline("text-generation", model="Raivatv24/suzuki-m1-gpt")
pl("Era uma vez", max_new_tokens=60)
Atenção (bug conhecido): o tokenizer_config.json foi serializado com transformers 5.17 (classe TokenizersBackend), que não existe em transformers 4.48.x. Se der erro Tokenizer class TokenizersBackend does not exist, carregue o tokenizer pelo arquivo:
from transformers import AutoConfig, AutoModelForCausalLM, PreTrainedTokenizerFast
cfg = AutoConfig.from_pretrained("Raivatv24/suzuki-m1-gpt")
model = AutoModelForCausalLM.from_pretrained("Raivatv24/suzuki-m1-gpt")
tk = PreTrainedTokenizerFast(
tokenizer_file="/caminho/para/tokenizer.json", # baixou do repositório
eos_token="<|endoftext|>",
pad_token="<|pad|>",
unk_token="<|endoftext|>",
bos_token="<|endoftext|>",
model_max_length=256,
)
IDs especiais do tokenizador: <|endoftext|> = 0, <|pad|> = 1.
Dataset
Treinado sobre Raivatv24/Suzuki-m1 (JSONL, campo text), que mistura:
- Wikipédia em português
- C4 multilingual (filtrado pt)
- Wikisource (pt)
- Livros clássicos em português adaptados ao português moderno
- Legendas de filmes/séries (EN→PT)
- Texto de anime (romance/light novels em inglês)
- Problemas de matemática (MATH-500)
- Código Python de exemplo
- Revisões de filmes (IMDB)
- Raciocínio de alta qualidade (Fable reasoning)
Demos
- Gradio Space: https://huggingface.co/spaces/Raivatv24/Suzuki-m1-gpt (ZeroGPU)
- Streamlit: https://suzuki-m1-gpt.streamlit.app
Ambos recarregam o modelo automaticamente quando um checkpoint novo é publicado.
Uso pretendido
- Estudo de treino de LLMs do zero (pipelines completos)
- Geração de texto curto em português
- Fine-tune e experimentos de linguagem
Limitações
- Modelo pequeno (~23M params) e corpus limitado — expectativas de qualidade baixas; produz texto incoerente/experimental
- Mistura pt-BR/pt-PT e fontes derivadas podem conter ruído
- Contexto curto (256 tokens)
- Não é adequado para produção ou uso comercial sem avaliação
- Nesta fase inicial (passo 2000) o modelo ainda está "aprendendo a língua"; salidas podem conter sequências sem sentido
Licença
Modelo publicado sob cc-by-sa-4.0, derivado de um corpus com as mesmas restrições. Verifique os termos das fontes originais antes de uso comercial.