Three v0.52.0 schema-only stubs become real trainers. MoE is fully live-validated on an RTX 3050; TTS pre-encoded chat is live on SmolLM2-135M-Instruct; the per-family TTS codecs, BitNet onebitllms, and BitNet llama.cpp export are honest hardware/dependency gates (plumbing ships; end-to-end runs stay infra-blocked on the dev box).
What's New
- TTS fine-tuning (#131) —
task: ttsnow trains a real text-to-speech model. The five families (Orpheus / Sesame-CSM / Llasa / Spark / Oute) are decoder LMs, so a TTS fine-tune is next-token cross-entropy over[text][audio-codec-token]chat sequences. Pre-encode your audio to codec tokens offline and train withdata.format: chat— Soup adds per-family emotion control + codec special-token registration. The encode-at-train-time path (data.format: audio) is dependency-gated on each family's codec. - BitNet 1.58-bit (#134) —
soup export --format bitnet | tq1_0runs a real llama.cppTQ1_0ternary export, andquantization: bitnet_1.58routes to a live BitNet trainer (gated ononebitllms). - MoE expert quant (#136) —
training.moe_expert_quant: nf4 | int8_rowwisequantizes just the fused-MoE expert layers with bitsandbytes (attention + router stay full precision; runs pre-LoRA so PEFT attaches to the quantized base), andtraining.train_router_only: truefreezes the experts to train only the gating router. Validated live on an RTX 3050 (dequant error 0.0155 vs source).
Install / Upgrade
pip install -U soup-cli # light core
pip install -U 'soup-cli[train]' # + training stack (torch/transformers/peft/trl)Security
No new security surface — TTS/BitNet/MoE wiring reuses the existing SFT load path. Export paths reuse the v0.53.1 cwd-containment + symlink-rejection guards.
Known Limitations
- TTS live-codec (
data.format: audio) needs each family's heavyweight codec (snac/moshi/xcodec2/sparktts/outetts) — friendly per-family gate ships; end-to-end not validated. Use the pre-encoded chat workflow. - BitNet training requires
onebitllms(CUDA/Linux-only) — friendlyRuntimeErrorwhen absent. - BitNet GGUF export requires a built llama.cpp toolchain — friendly
FileNotFoundErrorwhen absent. - MoE expert quant is CUDA + bitsandbytes only — structural detection is CPU-testable; the real bnb swap is validated on the RTX 3050.
Tests: 13807 → 13874 (+67 net).
🤖 Generated with Claude Code