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.

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
  • 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 --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 --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, 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`](/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