Overview
Soup is a free, open-source command-line tool for fine-tuning and post-training large language models. You describe the whole job in one `soup.yaml` file — the base model, the dataset, the task, the LoRA settings — and run `soup train`. Batch size, GPU detection and quantization are chosen for you, and nothing needs an SSH session into a GPU box.
Its distinguishing feature is layer streaming, an opt-in beta mode that keeps the frozen base model in system RAM and feeds it to the GPU one decoder layer at a time. On an RTX 3050 Laptop with 4 GB of VRAM, the project measured Llama-3.1-8B-Instruct with NF4 quantization running at 119.6 tokens per second in a 3.32 GB peak, bit-exact against a normal resident run. Layer streaming also covers the preference losses DPO, ORPO, SimPO and KTO by reusing the same streamed base with its adapters switched off, rather than loading a second reference model.
Within the fine-tuning framework category, Soup aims at the single-machine end: it is a CLI plus a config schema rather than a training library you import. It covers supervised fine-tuning, preference tuning (DPO, GRPO, PPO, KTO, ORPO, SimPO, IPO, BCO), tool-calling, pre-training and distillation, and it can merge adapters and export to GGUF, ONNX, TensorRT, AWQ, GPTQ or BitNet when the run is finished.
What it does
- One YAML config plus `soup train` — batch size, GPU detection and quantization are handled automatically
- Layer streaming (beta): keeps the frozen base in RAM and streams decoder layers to VRAM, so an 8B model fits a 4 GB card
- Seventeen starting templates, including `chat`, `code`, `tool-calling`, `medical`, `reasoning`, `vision`, `moe` and `longcontext`
- Supervised fine-tuning plus preference tuning with DPO, GRPO, PPO, KTO, ORPO, SimPO, IPO and BCO
- A wide PEFT menu — DoRA, LoRA+, rsLoRA, VeRA, OLoRA, NEFTune, PiSSA, ReLoRA, GaLore — and multi-GPU training via DeepSpeed or FSDP
- Adapter merging and export to GGUF, ONNX, TensorRT, AWQ, GPTQ and BitNet
- `soup reward synth` builds a deterministic, committable reward verifier from a JSONL of reference outputs and refuses to emit one that fails calibration
Getting started
Soup is a Python 3.10–3.12 command-line application. Install it with its own environment, create a config from a template, then train and test the result. The light install covers config and data commands; fine-tuning needs the `[train]` extra.
Install Soup
pipx or `uv tool` give the CLI its own environment. Use plain pip instead if you are already inside a virtualenv, a Colab notebook or a Docker image, or if you want to import `soup_cli` from your own code. Note the double quotes around the extra — that spelling works in every shell.
pipx install "soup-cli[train]"
# or, inside an existing environment
pip install "soup-cli[train]"Create a config
Run the interactive wizard, or start from one of the bundled templates such as `chat`, `code`, `tool-calling`, `reasoning` or `vision`.
soup init # interactive wizard
soup init --template chat # or start from a templateDescribe the run in soup.yaml
A complete config names the base model, the task, the dataset and the training settings. `config/schema.py` is the source of truth for every field, and unknown keys are reported at load with a suggested correction.
base: meta-llama/Llama-3.1-8B-Instruct
task: sft
data:
train: ./data/train.jsonl
format: alpaca
val_split: 0.1
training:
epochs: 3
lr: 2e-5
batch_size: auto
lora:
r: 64
alpha: 16
quantization: 4bit
output: ./outputTrain, test and ship
Train from the config, chat with the result to sanity-check it, then push the adapter to the Hub or export it for a local runtime.
soup train --config soup.yaml
soup chat --model ./output
soup push --model ./output --repo you/my-model
soup merge --adapter ./output
soup export --model ./output --format gguf --quant q4_k_mCommands and code are distilled from the project's own documentation — always check the official repo for the latest.
When to use it
- Fine-tune an 8B open model on a laptop GPU with as little as 4 GB of VRAM using layer streaming
- Adapt a base model to your own chat, code or tool-calling data with a single YAML file and no training loop to write
- Run preference tuning with DPO, ORPO, SimPO or KTO without loading a second reference model
- Export a finished adapter to GGUF for Ollama or llama.cpp, or merge it back into the base model
How Soup compares
Soup alongside other open-source fine-tuning frameworks tools AI/TLDR tracks, ranked by GitHub stars.
| Tool | Stars | What it does |
|---|---|---|
| Unsloth | ★ 75.7k | A library that speeds up LoRA and QLoRA fine-tuning while cutting memory use, aimed at training models on a single GPU. |
| LLaMA-Factory | ★ 74.6k | An end-to-end training suite with a web UI that covers pre-training, supervised fine-tuning, and RLHF for hundreds of LLMs and multimodal models. |
| PEFT | ★ 21.6k | Hugging Face's library of parameter-efficient fine-tuning methods such as LoRA, DoRA, and prompt tuning that train small adapters instead of full models. |
| FinGPT | ★ 21.2k | FinGPT is an open-source project of financial LLMs, fine-tuned with LoRA on news and tweet data for tasks like sentiment analysis, relation extraction, and stock-move forecasting. |
| ms-swift | ★ 15.5k | ModelScope's framework for fine-tuning and deploying 600+ LLMs and 300+ multimodal models, supporting PEFT and full-parameter SFT, DPO, and GRPO. |
| LitGPT | ★ 13.7k | An open-source toolkit from Lightning AI to pretrain, finetune, and serve 20+ large language models, each written from scratch for speed and full control. |
| Axolotl | ★ 12.4k | A config-driven tool for fine-tuning and post-training open LLMs that supports SFT, LoRA/QLoRA, DPO, GRPO, and multi-GPU training across many model families. |
| Soup | ★ 5.4k | One YAML, one command — fine-tune an 8B model on a 4 GB laptop GPU |