Soup CLI icon

Soup CLI

Soup CLI 是一款用于在自有硬件上进行 LLM 微调与后训练的命令行工具。支持 layer streaming 低 VRAM 训练,并提供数据检查、配置生成、偏好优化和 checkpoint gating。

Soup CLI

Soup CLI 是什么

Soup CLI 是一款用于在自有硬件上训练和运行 LLM 的命令行工具。该网站将其定位为一体化的后训练栈,涵盖数据检查、配置生成、监督式与偏好式微调、评估门控,以及通过单一界面完成导出或服务工作流。

它最独特的能力是 layer streaming:当模型无法完全驻留在 VRAM 中时,Soup 可以将冻结的基础模型保留在 CPU RAM 或 NVMe 上,并一次将一个解码器层流式载入 GPU。文档将其描述为一种可在 4 GB 笔记本 GPU 上微调 Llama-3.1-8B 等模型的方法,同时支持 SFT、DPO、ORPO、SimPO 和 KTO 等方法。

功能

基于规则的配置生成

通过规则而不是手动反复试错来创建训练配置。网站说明 Soup 会为你写入任务、量化、学习率和 epoch 设置,并且还能自动检测优化器、调度器、目标模块和 batch size 等其他细节。

拆分式安装模型

先进行轻量安装,再只添加你需要的堆栈。核心包不包含 PyTorch,而额外组件覆盖训练、服务、评估、数据工具、MLX、DeepSpeed、Liger、TensorRT、ONNX 以及相关工作流。

用于低 VRAM 训练的 layer streaming

当模型过大、无法放入 VRAM 时,可从 RAM 或 NVMe 流式载入冻结的基础模型。文档中的 BETA 模式会将基础模型重写为按层分片,并通过专用 CUDA 流一次将一层复制到预分配的 VRAM 缓冲区中。

在同一流式基础模型上进行偏好方法

在流式基础模型上支持监督式微调和偏好训练工作流。来源中明确提到 SFT、DPO、ORPO、SimPO 和 KTO,并指出 DPO 可以复用流式基础模型作为参考模型,而无需加载第二份完整副本。

数据检查与保存门控

在训练前添加数据检查,并在训练过程中对保存进行门控。网站描述了数据医生、语义去重、主题映射、canary 检查、回放,以及与权重关联的 SHIP 或 DON'T-SHIP 判定。

从其他工具迁移配置

将其他工具中的现有配置迁移过来。Soup 展示了从 LLaMA-Factory、Axolotl 和 Unsloth 一键转换为 Soup YAML 的路径。

常见用例

  • 低 VRAM 模型微调

    在 VRAM 有限的机器上使用 Soup 来准备并微调 LLM。文档中的 layer streaming 模式适用于冻结的基础模型无法完全驻留在 GPU 上的情况。

  • 在同一硬件上进行偏好训练

    在偏好优化工作流中使用相同的基础流式路径,例如 DPO、ORPO、SimPO 和 KTO。文档特别指出 DPO 可以复用流式基础模型作为参考模型,而无需第二份完整权重副本。

  • 训练前的数据清理与验证

    在训练前使用数据工具发现可能浪费运行的问题,包括重复或低多样性行、提示/模板问题、记忆化检查以及旧任务回放。

  • 迁移现有训练配置

    当你已经有来自其他工具的配置,并希望将它们迁移到 Soup YAML 时使用 Soup。网站展示了从 LLaMA-Factory、Axolotl 和 Unsloth 的迁移路径。

  • Checkpoint 门控与交接

    当你想决定某个 checkpoint 是否应该发布,然后再将其交给下游服务或部署工作流时,使用门控和导出路径。

Pros and Cons

Pros

  • 能够通过逐层流式载入冻结的基础模型来训练无法完全放入 VRAM 的模型。
  • 提供一个不包含 PyTorch 的轻量核心安装,用于检查、配置和数据工具。
  • 支持除普通 SFT 之外的多种训练模式,包括 DPO、ORPO、SimPO 和 KTO。
  • 提供基于规则的配置生成以及若干训练设置的自动检测。
  • 包含数据准备和门控工具,例如数据医生、语义去重、canary 检查以及 SHIP 或 DON'T-SHIP 判定。
  • 适用于 Python 3.10 到 3.12,文档中还描述了 CUDA、Apple Silicon 以及一些实验性的 CPU 或 MPS 使用场景。

Cons

  • layer streaming 标记为 BETA,并被描述为比驻留式训练更慢。
  • 文档说明流式模式仍会让 embeddings 和 logits 保持驻留,因此峰值 VRAM 会降低,但不会完全消除。
  • 网站提到的一些功能,例如多 GPU 启动、带 LoRA 的 DeepSpeed、SGLang 服务以及 Liger kernel,在发布文本中被注明曾有覆盖问题,或在早期验证运行中尚未执行。

FAQ

如何安装 Soup CLI 以进行训练?

Soup CLI 使用 pip 安装。文档将安装拆分为用于 CLI 和数据工具的轻量核心包,以及用于训练、服务、UI、评估、数据和其他后端的额外组件。对于训练,文档示例为 `pip install "soup-cli[train]"`。

Soup CLI 的基础使用是否需要 PyTorch?

是的。文档说明核心安装不包含 PyTorch,而训练栈仅在安装 `[train]` 额外组件时才会加入。这样就可以在不安装完整训练依赖的情况下使用 `soup init`、数据工具和检查命令。

Soup CLI 中的 layer streaming 是什么?

Layer streaming 是一种可选的 BETA 模式,适用于无法完全驻留在 VRAM 中的模型。文档说明它会将冻结的基础模型保留在 CPU RAM 或 NVMe 中,并一次流式载入一个解码器层到 VRAM,但其速度比驻留式训练更慢,且 embedding 和 logits 张量仍会保留驻留。

Soup CLI 支持哪些训练方式?

文档和发布说明表明,Soup 可以在流式基础模型上运行监督式微调以及包括 DPO、ORPO、SimPO 和 KTO 在内的偏好方法。发布说明还提到可通过 `lora.r 0` 支持全量微调,以及一个 DeepSpeed ZeRO-3 CPU offload 预设。

Soup CLI 支持哪些平台?

安装文档列出了 Python 3.10 到 3.12,并建议使用兼容 CUDA 的 GPU。Apple Silicon 可通过 MLX 额外组件支持,而 CPU 或 MPS 则被描述为某些工作流下的实验性选项。

Quick Facts

类别
开发者工具
主要用途
LLM 微调与后训练
交付形式
CLI
许可证
Apache-2.0
来源域名
trysoup.dev
支持的 Python 版本
3.10 到 3.12