github MakazhanAlpamys/Soup v0.51.0
v0.51.0 — Model Catalog Expansion + Alternative Hubs

latest releases: v0.76.1, v0.76.0, v0.75.2...
5 months ago

What's New

26 new ready-made recipes (catalog 80 → 106) — match Unsloth's day-zero coverage:

  • Reasoning + agent: GPT-OSS 20B/120B, GLM 4.6 / 5, Kimi K2 / K2-Thinking GRPO, MiniMax-M2, QwQ-32B GRPO, QVQ-72B
  • Small / specialist: Granite 4, Liquid LFM2, Cogito v2, Mistral Small 3 / Medium 3.5, Magistral / Devstral / Ministral, MedGemma, EmbeddingGemma
  • Vision / multimodal: LLaVA-Next, InternVL 3.5, Voxtral (audio), Baichuan 2, Qwen-Image, DeepSeek-OCR, Paddle-OCR-VL

Browse with soup recipes list / soup recipes search <keyword>.

Alternative model hubs. New training.hub: hf | modelscope | modelers with full SSRF-hardened endpoint validators (parity with the v0.29.0 HF_ENDPOINT policy — scheme allowlist, loopback-only HTTP, RFC1918 / link-local / cloud-metadata IP rejection, control-character / CRLF rejection). MODELSCOPE_ENDPOINT / MODELERS_ENDPOINT env vars override the default hub URL. backend: mlx + hub: modelscope is rejected at config-load with a distinct error message.

20 new architectures in the multipack allowlist — MULTIPACK_ARCHITECTURES grows 18 → 38 to enable FFD bin-packing on Granite, GLM, Kimi, MiniMax, QwQ, QVQ, GPT-OSS, Magistral, Devstral, Ministral, MedGemma, LFM2, Cogito, Hunyuan, Ernie, Yi, Baichuan, ChatGLM.

+455 net new tests (6729 → 7184). 4 sequential review agents (python-review, security-review, code-review, tdd-guide) fed back HIGH / MEDIUM / LOW findings; every finding fixed before commit (case-insensitive _normalize_hub field-validator, MLX cross-validator, control-char rejection in endpoint validator, is_hf bool guard, exact-count multipack arch invariant, empty-component model-id check).

Install / Upgrade

pip install --upgrade soup-cli

Security

See SECURITY.md for the full hardening log.

This release adds:

  • soup_cli/utils/hubs.py: closed-allowlist SUPPORTED_HUBS + SSRF-hardened validate_hub_endpoint with full v0.29.0 HF_ENDPOINT parity (scheme allowlist, loopback-only HTTP, RFC1918 / link-local / cloud-metadata via ipaddress.ip_address, control-character / CRLF rejection as defence-in-depth review fix, IPv6-mapped-private rejection).
  • TrainingConfig.hub Literal field with field_validator(mode="before") _normalize_hub for case-insensitive normalisation (matches v0.41.0 optimizer / v0.50.0 grpo_variant policy).
  • SoupConfig _validate_hub_supported cross-validator rejecting hub != 'hf' on backend == 'mlx' (mlx-lm only downloads from HF Hub).
  • All hub helpers reject bool before isinstance(int/str) (matches the project's bool-as-int defence policy).

Known Limitations

  1. Live downloader / uploader / push integration deferred to v0.51.1. The TrainingConfig.hub schema lock-in ships now (Literal accept + MLX cross-validator + case-normalisation), but soup data download --hub modelscope and soup push --hub modelers still route through the existing HF Hub code path; the actual modelscope-sdk / openmind-hub adapters are the v0.51.1 deliverable. Same stub-then-live pattern as v0.27.0 MII / v0.37.0 multipack / v0.50.0 GRPO Plus.
  2. Speculative / aspirational base model IDs in some recipes. The catalog ships entries for openai/gpt-oss-{20,120}b, THUDM/glm-5, Qwen/Qwen-Image, deepseek-ai/DeepSeek-OCR, PaddlePaddle/PaddleOCR-VL, google/embeddinggemma-300m so users have ready-made recipes the moment those repos go live (matches the plan's "match Unsloth's day-zero coverage" directive). Recipes for not-yet-published repos will surface a clear HF Hub 404 when the user runs soup train --recipe <name>.
  3. MULTIPACK arch allowlist is name-based. Adding KimiForCausalLM / MiniMaxForCausalLM / etc. enables FFD bin-packing for those archs but does NOT verify the upstream HF model class actually exposes the _get_unpad_data monkey-patch surface multipack expects; first-time users on a new arch should validate output equivalence between multipack: true and multipack: false on a small dataset before scaling up.
  4. DNS-resolved private hostnames not blocked. validate_hub_endpoint only rejects literal RFC1918 / link-local IP addresses; a hostname like corp-proxy.internal that DNS-resolves to a private IP is accepted at validation time (mirrors the v0.29.0 HF_ENDPOINT policy — DNS resolution is intentionally not performed in this local-tool threat model).
  5. hub: modelscope does NOT yet rewrite base: repo IDs. A user-supplied base: meta-llama/Llama-3.1-8B with hub: modelscope will still try the literal meta-llama/Llama-3.1-8B against the modelscope endpoint when the v0.51.1 downloader lands; an automatic hf-id → modelscope-id translation table is out of scope for this release.

🤖 Generated with Claude Code

Don't miss a new Soup release

NewReleases is sending notifications on new releases.