soup

v2026.09.24

Drive Soup (`soup-cli`), a CLI-first tool for fine-tuning and post-training LLMs with one YAML config and one command — SFT, DPO/GRPO/ORPO/SimPO/KTO, QLoRA/DoRA/LoRA+, layer streaming for 4-8 GB GPUs, eval-gated training, and serving. Use when the user wants to `soup init`/`soup train` a model, pick a training method or quantization scheme, estimate cost/memory before training, fine-tune on a small local GPU, migrate a config from Axolotl/LLaMA-Factory/Unsloth, or serve/merge/push a trained adapter. Triggers on: "soup-cli", "soup train", "soup init", "fine-tune an LLM locally", "QLoRA on a laptop GPU", "layer streaming", "soup advise", "soup autopilot", "DPO/GRPO/ORPO training", "merge LoRA adapter".

GitHub
安装命令
npx skhub add akillness/soup
Markdown
SKILL.md

Soup — one-command LLM fine-tuning

Soup turns fine-tuning into soup init → soup train with a single YAML config: task selection, quantization, batch size, and GPU/backend detection are all handled for you. Its headline feature, layer streaming (stream_layers: true), keeps the frozen base model out of VRAM and streams it one decoder layer at a time, so an 8B model can fine-tune on a 4 GB laptop GPU — measured bit-exact against a normal resident run.

When to use this skill

  • Standing up a new fine-tuning run (soup init, soup train) instead of hand-rolling a Transformers/PEFT/TRL training script
  • Choosing a training method (SFT vs DPO/GRPO/ORPO/SimPO/KTO/IPO/BCO) or a memory-saving scheme (QLoRA, DoRA, LoRA+, rsLoRA, layer streaming) for a constrained GPU
  • Estimating training cost/memory (soup cost, soup profile) before spending GPU hours, or getting a pre-flight method recommendation (soup advise)
  • Migrating an existing Axolotl / LLaMA-Factory / Unsloth config into Soup
  • Serving, merging, or pushing a trained adapter (soup serve, soup merge, soup push), or running the data-quality/eval tooling (soup data ..., soup ship)

When not to use this skill

  • Training infrastructure at the Ray/DeepSpeed-cluster/multi-node scale as the primary concern → use deepspeed or openrlhf-training directly; Soup wraps DeepSpeed/FSDP as launch flags, not a replacement for them
  • Pure inference serving of an already-merged model with no training involved → a plain inference-runtime skill is a better fit
  • The user is not touching Soup/PEFT/TRL at all (e.g. prompt engineering only) → route to soup advise's own verdict (it may say PROMPT_ENG, not training) rather than jumping straight into soup train

Instructions

Step 1: Install the right profile

bash pip install soup-cli # light CLI only: init/advise/data/profile/cost pip install "soup-cli[train]" # + torch/transformers/peft/trl for real training

Step 2: Decide the method before spending GPU hours

bash soup advise <data.jsonl> --goal "..." # PROMPT_ENG / RAG / SFT / DPO / GRPO verdict soup autopilot --model <id> --data d.jsonl --goal "<g>" # zero-config: picks task/quant/LR/epochs

Do not default straight to soup train; advise/autopilot exist because the wrong method (e.g. SFT when the data is a preference pair) wastes a full run.

Step 3: Scaffold and edit the config

bash soup init --template chat # or code/audio/... — see docs/models.md soup fetch <name> # pull a ready-made example config

For memory-constrained hardware, opt into layer streaming explicitly:

yaml training: stream_layers: true # base streams out of VRAM; only the adapter trains quantization: 4bit # NF4 batch_size: 4 stream_source: auto # RAM when it fits, NVMe disk otherwise

Layer streaming is BETA and supports SFT plus DPO/ORPO/SimPO/KTO — not GRPO/PPO (those re-read every layer per generated token, which defeats streaming's amortisation).

Step 4: Estimate before you commit a GPU

bash soup profile --config soup.yaml --gpu a100 soup cost --config soup.yaml --gpu H100

Step 5: Train, then verify before shipping

bash soup train --config soup.yaml soup train --config soup.yaml --gate evals/gate.yaml # eval-gated soup ship --config soup.yaml # go/no-go verdict

Step 6: Serve, merge, or push the result

bash soup infer --model ./output --input p.jsonl soup chat --model ./output soup merge --adapter ./output soup push --model ./output --repo user/name soup serve --model ./output

Step 7: Use the wrapper for a read-only environment check

bash bash .agent-skills/soup/scripts/soup.sh doctor bash .agent-skills/soup/scripts/soup.sh advise <data.jsonl> --goal "..." bash .agent-skills/soup/scripts/soup.sh profile <config.yaml>

doctor only inspects the environment (Python version, soup install, [train] extras, CUDA/MPS availability) — it never installs packages or starts a training run.

Best practices

  1. Run soup advise/soup autopilot before soup train — picking the wrong task family (SFT vs a preference loss) is discovered only after a full training run otherwise.
  2. soup cost/soup profile before renting a GPU — cheaper than discovering an OOM or a $40 surprise after the fact.
  3. Layer streaming is an opt-in trade, not a default — it trades memory for extra layer-stack reads (DPO reads it ~1.52× as often as SFT); confirm the method is on the supported list (SFT/DPO/ORPO/SimPO/KTO) before enabling it.
  4. Gate before you ship — prefer --gate evals/gate.yaml and soup ship over eyeballing loss curves.
  5. Heavy deps stay lazy — don't suggest importing torch/transformers/ peft/trl at module top in scripts driving Soup; the project itself lazy-imports them so the light CLI stays fast.
  6. Migrate configs, don't hand-port them — soup migrate --from axolotl|llamafactory|unsloth exists precisely to avoid manual config translation errors.

References

Examples

Example 1: Pick a method, then fine-tune on a 4 GB laptop GPU

bash soup advise data.jsonl --goal "make the model follow a strict output schema" soup init --template chat

soup.yaml: set stream_layers: true, quantization: 4bit

soup profile --config soup.yaml soup train --config soup.yaml

Example 2: Environment check before recommending a training path

bash bash .agent-skills/soup/scripts/soup.sh doctor

发现
标签

此技能尚未发布标签。

版本
最新版本元数据

版本

v2026.09.24

发布时间

Sep 24, 2026

分类

未分类

许可证

未指定

源路径

.agent-skills/soup

默认分支

main

最新提交

f579bfe

Tree SHA

34a09b3