Downloads · 30 days
0
JoaoPauloCamargos/slm-gpt
slm-gpt is a text generation model from JoaoPauloCamargos. Use it when you need the model to write or continue text. It is set up for pytorch. The card lists the license as mit.
Small Language Model decoder-only estilo GPT, treinado do zero. Arquitetura moderna com RoPE, atenção causal multi-head, MLP SwiGLU, RMSNorm (pré-normalização) e weight tying entre embedding e cabeça de saída. Otimiza…
Downloads · 30 days
0
Access
Public
Updated Jun 7, 2026
Repo size
4.7 GB
Likes
0
Public
Click a slice to open those files.
.pt1 GB · 100%
From the Hugging Face model README
Small Language Model decoder-only estilo GPT, treinado do zero. Arquitetura moderna com RoPE, atenção causal multi-head, MLP SwiGLU, RMSNorm (pré-normalização) e weight tying entre embedding e cabeça de saída. Otimizado com Muon (matrizes internas) + AdamW (embedding/norms).
tiktoken, encoding gpt2)| Parâmetro | Valor |
|---|---|
n_layer | 16 |
n_head | 10 |
n_embd | 640 |
head_dim | 64 |
vocab_size | 50304 |
block_size | 1024 |
rope_theta | 10000 |
bias | False |
dropout | 0.0 |
| Item | Valor |
|---|---|
| Dataset | FineWeb (~100B tokens de amostra) |
| Otimizador | Muon (lr 1e-3, momentum 0.95, match_rms_adamw) + AdamW |
| LR de pico (AdamW) | 9e-4 · warmup 2500 · cosine até 50k |
| Weight decay | 0.1 (AdamW) · 0.0 (Muon) |
| Grad clip | 1.0 |
| Batch efetivo | 12 × 42 grad-accum × 1024 ≈ 500k tok/passo |
| Precisão | bfloat16 |
| Iteração (checkpoint) | 46.400 |
| Melhor val loss | 2.909 |
Curvas de treino em loss_curve.png / lr_schedule.png; métricas brutas em metrics.csv.
ckpt.pt)torch.load(..., weights_only=False) retorna um dict com:
| Chave | Descrição |
|---|---|
model | state dict dos pesos |
optimizer | estado do(s) otimizador(es) — para retomar o treino |
model_config | dict com a config da arquitetura (GPTConfig) |
train_config | dict com a config de treino (TrainConfig) |
iter_num | iteração em que foi salvo (46.400) |
best_val_loss | melhor val loss até então (2.909) |
loaders | posição dos data loaders (shard/offset) para resume |
O código do modelo (model/, data/tokenizer.py) está no repositório do
projeto. Com ele no path:
import torch
from model import GPT, GPTConfig
# 1. carregar checkpoint
ckpt = torch.load("ckpt.pt", map_location="cpu", weights_only=False)
# 2. reconstruir o modelo a partir da config salva
config = GPTConfig(**ckpt["model_config"])
model = GPT(config)
model.load_state_dict(ckpt["model"])
model.eval()
# 3. gerar texto (o GPT já embute o tokenizer GPT-2)
prompt = "The history of artificial intelligence"
idx = torch.tensor([model.tokenizer.encode(prompt)], dtype=torch.long)
out = model.generate(idx, max_new_tokens=100, temperature=0.8, top_k=200)
print(model.tokenizer.decode(out[0].tolist()))
O optimizer e loaders no checkpoint permitem continuar exatamente de onde
parou (ver training/checkpoint.py e training/train.py --resume).
Modelo pequeno de pré-treino, sem fine-tuning de instrução nem alinhamento. Gera texto em inglês no estilo do FineWeb e pode produzir conteúdo incorreto, repetitivo ou enviesado. Uso educacional / de pesquisa.