YAML Metadata Warning:empty or missing yaml metadata in repo card
Check out the documentation for more information.
AngstromE1-Nano
Open-source language model with Sparse Mixture of Experts, built from scratch for laptop training.
Features
- Sparse MoE โ sigmoid router with e_score_correction_bias (DeepSeek-V2 style)
- Grouped Query Attention โ GQA with per-layer QK-norm
- Partial RoPE โ rotary positional embeddings
- BPE tokenizer โ trained on custom corpus via
tokenizerslibrary - Safetensors export โ standard format for sharing weights
- Interactive chat โ CLI REPL for inference
Requirements
torch>=2.1.0
tokenizers>=0.15.0
safetensors>=0.4.0
numpy>=1.24.0
Quick Start
pip install -r requirements.txt
1. Prepare Data
python prepare_data.py
Merges data/train.txt, data/llms-full.txt, and data/repos_cloned/ into data/corpus.txt.
2. Train
python train.py
Trains a 8.5M parameter model on CPU (1-2 hours). Saves to:
checkpoints/medium_model.safetensorscheckpoints/medium_config.jsoncheckpoints/tokenizer.json
3. Chat
# Interactive mode (auto-loads medium model)
python -m angstrom_nano
# Single prompt
python -m angstrom_nano --prompt "def fibonacci" --max-tokens 30
# Specify model explicitly
python -m angstrom_nano --model checkpoints/medium_model.safetensors
Project Structure
angstrom_nano/
__init__.py # Package exports
__main__.py # CLI entry point
config.py # AngstromNanoConfig dataclass
model.py # Transformer + MoE implementation
tokenizer.py # BPE / char-level tokenizer
deploy.py # Inference wrapper + CLI
checkpoints/ # Saved models + tokenizer
data/ # Training corpus
train.py # Training script
prepare_data.py # Data preparation
Configuration
The medium config (default):
| Parameter | Value |
|---|---|
| vocab_size | 4096 |
| hidden_size | 192 |
| num_hidden_layers | 6 |
| num_attention_heads | 6 |
| num_key_value_heads | 3 |
| num_local_experts | 4 |
| max_position_embeddings | 256 |
See angstrom_nano/config.py for all options and AngstromNanoConfig.tiny() for a smaller test config.
Python API
from angstrom_nano.deploy import AngstromNano
nano = AngstromNano(model_path="checkpoints/medium_model.safetensors")
# Generate
output = nano.generate("def fibonacci", max_new_tokens=30)
# Chat
response = nano.chat("What is recursion?", max_new_tokens=100)
License
MIT
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐ Ask for provider support