What's New
v0.33.0 — Live Wire closes 17 deferred issues across the last six minor releases. Every "API + flag (v0.x.0)" / "wired live in v0.x.1" deferral is now actually live, in one consolidated release instead of six dot-zero-one tags.
soup can run+soup can publish— extract a.can→ train via embedded config → optional deploy.soup can publish my-recipe.can --hf-hub user/repouploads as an HF dataset (repo_type='dataset',can-format-v1tag). Manifest schema bumped to v2 with optionaldeploy_targets(ollama / gguf / vllm). v1 cans still load.- Multi-GPU one command —
soup train --gpus 2now auto-reexecs underaccelerate launch(was advisory-only in v0.27.0).--no-reexecopt-out preserved. Critical flags forwarded. - Live eval-gate scoring —
soup eval gateandsoup eval quant-checkno longer returnscore=1.0stubs forjudge/benchmarktask types. Backend failures surface asscore=None, error=str(exc)so a broken eval never silently passes the gate. - Structured output + auto-quant live on
soup serve—--structured-output json --json-schema s.jsonbuilds a realLogitsProcessor(viaoutlinesorlm-format-enforcer).--auto-quantruns a tiny eval over candidate quantisations and picks the best by (score, -latency). - DeepSpeed-MII live serve —
soup serve --backend miinow starts a real OpenAI-compatible HTTP server (was stub + exit-1 in v0.27.0). - Multi-trainer v0.28.0 features —
use_cut_ce,quantization_aware=\"fp8\",kernel_auto_compose,activation_offloadingnow wired for SFT / DPO / Pretrain. - Live
--find-lr— replaces the v0.32.0 synthetic stub curve with a real in-process LR-sweep training loop. Falls back to synthetic when prereqs are missing so CI without GPUs still produces a parseable report. - Spike recovery + grad-accum advisory —
loss_spike_recovery: truewritesspike_recovery.jsonwith the decayed LR for re-launch.grad_accum_auto_tune: trueprints recommended(batch, accum)pair on VRAM pressure. - Auto mixed-precision push —
auto_mixed_precision: truecallspick_mixed_precision(base, cc)and wires the result intobf16=/fp16=TrainingArgumentskwargs. soup eval custom --attach-to-registry <id>+soup export --registry-id <id>— auto-attach eval results / exported artifacts to a Local Model Registry entry. Neweval_resultsandtensorrtartifact kinds.- RLVR sandbox + checkpoint prune hardening —
code_exec_rewardadds OS-level isolation (Linux `unshare(CLONE_NEWUSER|CLONE_NEWNET|CLONE_NEWPID)`, macOS sandbox-exec profile with narrow mach-lookup allowlist). `prune_checkpoints` switched to TOCTOU-safe `os.lstat` + `S_ISLNK` + `onerror`-abort `rmtree`.
Install / Upgrade
```bash
pip install --upgrade soup-cli
```
Security
34 review-wave findings fixed across 5 review agents (1 CRITICAL, 18 HIGH, 12 MEDIUM, 3 LOW). Highlights:
- CRITICAL: GGUF rglob result in `soup can run` is now realpath+commonpath checked against `extract_dir` to prevent symlink escape.
- macOS sandbox `(allow mach-lookup)` narrowed to a 3-name allowlist (SecurityServer / notification_center / opendirectoryd.libinfo). Prevents DNS / NSURLSession bypass of `(deny network*)`.
- `_write_spike_recovery_hint` enforces `is_under_cwd` on `args.output_dir` (defence-in-depth).
- `CrossDocCollator` no longer mutates input feature dicts (HF Dataset rows are cached and reused).
- `auto_quant.Candidate` rejects `bool` in score / latency_ms (was sneaking past `int` isinstance check).
- `os.execvp` reexec uses list args; critical flags forwarded as separate argv elements.
- `soup can run` raises `ValueError` (not `PermissionError`) for the consent gate so callers cannot silently swallow via `except OSError`.
- `DeployTarget.path` validator normalises mixed separators before splitting (`foo/..\bar` no longer bypasses on Windows).
- `lookup_entry_by_output_dir` emits `ResourceWarning` when 1000-row scan limit is hit.
Full per-fix list in `SECURITY.md` (search "v0.33.0").
Known Limitations
Deferred to a future release — blocked on infra budget or upstream maturity:
- #23 MLX e2e on Apple Silicon — paid macos-14 ARM runner.
- #39 / #40 live pipeline-parallel + multi-node accelerate — torch.distributed.pipelining stabilisation + 2-machine validation hardware.
- #41 multi-GPU recipe smoke-train CI — 4×A100 runner budget.
- #45 kernel auto-compose benchmark loop inside trainer — CUDA-equipped CI runner with stable VRAM.
- #57 spike recovery is a JSON hint, not in-process optimizer rewind — HF Trainer has no safe public API for mid-loop optimizer-state mutation.
- #59 Phase 2 (live DataLoader rebuild on grad-accum advisory) — needs small TRL upstream PR.
- #43 follow-up: GRPO/KTO/ORPO/SimPO/IPO/PPO/RewardModel/Embedding still reject v0.28.0 flags — multi-trainer expansion to remaining 7 trainers tracked separately.
- #54 follow-up: live model re-load at picked auto-quant — picker logs the choice, the already-loaded model is served.
- License migration MIT → Apache-2.0 (advisory): downstream redistributors must retain `NOTICE` per §4(d).
Closed Issues
#21, #22, #32, #34, #35, #37, #38, #43, #44, #47, #49, #53, #54, #56, #57, #58, #59