📌 项目地址MakazhanAlpamys/Soup | ⭐ 1,551 颗星 | 🔧 Python | 📜 未标注

这个项目解决什么问题

微调大模型通常要折腾环境、GPU驱动、分布式配置,甚至还得反复 SSH 到服务器上调试。Soup 把整个过程压缩成一条命令:你只需要写一个 YAML 配置,然后执行 soup train。官方描述是:”Fine-tune LLMs from one YAML. Layer streaming trains an 8B model on a 4 GB laptop GPU.”

项目主打的是资源受限下的可能性:在 4GB 显存的笔记本 GPU(如 RTX 3050 Laptop)上,用层流式传输(Layer Streaming)微调 Llama-3.1-8B-Instruct,实测峰值显存仅 3.32 GB,速度可达 119.6 tok/s(v0.72.2 版本数据)。这在传统微调流程里几乎不可想象。

实际用法

安装和启动非常简单,来自 README 原文:

pip install "soup-cli[train]"   # 加 [train] 用于微调;裸 soup-cli 是轻量 CLI
soup init --template chat
soup train
  • soup init --template chat 会生成一个 YAML 配置文件,模板为 chat 格式。
  • soup train 基于该配置开始训练,自动处理批大小、GPU 检测和量化。
  • soup ship 用于验证模型是否真的变好,还是被改坏了。最新版 v0.73.2 修复了两套评测套件的评分逻辑,并新增了一个良性提示测试轴,防止”拒绝率下降被误判为安全改进”这类问题。

官方还提供了 free Colab T4 笔记本,可以把进程显存限制到 4 GB,然后断言流式训练的模型与普通驻留训练在 bit 级别完全一致,用于快速验证其可行性。

核心技术:Layer Streaming

Layer Streaming 是 Soup 的关键特性,需在 YAML 中显式开启:stream_layers: true。它把冻结的基础模型逐层送入 GPU,而不是一次常驻显存,因此 8B 模型也能在 4GB 显卡上微调。官方强调这是 BETA 功能,并通过独立复现验证了 bit-exact 一致性(H100 上 113.00 tok/s,同为 3.32 GB 峰值)。注意:v0.73.0 做了一次正确性修复,导致 32B 训练速度下降 4.8%,官方尚未在 4GB 显卡上重新跑过 v0.73.0 之后的速度测试。

和同类工具的区别

Soup 的核心差异化在于配置和操作极简:

  • 零 SSH:不需要手动连到远程 GPU 机器上跑命令。
  • 单一 YAML:模型、数据、训练参数、量化方式都收敛到一个文件里。
  • 自动一切:自动检测 GPU、自动计算批大小、自动量化。
  • 本地优先:支持本地单卡 QLoRA,不强制云环境。

这种设计很接近”微调工具中的声明式配置”,你描述想要什么,而不是一步步告诉它怎么做。相比需要写大量脚本或依赖平台绑定的工具,Soup 的使用门槛明显更低。

需要注意的事项

  • Layer Streaming 目前仍标记为 BETA,且是 opt-in(默认关闭)。如果你追求极致稳定或需要复现官方速度数据,请先确认版本号与官方基准一致。
  • 官方给的速度和显存数据来自特定版本(v0.72.2),后续版本因正确性修复有速度变化,不能简单照搬。
  • 项目官方描述强调”在 4GB 笔记本 GPU 上”训练,但实际效果取决于模型尺寸、量化方式、序列长度和 LoRA 配置,建议先用 Colab 笔记本验证环境。
  • 当前许可证和完整命令细节请参考官方文档(README 中的 Docs / Quick Start / Config 链接),本文只列出来自 README 的命令。
  • soup ship 的评测套件在 v0.73.2 才修复了评分方向错误,使用旧版本时请谨慎依赖其评分结果。

Soup 最适合的场景不是”随便点两下的傻瓜工具”,而是当你有一个明确的任务类型(如聊天模板)并且想用一张消费级显卡快速验证微调效果时,它能帮你省掉大部分环境工程。如果你正在被多机配置、依赖冲突、OOM 问题反复折磨,值得按官方 Quick Start 跑一次。

这篇文章对你有帮助吗?

发表回复