Soup :把一个 YAML 变成一次大模型微调
AI智库导航-aiguide.cc为您提供最新的AI新闻资讯和最新的AI工具推荐,在这里你可以获得用于营销的AI聊天机器人、AI在商业管理中的应用、用于数据分析的AI工具、机器学习模型、面向企业的AI解决方案、AI在商业客户服务中的应用、AI和自动化工具等。
主要介绍
Soup 是由开发者 MakazhanAlpamys 开源、目前在 GitHub 上获得 6712 颗星标的 LLM 微调与后训练框架,官方定位一句话说得很清楚:用一个 YAML 文件微调大模型,不需要 SSH、不需要与配置文件搏斗。它把原本需要手工拼装 Transformers、PEFT、TRL、bitsandbytes 四套库并自己管理显存、批次、量化参数的工程活,收敛成一个配置加一条命令:写好 soup.yaml,执行 soup train,剩下的事情由框架自动完成。框架支持从 SFT 到 DPO、GRPO、PPO、KTO、ORPO、SimPO、IPO、BCO 的完整后训练任务谱系,并能自动检测 JSONL、JSON、CSV、Parquet、TXT 中的数据集格式。它最受关注的能力是「层流」(Layer Streaming)——让冻结的基座权重常驻 CPU 内存、只把 LoRA 适配器留在显存里,从而在 4GB 显存的笔记本显卡上训练 8B 模型,官方在 RTX 3050 Laptop 4GB 上实测的峰值显存为 3.32GB。

MakazhanAlpamys/Soup 仓库预览图(6712 Star)
功能特点
-
单一配置文件驱动:一个 soup.yaml 覆盖基座模型、任务类型、数据集、量化、LoRA 与输出路径,框架自动推导批次大小、学习率与量化方式。
-
层流低显存训练:开启 stream_layers 后,冻结基座不再整体驻留显存,改为逐层搬运,8B 模型在 4GB 显卡上可跑,且与常规常驻训练逐位一致。
-
完整后训练任务谱系:覆盖 SFT、DPO、GRPO、PPO、KTO、ORPO、SimPO、IPO、BCO,另有工具调用、PRM、预训练、蒸馏、分类、卸载学习、RAFT 等任务类型。
-
视觉与音频微调:支持 LLaVA 与 ShareGPT4V 格式的图文数据,以及 Qwen2-Audio、Whisper 的音频与语音识别微调,Whisper-tiny 与 base 可在 4GB 显卡上训练。
-
本地 Web 界面:soup ui 启动一个浏览器仪表盘,可做实验管理、训练配置、实时指标查看、数据集浏览与模型对话,全程不写代码。
-
零配置自动驾驶:soup autopilot 只需给出模型、数据与目标,即可自动完成配置推断;soup recipes list 提供 100 多个现成模型配方。
-
导出与部署闭环:支持合并 LoRA、导出 GGUF、ONNX、TensorRT、AWQ、GPTQ、BitNet,内置 OpenAI 兼容服务端与 Anthropic Messages 接口,并提供投机解码。
-
合规与治理工具:内置 HIPAA、SOC2、EU AI Act、SR-11-7 的初始化模板,支持物料清单、签名、可复现回执、审计日志与气隙部署,可一键生成模型卡。
优缺点
优点:
-
使用环节真的接近零代码:日常操作是写 YAML 加执行命令,或者直接用 soup ui 的浏览器界面点选,官方明确「一个配置、一条命令」,不需要写 Python 训练脚本。
-
层流解决了硬约束问题:4GB 笔记本显卡训练 8B 模型此前被认为需要至少 6.6GB 到 8GB 显存,Soup 把门槛压到 3.32GB,并且提供了在免费 Colab T4 上可自行复现、把进程硬限制在 4GB 再断言结果与常规训练逐位一致的验证脚本。
-
工程诚实度罕见:官方对层流明确标注 BETA、默认关闭需显式开启,公开过在测量过程中撤回三次读数,并在每个版本中保留与常规执行对比 logits 的验证协议。作者本人正是靠该协议在发布代码中发现了自己写的 bug。
-
抽象层次把握得好:把 GPU 检测、批大小、量化、LoRA 配置全部自动化,但每一个字段都可通过配置文件覆写,高级用户仍有完整的 PEFT 与效率工具箱(DoRA、LoRA+、rsLoRA、VeRA、OLoRA、NEFTune、PiSSA、ReLoRA、GaLore、YaRN 等)。
-
社区参与度与工程规范扎实:仓库有 64 位贡献者,最新版本 v0.75.0 的 60 个 PR 全部来自维护者之外的 22 位开发者;配备 CI、单元测试与冒烟测试、PEP 668 兼容的多安装路径、预制 Docker 镜像,以及默认关闭的遥测。
缺点:
-
部署仍有环境门槛:使用环节零代码,但首次跑起来需要 Python 3.10 至 3.12 的解释器、与驱动匹配的 CUDA 版 PyTorch、以及至少 8GB 显存;层流模式还额外要求 16GB 以上内存来承载常驻的基座权重,内存不足时会回落到 NVMe 固态硬盘,而 SATA 与机械硬盘被直接拒绝。
-
Python 版本窗口偏窄:官方仅支持 3.10 至 3.12,3.13 及以上暂不支持,原因是该版本上的 PyTorch 栈尚未验证,环境较新的用户需要额外准备隔离环境。
-
层流能力未定型:层流仍是 BETA 特性,需显式设置才启用;官方同时说明该能力的吞吐数据来自 v0.72.2,且 v0.73.0 的正确性修复在 32B 上带来约 4.8% 的性能损失,该数字在 4GB 显卡上尚未重新测量。
-
版本升级存在破坏性成本:v0.75.0 起未知配置键不再被静默忽略,而是直接拒绝加载,拼错的字段会以退出码 1 失败;同一版本还把 GRPO 序列级目标函数的实现从列中心化启发式改为已发表方案,官方明确提示已有的 gspo 配置无法复现此前训练结果。此外,多卡、8B 以上验证与 Apple Silicon 等特性因硬件受限,目前仍带「需要硬件」的门控标注,属于社区尚未充分验证的区域。
如何使用
Soup 的使用路径刻意做得极短,官方给出的最小流程只有三步,全程不需要写一行 Python。第一步是安装,按照自己的使用场景选择安装形态:只做配置与数据检查装轻量核心,要做训练再追加训练扩展,集成封装好的环境更推荐用独立的工具环境安装以避免污染系统 Python。第二步是生成配置,交互式向导会逐项提问,也可以直接从模板起步,官方提供对话、代码、工具调用、医疗、推理、视觉、偏好对齐、强化学习、预训练、混合专家、长上下文、向量嵌入、音频等十余种模板。第三步就是训练,执行训练命令并在参数中指定配置文件即可,训练完成后可用对话命令直接与产物交互,也可以用推送命令把适配器发布到模型社区。
如果希望完全不碰配置文件,官方提供了两条更省事的路径。其一是 soup ui,启动后在本地浏览器打开仪表盘,可以通过界面创建与配置训练任务、实时查看损失曲线与指标、浏览数据集、并与训练出的模型对话。其二是 soup autopilot,只需要给出基座模型、数据文件与目标任务三个参数,框架会自动推断出一份可运行的配置。对已经跑通的想法,还可以用命令列出的一百多个现成配方作为起点,或者在缺乏参考基线时用环境自检命令一次性确认显卡、系统资源、依赖与版本状态。
想把训练结果投入使用,同一套工具链也覆盖了后续环节:合并命令把 LoRA 适配器融回基座模型,导出命令支持 GGUF、ONNX、TensorRT、AWQ、GPTQ、BitNet 等多种格式,其中 GGUF 产物可直接供本地推理工具加载。需要对外提供服务时,内置的兼容服务端可直接暴露 OpenAI 风格接口。值得注意的是,微调过程对数据格式的宽容度较高,多数情况下只需要在配置里把训练数据指向一个文件,框架会自动识别格式;官方也提示在开跑之前先确认内存是否足够容纳整个基座模型,这是层流模式最容易踩的坑。
框架技术原理
Soup 的核心技术点是层流,它的出发点是一个朴素的观察:LoRA 微调时基座模型是冻结的、全程只读不写,既然只读,就没有必要让它常驻显存。基于这一观察,框架把冻结的基座权重留在 CPU 内存中,并尽可能使用页锁定内存以保证传输带宽;当内存不足以承载整个模型时,权重会回落到 NVMe 固态硬盘,而 SATA 与机械硬盘因带宽过低被直接拒绝。显存中只保留需要训练的 LoRA 适配器、其梯度与优化器状态。
训练循环每推进一层,就把这一层的权重从内存送进显卡完成前向与反向计算,算完即释放,再换下一层。为了不让数据搬运成为瓶颈,框架预分配了若干个显存缓冲区(默认双缓冲),并在专用的 CUDA 流上做异步预取:计算第 i 层的前向时预取第 i+1 层,计算第 i 层的反向时预取第 i-1 层,让权重传输与计算重叠,从而在实测中仍能跑满显卡利用率。在 NF4 路径下,基座会先离线量化一次并分片缓存,缓存键包含量化方式与源检查点的指纹,避免搬运到错误的字节。
这套方案的代价被官方写在了明面上,而且是物理层面的代价。因为权重不在显存中,每一层在每个训练步都必须被读取两次——一次前向、一次反向重算,这实际上强制启用了梯度检查点。代码中对此的注释相当直白:反向传播需要用到权重转置,这是物理事实而非实现细节。另一个不那么直观的限制是词表相关部分无法被流式化,向量嵌入层与输出头始终常驻显存且不参与量化,在 8B 模型 3.32GB 的峰值占用中,这部分本身就占去 2.10GB。这也解释了为什么 8B 已经贴着 4GB 的天花板,而作者没有继续尝试 14B。
为了解决显存超限的隐患,框架内置了一个显存预检预测器:如果预测占用超过预算,训练会直接拒绝启动,而不是让用户撞上内存溢出的报错。这个预测模型由十次真实运行拟合而来,官方公布的最坏误差为 0.85%,且偏差只朝向安全的一侧。作者还提到一个容易被忽视的陷阱:在 Windows 上超过显存并不会立刻报错,而是静默地把速度拖慢约九倍,这个预检器正是为了避免这种情况。此外,层流的一个隐患是即使流式执行失败,损失曲线有时仍会继续下降,因为上层网络仍在学习,表面上看起来「训练在推进」;正因如此,官方在每个版本都保留与常规执行对比 logits 的验证协议。
创新点
-
把显存不足转化为带宽问题:传统的显存优化思路是压缩、卸载或分片,Soup 换了个方向——承认基座模型不需要常驻显存,用逐层流式搬运加上双缓冲异步预取把访存延迟藏进计算里。
-
用逐位一致性作为正确性标准:官方没有满足于「训练能收敛」,而是断言层流执行与常规执行的结果逐位一致,并把这个断言做成可复现的验证脚本发布出来,同时保留在每个版本的验证协议中。
-
显存预检替代内存溢出报错:把显存预算从「撞上才报错」变成「提前拒绝启动」,并且用十次真实运行拟合预测模型、公布误差上界与偏向方向,这是一种把不确定性显式化的工程态度。
-
零配置与全可配置并存:autopilot 让新手只给三个参数就能开跑,而配置层对每一个字段都开放覆写,配置模式本身还被当作单一事实来源用于校验,未知字段会被拒绝加载而非静默忽略。
-
把治理与供应链安全做成框架内的默认能力:内置多套合规框架的初始化模板、物料清单与可复现回执、审计日志、气隙部署支持以及模型卡自动生成,这在个人开发者主导的微调框架中相当少见。
评估标准
如果要把 Soup 放进选型清单,建议从五个维度考察。第一是显存与内存的双重预算,层流解决的是显存,但它把压力转移到了内存,因此需要同时确认机器内存是否足以承载整个量化后的基座模型,官方建议 16GB 以上,并确认存储介质是 NVMe 而非 SATA。第二是任务覆盖与数据格式的匹配度,需要核对所需的训练任务是否在支持谱系内,以及现有数据集能否被自动识别,避免在数据预处理上额外投入。
第三是正确性验证链路,应重点确认所选版本是否保留了与常规执行对比 logits 的验证机制,以及在你的具体基座模型与配置上是否通过,这一点对层流这类涉及数值路径改动的优化尤其关键。第四是版本稳定性与迁移成本,v0.75.0 引入了未知配置键硬失败与 GRPO 目标函数变更两项破坏性调整,已经在用的配置需要预留迁移与回归验证的时间。第五是发布门禁的可靠性,框架提供了模型发布前的评测门禁,但官方也坦承早期版本存在评测套件排序错误、拒绝率单向检测等问题,最新的噪声底机制允许通过重复运行基座模型来判定增益是否显著,评估时应确认这一机制在你的场景中是否被启用。
应用领域
-
个人开发者与小团队的本地微调实验:只有一台 4GB 到 8GB 显存的笔记本或台式机,希望在自己的机器上完整跑一遍大模型微调流程,而不必租用云端算力或远程登录服务器。
-
垂直领域的领域适配:医疗、法律、客服等场景下,用自有数据对开源基座做指令微调或偏好对齐,让模型掌握领域术语与回答规范。官方提供的医疗模板可以直接作为起点。
-
多模态能力补齐:需要让模型看图或处理音频的团队,可以用图文数据微调视觉语言模型,或用 Whisper 系列在特定口音与专业领域上做语音识别微调。
-
偏好对齐与强化学习研究:需要在本地做小规模偏好对齐实验的研究者,可用框架内置的多种偏好损失函数与小体量模型快速验证假设,再决定是否扩大规模。
-
合规敏感行业的模型定制:金融、医疗等需要满足审计与数据不出域要求的组织,可借助内置的合规模板、物料清单、审计日志与气隙部署能力,在本地闭环完成模型定制。
-
模型效果回归与发布门禁:需要回答「这次微调到底让模型变好了还是变坏了」的团队,可以使用内置的评测门禁与噪声底机制对候选模型做发布前判定。
项目地址
Soup 由开发者 MakazhanAlpamys 以 Apache-2.0 许可证开源,代码仓库创建于 2026 年 2 月 20 日,目前已积累 6712 颗星标与 1049 次复刻,仓库以 Python 为主要语言,占比约 98%。项目在 2026 年 9 月 16 日仍有提交活动,最新版本 v0.75.0 发布于 9 月 12 日,仓库共有 64 位贡献者。
项目官网提供产品介绍与快速上手入口;代码仓库托管于 GitHub,可直接查看源码、配置模式与发布记录;官方文档位于仓库的 docs 目录下,按训练任务、参数高效微调与效率、性能与量化、数据工程、评测与探针、服务与导出、适配器与治理、合规、后端与运维、命令参考、支持模型等主题分册编排。
此外,项目的层流技术方案有一篇配套论文,DOI 为 10.5281/zenodo.21771064,仓库的 benchmarks 目录下公开了全部测量记录,包括在测量过程中撤回的三次读数。
-
项目官网:https://trysoup.dev
-
代码仓库:https://github.com/MakazhanAlpamys/Soup
-
官方文档:https://github.com/MakazhanAlpamys/Soup/tree/main/docs
同类型工具比较
LLM 微调框架这一层已经相当拥挤,Soup 的位置需要放进坐标系里才能看清。下表把当前较有代表性的几个框架放在一起对照,重点比较配置方式与低显存能力这两个差异最大的维度。
|
框架
|
核心定位
|
主要配置方式
|
低显存能力
|
差异化特色
|
|---|---|---|---|---|
|
Soup(本期)
|
一个 YAML 完成微调与后训练
|
YAML 配置加命令,另有浏览器仪表盘与零配置模式
|
层流实测 3.32GB 峰值跑 8B,有 Colab 可复现验证
|
逐位一致的层流优化、显存预检拒跑、内置合规与治理工具链
|
|
Axolotl
|
面向生产的多任务微调运行时
|
YAML 加命令行,支持多卡与分布式编排
|
以 QLoRA、DeepSpeed、FSDP 为主,极低显存非主攻方向
|
训练任务与方法覆盖广,集群化部署与规模化训练生态成熟
|
|
LLaMA-Factory
|
中文社区普及度最高的微调一体化工具
|
WebUI 图形界面加 YAML 双通道
|
支持量化与部分卸载,通常要求 8GB 以上显存
|
中文文档与模型中文支持完善,图形界面功能密集,上手材料丰富
|
|
Unsloth
|
以训练速度与显存效率为核心卖点
|
Python 代码为主,官方提供少量配置封装
|
官方给出的 8B 最佳情况约 8GB,低于此需自行取舍
|
手写算子带来显著的训练加速,速度优势在同类中突出
|
|
Torchtune
|
PyTorch 官方出品的研究型微调库
|
配置加脚本,贴近 PyTorch 原生写法
|
依赖既有分布式与量化能力,无专门的极低显存路径
|
与 PyTorch 生态同频,代码可读性与可改造性高,适合研究与深度定制
|
从对照可以看出,Soup 选的是一个相当具体的切口:它不与 Axolotl 争生产集群、不与 Unsloth 争绝对速度,而是把「显存不够」这个最现实的阻塞点作为主攻方向,并用零配置与浏览器界面把使用门槛进一步压低。代价则在于它的极端场景依赖内存与 NVMe 存储,多卡与更大规模模型仍带硬件门控标注,属于单点突破型而非全能型选手。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...