Lean install + live wiring (v0.71.0 → v0.71.35)
The v0.71 line is two stories plus a run of capstones: a leaner install, a release-long live-wiring sweep that turned the entire schema-first roadmap into working code, and native Spectrum targeted training. v0.71.24 expanded the recipe catalog to 133 with the 2026 open-weight model families, v0.71.25 added [`soup ship`](/docs/soup-ship) (the one-command SHIP / DON'T-SHIP verdict), v0.71.26 closed the RL loop with reward-hacking auto-mitigation, v0.71.27 "Fine-tune Doctor" added a pure-CPU pre-flight (`soup data doctor` + soup data lint), v0.71.28 shipped the [`soup mcp serve`](/docs/mcp-server) MCP server, and v0.71.29 added [`soup shrink`](/docs/soup-shrink) (one-command depth pruning + distill-heal with a SHIP / DON'T-SHIP perplexity verdict), v0.71.30 let a Process Reward Model drive GRPO (PRM-guided GRPO), v0.71.31 shipped the judge-in-the-loop suite (Online DPO, best-of-N & Evol-Instruct, and a pairwise judge win-rate for `soup ship`), v0.71.32 added [ASR fine-tuning](/docs/asr-fine-tuning) (task: asr fine-tunes Whisper locally, with built-in WER/CER), v0.71.33 shipped [`soup draft`](/docs/soup-draft) (measure whether speculative decoding pays off before you enable it, and the measurement said no on our own pair), v0.71.34 added [adapter algebra](/docs/adapter-arithmetic) and [LISA](/docs/lisa), and v0.71.35 shipped the [compliance pack](/docs/compliance-pack) (regulation-shaped init templates, soup card model-card autogen, a soup ci init PR gate, and GGUF export that finally works on Windows). The test suite grew from 11,824 to 16,001 across 313 files.
v0.71.0 — the install split (breaking)
pip install soup-cli is now a light, PyTorch-free CLI + data-tools install. The heavy training stack (torch, transformers, peft, trl, datasets, bitsandbytes, accelerate) moved to a [train] extra.
pip install soup-cli # light: CLI + config + data tools, no PyTorch
pip install 'soup-cli[train]' # add the training stack to fine-tune
pip install 'soup-cli[all]' # train + serve + ui + datasoup init,soup data …, and the inspection commands work on the bare install;soup trainneeds[train].- A missing heavy dependency surfaces a friendly *"Training needs the [train] extra. Run: pip install 'soup-cli[train]'"* message.
- Python 3.10+ is now the floor (raised from 3.9). The repo moved to a
src/layout, the coverage gate rose to 77%, and apy.typedmarker ships typed hints.
v0.71.1 → v0.71.14 — the roadmap goes live
Almost everything that previously shipped *"schema-first, live next patch"* is now real, validated end-to-end on tiny models (SmolLM2-135M / a real RTX 3050).
Training & RL (v0.71.11)
--reward-hack-detector info_rm|rm_ensemble— live GRPO callback (InfoRM cluster-separation or RM-ensemble divergence), halts on HACK.--echo-trap-enabled— live RAGEN n-gram-repetition detector, halts on TRAP.--uld-strategy wasserstein|topk_align— real cross-tokenizer distillation loss (Llama → Mistral, no shared vocab).--minillm-enabled— live teacher-mixed, length-normalised reverse-KL with a pretrain anchor.--rl-checkpoint-save-every-steps N— real mid-epoch PPO/GRPO checkpoints (adapter + optimizer + manifest), pruned to--keep-last.soup iterative-dpo— runs the full sample → RM-score → re-pair → DPO-train loop over N rounds.- The GRPO reference-model EMA now updates in place (no full-state-dict copies).
Architecture & PEFT (v0.71.12)
task: distillgainsdistill_mode: token|sequence(sequence-level hard-label KD).- Classifier / reranker / cross-encoder LoRA attaches to the head.
- LLaMA Pro block expansion is per-architecture (Llama / Qwen / Mistral); LongLoRA S² shifted-sparse attention installs its forward override; Mixture-of-Depths (
use_mod: true) routes a top-k token subset per layer. soup serve --bank <bank.json>— VeRA / VB-LoRA multi-tenant serving, per-requestX-User-Id, ~KB per persona.task: moe_lora_routing— MoLE per-token gate over N frozen task LoRAs (only the router trains).
RAG, steering & editing (v0.71.9 – v0.71.10)
data.format: raft— answer-only span-mask training with[doc-N]citation labels;soup ra-ditis the two-stage retriever → generator orchestrator with Registry auto-link.soup steer train/apply+soup serve --steer— CAA / ITI / RepE control vectors at decode time.soup eval citation— precision / recall / F1 over RAFT rows.soup edit set— live ROME / MEMIT / AlphaEdit rank-1 weight edits with an SQLite EditGovernor; live GRACE codebook.soup train --task unlearn— live NPO / SimNPO / RMU.
Probes & eval (v0.71.7 – v0.71.8)
- Real linear-probe math with operator-supplied weights;
soup probe sae-diff --auto-download(allowlisted SAE from the Hub);soup probe truth/soup probe harm;soup probe interference --measure(live PEFT multi-adapter N×N matrix);soup train --capture-activations. - Live runners for
soup advise --probe-model,soup tunability --live,soup eval capability --live,soup eval behavior, andsoup diagnose.
Data engineering (v0.71.6)
soup buildmaterialises datasets (5 built-in transforms, incremental re-tokenise-only-changed-rows via a SQLite state store).soup data gen-magpiegenerates via chat-template-prefix harvest (ollama/vllm, SSRF-hardened).soup eval irt-subsetadds 2PL / 3PL fits.
Prompt-compile (v0.71.13, [compile] extra)
soup compile,soup distill-prompt,soup compile-tools, andsoup local-rl train(a real nightly DPO/KTO/ORPO trainer) are live.
Governance & supply chain (v0.71.2 – v0.71.3)
- Real ed25519 detached signatures for
soup adapters sign/soup attest([sign]extra). - Anti-AI-jacking trust-on-first-use namespace pins on Hub downloads; automatic license auto-detection + a backdoor-scan gate at
soup adapters merge. soup train --track-energy(codecarbon offline kWh / CO2); PDF Annex XI/XII docs; Soup Can manifest v3 with embedded in-toto attestations; a~/.soup/audit.jsonlaudit log on every command; airgap reproducibility receipts.
Export & serve finale (v0.71.14)
soup merge-sharded-fsdp-weights— live FSDP shard consolidation into one.safetensors(no arbitrary pickle exec).soup serve --kv-cache-type bf16|f16|q8_0|fp8— live KV-cache typing on the transformers backend.- ONNX export verified end-to-end. GGUF / AWQ / GPTQ export QA and HF Spaces deploy remain
infra-blocked.
v0.71.15 → v0.71.23 — the stub tail closes, and Spectrum lands
With the roadmap live, the patch chain closed the remaining stubs and added new capability, all validated on a real RTX 3050 / SmolLM2 box (hardware-only paths ship BETA-gated, never faked).
Native Spectrum targeted training (v0.71.23)
soup spectrum scan --model <id> --top-percent 50 streams a model's safetensors one tensor at a time (no model load, peak RAM is the largest single matrix), computes a singular-value SNR per weight with a Marchenko-Pastur noise threshold, and prints a ready-to-paste training.unfrozen_parameters block. Full-fine-tune only the high-signal layers, scanning even a very large model on a CPU box. See Spectrum targeted training.
Serve & RAG finish (v0.71.17)
soup serve --mole <dir>— serve-time MoLE blends N frozen task LoRAs per token at decode (companion to the v0.71.12 train-time gate).soup serve --bankresolves the active VeRA / VB-LoRA user per request via theX-User-Idheader (multi-worker safe, no cross-request leak).- RAFT distractors get an epoch-aware shuffle salt;
soup diagnose --citation-stylethreads the style + seed into the live citation probe.
Distill & agent depth (v0.71.18, KV-cache in v0.71.22)
- MiniLLM true on-policy rollout (Gu et al. §3.1), with the O(L²) per-step cost resolved by a cached
past_key_valuespath. --uld-strategy wasserstein_aligned— character-span alignment for fully-disjoint tokenizers (GPT-2 BPE ↔ Llama SentencePiece).soup agent eval --sandbox— execute tool-call predictions in the v0.25 RLVR sandbox.soup train --cloud modal— render a serverless Modal GPU app from yoursoup.yaml(plan-only by default;--cloud-submitfor live).
Knowledge-edit depth (v0.71.16)
- ROME / MEMIT / AlphaEdit now edit GPT-2 (
Conv1D) and Mixtral, not just Llama. soup edit set --method rome --cov-corpus <jsonl>— covariance-preconditioned ROME (the genuine closed form; falls back toC=Iwithout a corpus).
Modality II + precision go live, BETA-gated (v0.71.19 – v0.71.21)
- TTS trainer live for Orpheus / Sesame-CSM / Llasa / Spark / Oute (
task: tts); BitNet 1.58-bit trainer +soup export --format bitnet|tq1_0; MoE expert quant +train_router_only. fp8_attention+nvfp4torchao converters (Hopper / Blackwell gate), vLLM sleep-mode,openenvagent rollout,soup apple-adapterPEFT ↔ MLX round-trip, andsoup delinearize-llama4all live.- The Quant Menu (
gptq/awq/hqq/ …) now threads through the vision and audio modality paths.
v0.71.24 — the 2026 model-family recipe expansion
The catalog grew from 116 to 133 ready-made recipes: 17 new SFT recipes for the open-weight models released February to June 2026, each with its Hugging Face repo-ID verified to resolve.
| Family | Recipes | License | Notes |
|---|---|---|---|
| Qwen 3.5 | qwen3.5-0.8b/2b/4b/9b/27b-sft + qwen3.5-35b-a3b/122b-a10b/397b-a17b-sft (MoE) | Apache-2.0 | 262K context, native vision |
| Qwen 3.6 | qwen3.6-27b-sft, qwen3.6-35b-a3b-sft | Apache-2.0 | dense + MoE |
| DeepSeek-V4 | deepseek-v4-flash-sft, deepseek-v4-pro-sft | MIT | Pro is 1.6T-class MoE (multi-GPU) |
| GLM-5.1 | glm-5.1-sft | MIT | 754B MoE (multi-GPU) |
| Kimi | kimi-k2.5-sft, kimi-k2.6-sft | Modified MIT | ~1T agentic MoE (multi-GPU) |
| MiniMax M3 | minimax-m3-sft | MiniMax Community License | 428B; commercial use needs a separate agreement |
| Mistral Large 3 | mistral-large-3-sft | Apache-2.0 | 675B/41B-active multimodal MoE (multi-GPU) |
The giants ship as multi-GPU recipes (mirroring the existing llama3-70b-fsdp2 / qwen3-32b-zeropp / deepseek-v3-pipeline configs), so size is never a blocker for soup recipes use. This release also fixed a stale repo-ID: the glm-5 recipe now points at zai-org/GLM-5 after the org migrated from THUDM. Drop one in with soup recipes use qwen3.5-9b-sft, point data.train at your dataset, and run soup train.
v0.71.25 — soup ship + friendlier errors
v0.71.25 adds [`soup ship`](/docs/soup-ship): after a fine-tune, one command answers the only question that matters, did the model get better or did I break it, as a single SHIP / DON'T-SHIP verdict. It fuses a strict task-win check with a catastrophic-forgetting gate, so a model that wins your task but regresses general benchmarks is refused. Exit codes are CI-gateable (0 = SHIP, 2 = DON'T SHIP, 1 = error), and --evidence decides offline with no model load. See the `soup ship` page for the decision rule and flags.
v0.71.25 also makes common load failures friendlier: the CUDA-OOM hint now suggests gradient_checkpointing and 4bit quantization, and there are clear new messages for Hugging-Face-gated repos (huggingface-cli login / HF_TOKEN) and trust_remote_code.
v0.71.26 — closing the RL loop
v0.71.26 ships [closed-loop reward-hacking auto-mitigation](/docs/reward-hack-mitigation): the GRPO/PPO trainer now *detects* reward hacking mid-run and *self-corrects* instead of only halting. soup train --reward-hack-mitigation off|log_only|kl_control|pid_lagrangian adds a controller that raises the KL penalty on a multi-signal vote, holds the hacking signal at a target with a PID-Lagrangian law, rolls back to the last-good checkpoint, and early-stops with a plain-English give-up explanation. No open-source RLHF library closes this loop. It ships as proof-of-mechanism on SmolLM2-135M (PPO BETA); scale validation is issue #286. The release also adds a ready-made qwen2.5-coder-7b-sft recipe (catalog 133 → 134) and friendlier CUDA-OOM / gated-repo / trust_remote_code errors.
v0.71.27 — Fine-tune Doctor
v0.71.27 adds a pure-CPU, zero-GPU pre-flight that kills the top silent fine-tune failures before a single training step, something no competitor (Unsloth, Axolotl, LLaMA-Factory) ships. [`soup data doctor`](/docs/fine-tune-doctor) runs 8 chat-template checks against the real tokenizer, including eos_in_labels (the number-one "model never stops generating" bug) and bos_duplication, with the same OK / MINOR / MAJOR taxonomy as soup diagnose (exit 2 on MAJOR); --show-mask N colours each token trained-versus-masked through the real collator path. `soup data lint` is a preference-data linter for dpo/orpo/simpo/ipo/bco/kto that flags length-bias as a Cohen's d effect size, plus label imbalance, near-duplicates, identical pairs and prompt leak. See the Fine-tune Doctor page.
v0.71.28 — the MCP server
v0.71.28 ships [`soup mcp serve`](/docs/mcp-server), a Model Context Protocol server so any MCP client (Claude Code, Cursor, Cline, Continue) can drive Soup over stdio. No other fine-tuning CLI ships one. It exposes 16 tools: 14 read-only ones that map to Soup commands and return JSON (advise, data inspect/validate/score/doctor, recipes search/show, runs, registry, profile, diagnose, ship) plus 2 plan-only mutating tools (train_start, export) behind --allow-mutating that only render the command they would run. Transport is stdio only (no network listener), output is control-char sanitized, paths are cwd-contained, and it installs behind a lazy-imported [mcp] extra so the core stays PyTorch-free. v0.71.28 also completes vocab-expansion parity across every preference and RL trainer. See the MCP server page.
See also
- Compliance pack (v0.71.35) — init templates, model-card autogen, a CI gate, and GGUF that works on Windows.
- Adapter algebra (v0.71.34) and LISA (v0.71.34) — task arithmetic over LoRAs, and full-FT quality at LoRA memory.
- soup draft (v0.71.33) — measure whether speculative decoding pays off before you enable it.
- PRM-guided GRPO (v0.71.30) — a Process Reward Model as the per-step GRPO reward.
- soup shrink (v0.71.29) — depth-prune + distill-heal with a perplexity verdict.
- ASR fine-tuning (v0.71.32) — fine-tune Whisper on your own audio, WER/CER built in.
- Online DPO (v0.71.31) and Best-of-N & Evolve (v0.71.31) — the judge-in-the-loop suite.
- MCP server (v0.71.28) — drive Soup from your coding agent.
- Fine-tune Doctor (v0.71.27) — pre-flight chat-template + preference-data checks.
- Closed-loop reward-hacking auto-mitigation (v0.71.26) — the capstone that closes the RL loop.
- Loop hardening (v0.70 → live v0.71.11) — the six detectors, now real.
- Supply-chain security — ed25519 signing + merge gates.