FastSFT
Teach a small, weak model to answer like a big, smart one.
- 🧠 Parent — a big, powerful model. The teacher.
- 🐣 Child — a small, weak model. The student you're upgrading.
Parent ──ask tough questions──▶ Q&A dataset ──train──▶ Child
(big, (judge filters (small,
smart) out weak answers) fast)
Ask the Parent hard questions in the style you want, keep only the good answers, and train the Child on them. Result: a tiny model that mimics the big one's style — for a fraction of the size and cost. This is called distillation.
Why bother, instead of just calling the Parent every time? Cheaper (no per-token API bill), fits on your laptop, and yours to keep — no rate limits, no vendor lock-in.
Run it
Don't wish to install? Try the Colab playground — chat with an already-trained model instantly. With the option of creating your own dataset with a prompt and training your own SFT model.
Willing to try it locally with different combinations?
uv sync --extra local-training
echo "OPENROUTER_API_KEY=sk-or-..." > .env # free key at openrouter.ai
uv run trial_run.py
That's the whole pipeline — generate data, filter it, and train — running end to end with sensible defaults.
Open trial_run.py locally to play around: change the PROMPT to whatever persona you want, swap the CHILD_MODEL_ID, tweak a config value. Every field is commented with what it does and what else you could try. Edit, save, rerun.
Want more?
- TUTORIAL.md — a slower, narrated walkthrough (CLI usage, troubleshooting, cloud training).
- data_generation_tutorial.md, training_tutorial.md, evaluation_tutorial.md — deep dives on each pipeline stage.
Built on distilabel, OpenRouter, Modal, Hugging Face, and PEFT.
Personal project, built for fun to learn about how post-training in LLM models looks like. Have fun with it, hopefully it's accessible to all! (won't be actively maintained)
Metadata
Release files for fastsft 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| fastsft-0.2.1.tar.gz | 328.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| fastsft-0.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 406.4 kB
Release files / fastsft-0.2.1.tar.gz
| Download URL | fastsft-0.2.1.tar.gz |
|---|---|
| Size | 328.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a18d41122e76c9b65af63b378905d70ffcbef299d72cfbab04b91a3de2cfbc6f
|
|
BLAKE2b-256 checksum How to use checksums |
1f97ff9c6285519fd48c8d1ef93ba406052f6a859a00561c287bbb7dcaf6b6aa
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / fastsft-0.2.1-py3-none-any.whl
| Download URL | fastsft-0.2.1-py3-none-any.whl |
|---|---|
| Size | 78.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6f6ac07c204277dce4e470c2f458e6df747c5de00659afd8a7c7e1962391d27c
|
|
BLAKE2b-256 checksum How to use checksums |
20fa77dae1f1c9c0d05b4730d5af0deb28bd11b7d53e2ce6b1d51f68ff052472
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|