Recipes
Soup includes 170 ready-made configs for popular models — v0.31 grew the catalog to 80, v0.51 added 26 new families (GPT-OSS / GLM 4.6 / Kimi K2 / MiniMax M2 / QwQ-32B / QVQ-72B / Granite 4 / Voxtral / DeepSeek-OCR and more), v0.52 added 6 TTS / BitNet recipes (Orpheus / Sesame-CSM / Llasa / Spark / Oute / Falcon-E; the Sesame-CSM, Spark and Falcon-E recipes were removed in v0.76.0), v0.62 added 3 RAG recipes (raft-llama3-8b, ra-dit-retriever, ra-dit-llama3-8b), v0.71.24 added 17 SFT recipes for the open-weight models released February to June 2026 (Qwen 3.5 / Qwen 3.6 / DeepSeek-V4 / GLM-5.1 / Kimi K2.5 / Kimi K2.6 / MiniMax M3; one of the 17 was removed in v0.76.0, see "Removed in v0.76.0" below), v0.71.26 added qwen2.5-coder-7b-sft (catalog 133 → 134), v0.71.30 added 3 GRPO rollout-env recipes (grpo-env-calculator, grpo-env-retrieval-qa, grpo-env-guess-number, catalog 134 → 137), v0.71.31 added online-dpo-smollm2-135m (catalog 137 → 138), and v0.71.32 added the ASR recipes whisper-tiny-asr / whisper-base-asr / whisper-large-v3-asr plus smolvlm-256m-sft (catalog 138 → 142), v0.73.3 added qwen3.5-4b-pretrain and deepseek-v4-flash-grpo (catalog 142 → 144), and v0.74.0 added nineteen more across the Qwen2.5-Coder and Qwen2.5-Math sizes, the DeepSeek-R1-Distill families in SFT and DPO, SmolLM3, and GRPO and DPO variants for the 2026 MoE giants (catalog 144 → 163), and v0.75.0 added four more, two DPO shapes for bases that already shipped SFT and GRPO plus two small Qwen3.5 GRPO recipes a contributor could actually run a few steps of (catalog 163 → 167), and v0.76.0 added nine and removed six (catalog 167 → 170): DPO and GRPO variants for DeepSeek-V4 Pro, Kimi K2.5, Qwen3.6 27B and Qwen3.6 35B-A3B, plus qwen3.5-35b-a3b-grpo, against the removal of six recipes that could not run (see "Removed in v0.76.0" below). Thirty-eight existing recipes were edited as well, some in more than one way: seven base model IDs were corrected, nine parameter-count labels were corrected, and 23 recipes now set lora.dropout: 0 (22 MoE recipes that keep moe_lora, where peft refuses dropout on fused expert parameters, and minimax-m3-sft, which kept the line when it dropped moe_lora). Three more (oute-tts, llasa-tts and online-dpo-smollm2-135m) were edited in other ways. No need to write YAML from scratch.
List Recipes
soup recipes listShows all available recipes with model name, task, and description.
Search Recipes
# Search by model name
soup recipes search llama
# Search by task type
soup recipes search grpo
# Search by model size
soup recipes search 8bShow Recipe
# Print full YAML to stdout
soup recipes show llama3.1-8b-sftUse a Recipe
# Copy recipe to soup.yaml
soup recipes use llama3.1-8b-sft
# Custom output path
soup recipes use qwen2.5-7b-dpo --output my-config.yamlAvailable Recipes (170 total)
| Category | Models |
|---|---|
| General SFT/DPO/GRPO/KTO/ORPO/SimPO/IPO/PPO/Embedding/Pretrain | Llama 3.1 / 3.2 / 4 (Scout + Maverick), Qwen 2.5 / 3 (incl. 30B MoE + 235B-A22B), Mistral, Mixtral 8x7B/8x22B, Gemma 3, Phi-4, DeepSeek R1 / V3 + all 6 R1-Distill sizes |
| 2026 model families (v0.71.24, 16 SFT recipes) | Qwen 3.5 (0.8B / 2B / 4B / 9B / 27B + 35B-A3B / 122B-A10B / 397B-A17B MoE, Apache-2.0, 262K ctx, native vision), Qwen 3.6 (27B + 35B-A3B, Apache-2.0), DeepSeek-V4 Flash / Pro (MIT), GLM-5.1 (MIT, 754B), Kimi K2.5 / K2.6 (Modified MIT, ~1T), MiniMax M3 (428B, MiniMax Community License — commercial use needs a separate agreement) |
| v0.74.0 (19 new, contributed) | Coding and math specialists qwen2.5-coder-{1.5b,14b,32b}-sft and qwen2.5-math-{1.5b,7b}-sft; the R1-Distill line completed with deepseek-r1-distill-{qwen-1.5b,qwen-7b,llama-8b}-sft and the matching -dpo trio; smollm3-3b-sft (the catalog had SmolLM2 in three sizes and no SmolLM3); qwen3.8-27b-sft (dense 27B text-only, Apache-2.0, DeepSpeed ZeRO-2); and preference and reasoning variants for the 2026 MoE giants, qwen3.5-{9b-dpo,9b-grpo,35b-a3b-dpo}, glm-5.1-{dpo,grpo} and kimi-k2.6-grpo. The giants are not trained by anyone here, so no hyperparameter in them is a measured recommendation |
| v0.76.0 (9 new, 6 removed) | New: deepseek-v4-pro-{dpo,grpo}, kimi-k2.5-{dpo,grpo}, qwen3.5-35b-a3b-grpo, qwen3.6-27b-{dpo,grpo} and qwen3.6-35b-a3b-{dpo,grpo}. These are preference and reasoning variants for the 2026 MoE giants and a 27B dense model. The giants are not trained by anyone here, so no hyperparameter in them is a measured recommendation. Removed: see below |
| v0.73.3 (2 new, contributed) | qwen3.5-4b-pretrain (continued pre-training on Qwen/Qwen3.5-4B-Base: plaintext data, one epoch, QLoRA 4-bit), deepseek-v4-flash-grpo (GRPO reasoning on deepseek-ai/DeepSeek-V4-Flash with MoE LoRA and gradient checkpointing) |
v0.51 catalog expansion (26 new; cogito-v2-sft removed in v0.76.0) | GPT-OSS 20B / 120B, GLM 4.6 / 5, Kimi K2 / K2-Thinking, MiniMax M2, QwQ-32B, QVQ-72B, Granite 4, LFM2, Cogito v2, Mistral Small 3 / Medium 3.5, Magistral / Devstral / Ministral, MedGemma, EmbeddingGemma, LLaVA-Next, InternVL 3.5, Voxtral, Baichuan 2, Qwen-Image, DeepSeek-OCR, Paddle-OCR-VL |
| Vision (multimodal) | Llama-3.2-Vision (11B + 90B), Pixtral-12B, Qwen2-VL (7B + 72B), InternVL 2.5 / 3.5, LLaVA-Next, MiniCPM-V 2.6, Qwen-Image, DeepSeek-OCR, Paddle-OCR-VL |
| Audio (speech) | Qwen2-Audio, SeamlessM4T v2 (translation), Whisper-large-v3 (ASR), Voxtral |
ASR fine-tuning (v0.71.32, task: asr) | Whisper tiny (39M) / base (74M) — live on a 4 GB GPU — and large-v3 (1.5B, 16 GB+); built-in WER/CER, see ASR fine-tuning |
| TTS (v0.52) | orpheus-tts-sft, llasa-tts and oute-tts. The Sesame-CSM and Spark-TTS recipes were removed in v0.76.0, see Modality II for what each family needs |
| BitNet (v0.52) | No recipe at v0.76.0. falcon-e-bitnet-sft was removed: quantization: bitnet_1.58 is refused at config load because BitNet training is not implemented, see Modality II. soup export --format tq1_0 is the BitNet path that works |
| RAG (v0.62) | raft-llama3-8b, ra-dit-retriever, ra-dit-llama3-8b |
| Reasoning | All 6 DeepSeek-R1-Distill sizes (Qwen 1.5B/7B/14B/32B + Llama 8B/70B), Qwen3-Coder 30B, Qwen3-30B-A3B reasoning, Phi-4 reasoning, QwQ-32B |
| Small / edge / mobile | SmolLM2 (135M / 360M / 1.7B), SmolLM3 3B, Qwen2.5 (0.5B / 1.5B / 3B), Gemma 2 2B, Phi-3.5-mini, Llama-3.2 (1B / 3B), LFM2 |
| Domain specialists | BioMistral 7B, Meditron 7B, MedGemma (medical) — CodeLlama (13B / 70B), Magicoder 6.7B (code) — Mathstral 7B and Qwen2.5-Math 1.5B / 7B (math) — Qwen2.5-Coder 1.5B / 14B / 32B (code) — Llama-2-13b-finance — Nemotron-4 340B — EmbeddingGemma |
| Multimodal reasoning | Llama-3.2-Vision GRPO (the GRPO trainer is text-only at v0.76.0, see GRPO Plus), Pixtral DPO (since v0.76.0 task: dpo with modality: vision loads a vision-language checkpoint with its processor, but only for text-only preference rows, and the recipe's llava data format has no chosen and rejected columns, so it is still not usable as shipped, see Before you run one) |
| Multi-GPU | llama3-70b-fsdp2, qwen3-32b-zeropp, deepseek-v3-pipeline (a scaffold: its pipeline setting is validated but the run is data-parallel, see multi-GPU) |
| Apple Silicon (MLX) | llama3.1-8b / qwen3-8b / gemma3-4b SFT-MLX |
| Tool-calling / agentic | qwen3-8b-tools, llama4-scout-tools |
Each recipe ships with LoRA rank, learning rate, batch size, and quantization tuned to the model. Use soup recipes show <name> to print the full YAML. A recipe that loads through the config schema is not necessarily one that runs, and the giant MoE recipes in particular are not trained by anyone here; read Before you run one first.
"Native vision" in the Qwen 3.5 row describes the base model, not the recipes. Every Qwen 3.5, 3.6 and 3.8 recipe sets modality: text, so they load the language model alone through AutoModelForCausalLM, without the vision tower. They train the text model only and are not multimodal fine-tunes.
Removed in v0.76.0
Six recipes that could not run were removed, so soup recipes use or soup recipes show of any of these names now exits 1 with Recipe not found:
| Removed | Why, from upstream's changelog |
|---|---|
cogito-v2-sft, gemma3-9b-sft | No compatible replacement base exists for their shipped definitions (#1122) |
mistral-large-3-sft | mistralai publishes Mistral-Large-3 in a native params.json + consolidated-* layout with no config.json, which AutoConfig cannot read (#1398) |
falcon-e-bitnet-sft | BitNet 1.58 training configs are refused at config load, because BitNet training is not implemented (#825) |
sesame-csm-tts | Sesame CSM is refused at config load until Soup has a native multimodal trainer (#265) |
spark-tts | Spark-TTS raw-audio live-codec configs now fail closed at config parse (#265) |
minimax-m3-sft stays, but it now sets modality: vision so SFT builds the vision-language wrapper and keeps LoRA on the language tower; its processor is custom code, so it needs soup train --trust-remote-code.
Check a recipe before you download it
soup recipes verify # every shipped recipe, and the templates
soup recipes verify --no-templates # recipes only
soup recipes verify --config soup.yaml # one config of your own
soup recipes verify --jsonsoup recipes verify answers one question for each config: can the LoRA adapter this config asks for attach to this base model? It builds the base's architecture on the meta device from its config.json alone (cut down to a few layers, which is enough for the module names to repeat), then runs Soup's own target resolution and the real peft attach, using the model class that config's trainer would load. No weights are downloaded and no remote code is run, but config.json for each base is fetched from the Hub, so catalogue mode makes one request per config and needs network access (set HF_TOKEN to check a gated repo). It needs the training stack (pip install "soup-cli[train]"); without torch, transformers and peft it exits 1 and names the fix.
Each config gets one of four verdicts:
| Verdict | Meaning |
|---|---|
attaches | The adapter attached. The summary counts these and, if any adapted expert modules or a vision tower, says so |
cannot_attach | Target resolution or the peft attach failed. The table names the stage (resolve, build or attach) and the reason |
no_adapter | There is no adapter to attach: lora.r: 0 (full fine-tuning), backend: mlx (which attaches through a different path), a task whose trainer never builds one, or classifier_lora / asr_lora left off |
unverified | The check could not be made here: a gated repo (set HF_TOKEN), a base that needs trust_remote_code, a config this transformers cannot read, or a config.json that could not be fetched. It is reported and never counted as a failure |
Exit codes: 0 when everything that could be checked attaches, 2 when any config cannot attach, 3 for a missing or unparseable --config or a mistyped option, 1 for a crash or a missing or broken torch, transformers or peft. --json prints one row per config with name, base, task, verdict, model_type, adapted, expert_modules, vision_modules and detail.
Exit 0 can mean nothing was checked. unverified never changes the exit code, and a config whose config.json cannot be fetched is unverified, so on a machine with no network (or HF_HUB_OFFLINE=1) the command can print 0 attach, 0 cannot, N have no adapter, M unverified. and exit 0. A CI job should read the summary line or the --json verdicts, not only the exit code. A config that attaches here has loaded its adapter; it does not mean the recipe trains, or that its base fits your card.
soup recipes verify was checked here only as far as its refusals: the help text, the exit-1 message when torch is missing, and the exit 3 for an unknown option were run. The verdicts and the offline behaviour above are read from the v0.76.0 code (commands/recipes.py and utils/attach_preflight.py), not run, because the check needs torch.
Customizing Recipes
Recipes are a starting point. After soup recipes use, edit the generated soup.yaml to:
- Point to your dataset (
data.train) - Adjust epochs, learning rate, or LoRA rank
- Add backend: unsloth for 2-5x speedup
- Enable evaluation with
evalconfig section
Soup is free and Apache-2.0. If it saved you a training run, starring the repo costs nothing and helps most. You can also fund the GPU time behind the work a 4 GB laptop cannot reach.