SMOL-GPT A minimal PyTorch implementation for training your own small LLM from scratch. Designed for educational purposes and simplicity, f…
SMOL-GPT A minimal PyTorch implementation for training your own small LLM from scratch. Designed for educational purposes and simplicity, f…
A minimal PyTorch implementation for training your own small LLM from scratch. Designed for educational purposes and simplicity, featuring efficient training, flash attention, and modern sampling techniques.
pip install -r requirements.txtRequirements:
python preprocess.py prepare-dataset --vocab-size 4096python train.pyTraining and validation loss are logged in out/logs/. To visualize using TensorBoard, run:
tensorboard --logdir=/out/logspython sample.py \
--prompt "Once upon a time" \
--num_samples 3 \
--temperature 0.7 \
--max_new_tokens 500# Download tokenizer
wget https://huggingface.co/OmAlve/TinyStories-SmolGPT/resolve/main/tok4096.model -P data/
# Download pre-trained checkpoint
wget https://huggingface.co/OmAlve/TinyStories-SmolGPT/resolve/main/ckpt.pt -P out/python sample.py \
--prompt "Once upon a time" \
--tokenizer_path data/tok4096.model \
--ckpt_path out/ckpt.pt \
--num_samples 3 \
--max_new_tokens 200 \
--temperature 0.7The provided checkpoint was trained on the TinyStories dataset.
Architecture:
~4 Billion Tokens for around 18.5 hoursValidation Loss - 1.0491
……Key parameters (modify in config.py):
Model Architecture:
GPTConfig(
block_size=512, # Context length
n_layer=8, # Number of transformer layers
n_head=8, # Number of attention heads
n_embed=512, # Embedding dimension
dropout=0.2, # Dropout rate
bias=False, # Use bias in layers
use_rotary=False, # Toggle rotary embeddings
)Training:
TrainingConfig(
batch_size=64,
max_iters=30000,
learning_rate=6e-4,
weight_decay=0.1,
grad_clip=1.0,
warmup_iters=1000
)om-alve-smolgpt/
├── config.py - Model & training configuration
├── dataset.py - Data loading & preprocessing
├── model.py - GPT model implementation
├── preprocess.py - Dataset preparation scripts
├── sample.py - Text generation script
├── tokenizer.py - Tokenizer wrapper
└── train.py - Main training loopContributions welcome! Please open an issue or PR for:
Note: This implementation is inspired by modern LLM training practices and adapted for educational purposes. For production use, consider scaling up model size and dataset.
No open issues yet, or sync has not completed.