Lean install + live wiring (v0.71.0 → v0.71.41)

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 (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 MCP server, and v0.71.29 added 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 (task: asr fine-tunes Whisper locally, with built-in WER/CER), v0.71.33 shipped 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 and LISA, and v0.71.35 shipped the 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). v0.71.36 "Data Moat II" then added a semantic layer over your training data (soup data dedup --semantic, soup data topics, soup data canary, soup train --replay), and the patch v0.71.37 fixed the Windows cmd.exe install-hint quoting. The v0.71 line closed with the eval-gate wedge: v0.71.38 gave the soup ship regression leg real teeth (answer-extraction scoring over seven bundled offline suites, not substring-matched trivia), v0.71.39 closed the evidence loop (soup ship --emit-evidence + a committed ShipConfig + --push owner/repo#N, provenance-bound so it is CI for weights on every PR), and v0.71.40 + v0.71.41 shipped Reward Forge (soup reward synth generates a deterministic reward verifier from your data and refuses a degenerate one, soup reward stress proves it cannot be gamed). Across the v0.71 line the test suite grew from 11,824 to 16,529 across 319 files. (the v0.72 and v0.73 lines have since taken it to 369 test 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.

bash
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 + data + mcp
  • soup init, soup data …, and the inspection commands work on the bare install; soup train needs [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 a py.typed marker 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 rl_checkpoint_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: distill gains distill_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-request X-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-dit is 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 with 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 run --probe-model, soup tunability --live, soup eval capability --live, soup eval behavior, and soup diagnose.

Data engineering (v0.71.6)

  • soup build materialises datasets (5 built-in transforms, incremental re-tokenise-only-changed-rows via a SQLite state store).
  • soup data gen-magpie generates via chat-template-prefix harvest (ollama / vllm, SSRF-hardened).
  • soup eval irt-subset adds 2PL / 3PL fits.

Prompt-compile (v0.71.13, [compile] extra)

  • soup compile, soup distill-prompt, soup compile-tools, and soup 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.jsonl audit 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 --bank resolves the active VeRA / VB-LoRA user per request via the X-User-Id header (multi-worker safe, no cross-request leak).
  • RAFT distractors get an epoch-aware shuffle salt; soup diagnose --citation-style threads 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_values path.
  • 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 your soup.yaml (plan-only by default; --cloud-submit for 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 to C=I without 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 + nvfp4 torchao converters (Hopper / Blackwell gate), vLLM sleep-mode, openenv agent rollout, soup apple-adapter PEFT ↔ MLX round-trip, and soup delinearize-llama4 all 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.

FamilyRecipesLicenseNotes
Qwen 3.5qwen3.5-0.8b/2b/4b/9b/27b-sft + qwen3.5-35b-a3b/122b-a10b/397b-a17b-sft (MoE)Apache-2.0262K context, native vision
Qwen 3.6qwen3.6-27b-sft, qwen3.6-35b-a3b-sftApache-2.0dense + MoE
DeepSeek-V4deepseek-v4-flash-sft, deepseek-v4-pro-sftMITPro is 1.6T-class MoE (multi-GPU)
GLM-5.1glm-5.1-sftMIT754B MoE (multi-GPU)
Kimikimi-k2.5-sft, kimi-k2.6-sftModified MIT~1T agentic MoE (multi-GPU)
MiniMax M3minimax-m3-sftMiniMax Community License428B; commercial use needs a separate agreement
Mistral Large 3mistral-large-3-sftApache-2.0675B/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: 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: 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. We are not aware of another open-source RLHF library that 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 we have not found in Unsloth, Axolotl or LLaMA-Factory. soup data 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, 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. (Since v0.73.3 there are 18: --allow-execute adds train_execute and export_execute, which run a plan behind a single-use server-issued token.) 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

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.