devaneio

GPT pequeno (6,8M parâmetros) treinado do zero em português com o MiniGPT, uma implementação de GPT feita pra estudo. Escreve com a gramática e o vocabulário do português, mas não guarda fatos: o texto sai fluente e sem compromisso com a verdade.

Pra testar no navegador: Space edumoraes/devaneio. Ele roda o modelo em JavaScript, no navegador de quem acessa, com os pesos deste repositório.

Treino

Dados o começo do subset edu_high do GigaVerbo-v2: texto da web em português (FineWeb-2 e mC4) filtrado por qualidade educacional
Tokens vistos 150.061.312 (1 época)
Otimizador AdamW, lr 3e-04 com warmup de 200 passos e cosine até 1e-05, weight decay 0,1
Batch 32 sequências de 256 tokens
Precisão fp32
Tempo 52,9 min em GPU, 47.309 tokens/s
Val loss 2,655 (perplexidade 14,2)

Arquitetura

  • Decoder-only com 6 blocos pre-norm, d_model 256, 4 cabeças de atenção e FFN de 1024 com GELU
  • RoPE nas cabeças de atenção, scaled_dot_product_attention causal
  • Weight tying entre o embedding e a camada de saída
  • Contexto de 256 tokens
  • Tokenizer BPE próprio com vocabulário de 8.192. Os espaços são tokens separados, o que dá ~2,5 caracteres por token

Como usar

O modelo usa o código do MiniGPT, que vem junto neste repositório:

import json, sys
from huggingface_hub import snapshot_download
from safetensors.torch import load_model

pasta = snapshot_download("edumoraes/devaneio")
sys.path.insert(0, pasta)
from config import GPTConfig
from generate import gerar
from model import GPTModel
from tokenizer import carregar_tokenizer

modelo = GPTModel(GPTConfig(**json.load(open(f"{pasta}/config.json"))))
load_model(modelo, f"{pasta}/model.safetensors")
tokenizer = carregar_tokenizer(f"{pasta}/tokenizer.json")
print(gerar(modelo, tokenizer, "A chuva", max_tokens=100))

Limitações

  • É pequeno: inventa fatos e perde o fio depois de algumas frases.
  • Só tem pré-treino: continua textos, mas não segue instruções nem responde perguntas.
  • Mistura português do Brasil e de Portugal, como os dados de treino.
  • Pode reproduzir vieses e erros do texto da web em que foi treinado.
  • Caracteres raros (emoji, outros alfabetos) viram <UNK> e somem do texto gerado.

Licença

Apache-2.0 para os pesos e o código. Os dados de treino seguem as licenças das fontes do GigaVerbo-v2, listadas no card do dataset.

Downloads last month
56
Safetensors
Model size
7.03M params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Dataset used to train edumoraes/devaneio

Space using edumoraes/devaneio 1