文章目录
- Soup v0.72.4技术解析:层流式QLoRA如何在4GB显存微调8B模型
- 一、引言
- 二、QLoRA之后为什么还需要Layer Streaming
- 2.1 显存都花在哪里
- 2.2 数据流
- 三、v0.72.4:让偏好对齐也能流式运行
- 3.1 DPO的第二个模型怎么省掉
- 3.2 四种偏好损失
- 3.3 内存免费,时间不免费
- 四、安装与配置实战
- 4.1 安装
- 4.2 4GB显存的SFT配置
- 4.3 DPO配置
- 五、性能、正确性与已知限制
- 六、横向对比:本地小显存训练怎么选
- 七、总结
Soup v0.72.4技术解析:层流式QLoRA如何在4GB显存微调8B模型
一、引言
亲爱的朋友们,创作不容易,若对您有帮助的话,请点赞收藏加关注哦,您的关注是我持续创作的动力,谢谢大家!有问题请私信或联系邮箱:jasonai.fn@gmail.com
QLoRA 把基座权重量化到 4 bit,只训练小型 LoRA 适配器,已经显著降低微调门槛。但一个 8B 模型的量化权重、激活、优化器状态和 CUDA 缓冲区叠加后,通常仍超出 4 GB 笔记本 GPU 的舒适范围。
开源训练工具 Soup 在 v0.72 系列引入 Layer Streaming:冻结基座不常驻显存,而是从主机内存或 NVMe 按解码层送入 GPU。项目在 RTX 3050 Laptop 4 GB 上报告,Llama-3.1-8B-Instruct+NF4+LoRA、序列长度 512 的训练峰值为 3.32 GB,吞吐 119.6 tok/s,并与常驻权重运行做到 bit-exact。
2026 年 8 月 3 日发布的 v0.72.4 又把流式训练从监督微调扩展到 DPO、ORPO、SimPO 和 KTO。它解决的不是“4 GB 显存装下完整 8B 模型”,而是让冻结权重按层经过显存,只有适配器和当前计算所需状态驻留。
二、QLoRA之后为什么还需要Layer Streaming
2.1 显存都花在哪里
| 项目 | 全参微调 | 普通QLoRA | Soup Layer Streaming |
|---|---|---|---|
| 基座权重 | 高精度常驻GPU | 4bit常驻GPU | 4bit存RAM/NVMe,按层送GPU |
| 可训练参数 | 全部参数 | LoRA适配器 | LoRA适配器 |
| 优化器状态 | 很大 | 只覆盖LoRA | 只覆盖LoRA |
| 激活 | 取决于序列和批量 | 仍是主要变量 | 仍是主要变量 |
| 传输开销 | 低 | 低 | 每步多次读取层权重 |
QLoRA 解决“权重精度与训练参数量”,Layer Streaming 进一步解决“冻结基座是否必须常驻显存”。代价是 PCIe、内存或磁盘传输进入训练热路径。
2.2 数据流
RAM中的NF4基座 / NVMe权重 │ ▼ 逐层读取 GPU双缓冲区:Layer N计算时预取Layer N+1 │ ├─ 冻结基座前向/反向所需计算 └─ LoRA参数常驻并更新 │ ▼ 下一层覆盖缓冲区,直至完成一轮核心条件是基座冻结。若每一层完整权重都要更新,权重、梯度和优化器状态不能简单流过即丢;LoRA 只训练低秩增量,才使“基座移动、适配器驻留”成立。
三、v0.72.4:让偏好对齐也能流式运行
3.1 DPO的第二个模型怎么省掉
DPO 需要比较策略模型与参考模型。普通实现会保留第二份冻结模型,正好抵消流式省内存的意义。Soup 使用同一份流式基座:计算参考输出时关闭 LoRA 适配器,计算策略输出时打开适配器,不建立第二个模型实例。
同一份流式基座权重 │ ├─ LoRA ON ─► policy log-prob └─ LoRA OFF ─► reference log-prob发布测试使用一个 730.44 MB 模型作为控制:流式 DPO 峰值 81.87 MB,流式 SFT 为 89.53 MB;强制创建真实第二模型则达到 812.32 MB,多出的 730.44 MB 正好是一份权重。这个小模型测试用于证明“没有第二实例”,不能与 8B 模型 3.32 GB 的整机峰值直接比较。
3.2 四种偏好损失
| 方法 | 是否需要参考模型 | v0.72.4处理 |
|---|---|---|
| DPO | 需要 | 同一基座关闭适配器作为参考 |
| KTO | 需要 | 与DPO相同;batch size至少2 |
| ORPO | 不需要 | 直接在流式策略上计算 |
| SimPO | 不需要 | 直接在流式策略上计算 |
项目特别澄清 KTO 并非真正 reference-free;GRPO 和 PPO 则明确不支持 Layer Streaming,因为 rollout 生成每输出一个 Token 都要重新读取全部层,无法摊薄传输成本。
3.3 内存免费,时间不免费
DPO 每步读取层栈的次数约为 SFT 的 1.52 倍。Layer Streaming 让参考模型在显存上“免费”,并不让额外前向在时间上消失。若主机内存带宽、PCIe 或 NVMe 较慢,训练速度可能明显下降。
四、安装与配置实战
4.1 安装
python-mvenv .venvsource.venv/bin/activate pipinstall-U"soup-cli[train]"soup doctor项目要求 Python 3.10+。v0.72.4 将 TRL 约束到>=0.7.0,<0.25,因为较新 TRL 分阶段移除了多种偏好 Trainer 使用的配置字段;自行升级 TRL 可能导致导入或初始化失败。
4.2 4GB显存的SFT配置
base:meta-llama/Llama-3.1-8B-Instructtask:sftdata:train:./data/train.jsonlformat:chatmlmax_length:512training:stream_layers:truestream_source:autoquantization:4bitbatch_size:1lora:r:16alpha:32target_modules:[q_proj,v_proj]output:./outputsoup train--configsoup.yaml soup chat--model./output soupexport--model./output--formatgguf--quantq4_k_m4.3 DPO配置
base:meta-llama/Llama-3.1-8B-Instructtask:dpodata:train:prefs.jsonlmax_length:512training:stream_layers:truequantization:4bitbatch_size:1lora:r:16target_modules:[q_proj,v_proj]4 GB 成功记录使用特定 RTX 3050、NF4、batch 1 和 seq 512,不代表任意 8B、任意上下文都能装下。词表大小、架构、驱动、显示占用和桌面系统都会改变峰值。
五、性能、正确性与已知限制
| 项目 | 官方记录/说明 |
|---|---|
| 8B实测 | RTX 3050 Laptop 4GB,峰值3.32GB,119.6 tok/s |
| 正确性 | 与相同损失的非流式运行bit-exact,差异0.0 |
| 数据源 | 基座可来自RAM,放不下时可来自NVMe |
| 状态 | Layer Streaming仍为BETA |
| 不支持 | 流式GRPO/PPO,因逐Token rollout反复读层 |
VRAM pre-flight 对偏好损失采用保守上界,可能拒绝实际能运行的长序列,官方建议降低max_length。此外,v0.72.0 流式训练保存的适配器曾因键名多出.inner.而不生效,已在 v0.72.1 修复;旧适配器应检查并重新训练或转换。
六、横向对比:本地小显存训练怎么选
| 路线 | 显存策略 | 优势 | 代价 |
|---|---|---|---|
| Soup Layer Streaming | 冻结基座按层从RAM/NVMe送GPU | 4GB可训练8B,单YAML,支持偏好损失 | 传输慢,仍为Beta |
| 普通QLoRA | 4bit基座常驻GPU | 工具和文档成熟、吞吐高 | 8B通常需要更多可用显存 |
| CPU/NVMe Offload | 参数或状态分层卸载 | 通用框架支持较多 | 配置复杂,性能依实现而异 |
| 云GPU | 全部常驻大显存卡 | 速度快、可扩展 | 费用、数据边界与运维 |
Soup 适合个人实验、教学和小数据 LoRA,不等于 4 GB 笔记本已经能经济地进行大规模后训练。数据量大、上下文长或时间敏感时,16~24 GB 本地卡或云 GPU 仍更现实。
七、总结
| 维度 | 核心结论 |
|---|---|
| 核心机制 | 冻结NF4基座存于RAM/NVMe,按解码层送入GPU,LoRA适配器常驻训练 |
| 4GB实测 | Llama-3.1-8B在RTX 3050 Laptop上峰值3.32GB,官方记录119.6 tok/s |
| 版本升级 | v0.72.4新增DPO、ORPO、SimPO、KTO的流式偏好训练 |
| 参考模型 | DPO/KTO复用同一基座并关闭适配器,不创建第二份权重 |
| 真实代价 | 省显存但增加层读取;架构仍为Beta,不支持GRPO/PPO rollout |
Soup v0.72.4 把“能否微调”与“模型能否常驻显存”拆开了。对冻结基座而言,权重不必一直待在最昂贵的存储层;只要接受更多传输时间,4 GB 笔记本也能完成过去需要更大显存的 8B LoRA 与偏好对齐实验。
参考资料:
- Soup官方仓库
- Soup v0.72.4发布说明
- Exact Layer Streaming论文与测量记录