Soup fine-tunes an 8B model on a 4 GB laptop GPU
The open CLI streams the frozen base from RAM so only LoRA deltas hit VRAM — SFT, DPO and GRPO in one command, ~120 tok/s on an RTX 3050, Apache 2.0.

Copy markdown
The base never fully lands in VRAM
Soup keeps the frozen base weights in system RAM and streams each layer into VRAM only for the matmul that needs it. A LoRA run’s peak footprint becomes the adapters plus activations, not the whole model — which is how an 8B fine-tune fits on a 4 GB card.
3.3 GB and ~120 tok/s on an RTX 3050
The author reports fine-tuning Llama-3.1-8B (NF4) at 3.32 GB peak VRAM and 119.6 tok/s on an RTX 3050 laptop, and Qwen2.5-3B (bf16) at 2.15 GB and 143 tok/s. Cards that can’t even load these models can now train adapters on them.
One command, no config hell
Install with `pip install "soup-cli[train]"`, then run `soup init`, `soup train`, `soup chat`. It auto-detects your GPU, sets batch size and quantization, and derives an eval for you — no SSH, no hand-written training YAML. Apache 2.0.
SFT, DPO, GRPO — plus reward-hack auto-mitigation
Beyond supervised fine-tuning it ships DPO, GRPO, PPO, KTO, ORPO and SimPO, and v0.71.26 added a closed-loop check that detects and corrects reward hacking mid-run, so an RLHF job doesn’t quietly learn to game its reward.
Build this weekend: a specialist 8B on your own data
With a gaming laptop and a few hundred examples, you can LoRA-tune an 8B to your codebase, support tickets or writing voice — no cloud rental. The tradeoff: it’s adapters over a frozen base, not a full fine-tune, and streaming keeps throughput at training, not serving, speed.