CoolFace
Modelpublic

dasdasddds/i_like_purple

sourceHugging Facemitupdated 8mo agoView on Hugging Face
1likes16downloads
Model Card

GPT-300M

A 334,808,064 parameter autoregressive transformer language model built entirely from scratch in PyTorch. No pretrained weights. No fine-tuning. Everything from zero.

Architecture

Input Token IDs
  ↓
Token Embedding (32,000 × 1,024)     — 32.8M params
  ↓
Rotary Position Embeddings (RoPE)     — 0 learned params
  ↓
┌─────────────────────────────────────────────────────┐
│  Transformer Block  × 24 layers  (12.6M each)      │
│                                                     │
│  RMSNorm → Multi-Head Attention → ⊕ Residual       │
│             16 heads × 64d                          │
│             4,194,304 params                        │
│                                                     │
│  RMSNorm → FFN (GELU) → ⊕ Residual                 │
│             1,024 → 4,096 → 1,024                   │
│             8,388,608 params                        │
└─────────────────────────────────────────────────────┘
  ↓
Final RMSNorm
  ↓
LM Head (weight-tied with embedding)  — 0 extra params
  ↓
Softmax → Next Token Probabilities

Parameter Breakdown

ComponentParametersPercentage
Token Embedding32,768,0009.8%
Attention Layers (×24)100,663,29630.1%
Feed-Forward Layers (×24)201,326,59260.1%
RMSNorm (×24 + final)50,1760.0%
LM Head0 (tied)
TOTAL334,808,064100%

Model Details

HyperparameterValue
Hidden dimension (d_model)1,024
Attention heads16
Head dimension64
Transformer layers24
FFN dimension (d_ff)4,096
Vocabulary size32,000
Max sequence length2,048
Position encodingRoPE (θ=10,000)
ActivationGELU
NormalizationRMSNorm (ε=1e-5)
Weight tyingYes (Embed ↔ LM Head)
BiasNone

Training Configuration

SettingValue
OptimizerAdamW (β₁=0.9, β₂=0.95)
Peak learning rate3e-4
Min learning rate3e-5
ScheduleCosine decay + linear warmup
Warmup steps2,000
Weight decay0.1
Batch size32 × 8 gradient accumulation
Max training steps600,000
Precisionbfloat16
Gradient clipping1.0

Usage

Loading the Model

python
from model import GPT300M
from config import GPT300MConfig
from tokenizer import BPETokenizer
import torch

# Load config, model, and tokenizer
config = GPT300MConfig()
model = GPT300M(config)

# Load trained weights
checkpoint = torch.load("pytorch_model.bin", map_location="cpu")
model.load_state_dict(checkpoint)
model.eval()

# Load tokenizer
tokenizer = BPETokenizer.load("tokenizer.json")

Chat with the Model

python
from chat import ChatBot

chatbot = ChatBot(model, tokenizer, config)
response = chatbot.chat("Hello! What is machine learning?")
print(response)

Interactive Chat

bash
python chat.py --checkpoint pytorch_model.bin

Training from Scratch

bash
# Quick test (tiny model)
python train.py --tiny

# Full 300M model
python train.py --data your_training_data.txt

# Multi-GPU
torchrun --nproc_per_node=4 train.py --data your_data.txt

Files

FileDescription
config.jsonModel configuration (HuggingFace format)
config.pyPython config class with all hyperparameters
model.pyFull transformer architecture (RoPE, MHA, FFN, KV-cache)
tokenizer.pyBPE tokenizer built from scratch
tokenizer_config.jsonTokenizer settings
special_tokens_map.jsonSpecial token definitions
dataset.pyDataset classes and data loading
train.pyTraining loop (DDP, mixed precision, scheduling)
chat.pyInteractive chatbot with streaming generation
visual_nn_3d.py3D matplotlib architecture visualization
requirements.txtPython dependencies
pytorch_model.binTrained weights (upload after training)
tokenizer.jsonTrained tokenizer (upload after training)

Hardware Requirements

ConfigGPU MemoryEst. Training Time
Tiny (debug)~1 GBMinutes
Full 300M~24 GB~3-5 days (4×A100)

Key Features

  • 100% from scratch — no pretrained weights, no HuggingFace Transformers dependency
  • Rotary Position Embeddings — better length generalization than learned positions
  • RMSNorm — faster than LayerNorm, equally effective
  • Flash Attention — via PyTorch 2.0 SDPA
  • KV-Cache — efficient autoregressive generation
  • Weight tying — saves ~33M parameters
  • Chat template — built-in support for multi-turn conversations
  • torch.compile — ready for PyTorch 2.0+ compilation

Citation

bibtex
@misc{gpt300m,
  title={GPT-300M: A 300-Million Parameter Language Model From Scratch},
  year={2025},
  url={https://huggingface.co/YOUR_USERNAME/gpt-300m}
}

License

MIT