# Soup v0.72.4：在4 GB显存笔记本GPU上微调8B模型

- 来源：Hacker News 热门（buzzing.cc 中文翻译）
- 作者：MakazhanAlpamys
- 发布时间：2026-08-05 02:17
- AIHOT 分数：73
- AIHOT 标记：精选
- AIHOT 链接：https://aihot.virxact.com/items/cmsezylz31cadro2eoq1np3vh
- 原文链接：https://github.com/MakazhanAlpamys/Soup

## 精选理由

Soup 将 8B 模型微调压低到 4GB 显存笔记本，使得原本受 GPU 预算限制的个人开发者也能直接在本地迭代模型行为。

## AI 摘要

Soup 推出 v0.72.4，支持在配备 4 GB 显存的笔记本 GPU 上通过 QLoRA 微调 8B 模型，无需 SSH 或云服务。

## 正文

Soup

一条命令完成大语言模型的微调与后训练。无需 SSH，无需繁琐配置。

官网 · 快速上手 · 配置 · 文档 · 命令 · 模型 · Discord

Soup 将大语言模型微调的痛点转化为简单的工作流。一份配置，一条命令，搞定。

pip install "soup-cli[train]" # add [train] to fine-tune; bare `soup-cli` is the light CLI soup init --template chat soup train

为什么选择 Soup？

训练大语言模型仍然很痛苦。即便是经验丰富的团队，也要花 30-50% 的时间与基础设施搏斗，而不是改进模型。Soup 解决了这个问题。

零 SSH。再也不用 SSH 登录到出故障的 GPU 机器上。

一份配置。只需要一个简单的 YAML 文件。

全自动。批大小、GPU 检测、量化——统统自动处理。

本地运行。用 QLoRA 在自己的 GPU 上训练，无需云端。

最新动态

v0.72.4 —— 在笔记本上对齐：通过层流式传输（layer streaming）支持 DPO、ORPO、SimPO 和 KTO。层流式传输将冻结的基础模型排除在显存之外，一次只向 GPU 喂入一个解码器层。此前它只支持监督微调；现在也能运行这些偏好损失了。

DPO 的参考模型是免费的。DPO 需要一个参考模型来对比，而模型的第二份副本会使显存翻倍，违背初衷。Soup 使用同一个流式传输的基础模型，并关闭其适配器——一组权重，一条流。在 RTX 3050 4 GB 上实测：流式 DPO 的峰值显存占用为监督微调峰值的 0.914 倍。在同一测试中强制加载真正的第二份模型要多占 +730 MB——恰好是一份权重的体积。

KTO 并非无参考模型，尽管它通常被这样描述：它选取参考模型的方式与 DPO 相同，因此也采用同样的处理方式。ORPO 和 SimPO 才是真正无参考模型的。

与同一损失函数的普通非流式运行逐位一致——差异为 0.0，这是该系列每个版本都必须达到的标准。

显存预检知道配对损失的行数是两倍，因为 chosen 和 rejected 会作为一个张量一起通过模型。

诚实的成本：参考模型在显存上是免费的，但在时间上不是——DPO 每步读取层栈的频率是监督微调的 1.52 倍。

grpo / ppo 有意保持不支持：生成过程每个 token 都要重新读取每一层，这正是流式传输无法摊薄的开销。

仍为 BETA 版。

# soup.yaml — then just `soup train --config soup.yaml` training: stream_layers: true # base streams out of VRAM; only the adapter trains quantization: 4bit # NF4 — ~4x smaller store, so 8B fits a 4 GB card batch_size: 4 # v0.72.3: bigger batches amortise the weight read stream_source: auto # RAM when it fits, NVMe disk when it does not

在 v0.72.0 上以 stream_layers: true 训练？那个适配器是无效的——它的张量保存在带有额外 .inner. 段的键下，所以每个加载器都返回了未调优的基础模型。已在 v0.72.1 中修复；请重新运行或重新保存。用以下命令检查：python -c "from safetensors.torch import load_file; print([k for k in load_file('adapter_model.safetensors') if '.inner.' in k][:3])"

上一版本——v0.71.40，soup 奖励合成（从你的数据生成一个奖励验证器）

将 soup 奖励合成指向一个参考输出的 JSONL 文件，它会推断出一个确定性验证器，写出一个可读/可提交的 .py 奖励函数，并且——这是别人都做不到的部分——拒绝生成一个无法区分你的参考输出和错误答案的验证器（四个类别：numeric / json_schema / regex / tool_call；强制性的校准报告就是护城河）。奖励集成（reward_fn: "accuracy,format"）现在也可以训练了。（#311）

soup reward synth references.jsonl -o reward.py --output-report calib.json

上一版本——v0.71.39，针对权重而非提示词的 CI（生成并溯源绑定发布判定）

soup ship 的判定变得可生成、可提交、且可溯源绑定：--emit-evidence 让一次运行重放产生完全相同的判定，soup.yaml 中的 eval.ship 加上 --config 让门禁策略可审查，而 --config 将证据绑定到产生它的确切配方上（过期证据 → 退出码 3）。soup ship --push owner/repo#N 会在 PR 上发布 SHIP / DON'T-SHIP 卡片。

上一版本——v0.71.38，门禁长出牙齿（真正的第二阶段回归门禁）

soup ship 的回归阶段变成了真格的：一个固定的、基于提取的评分器，覆盖七个内置离线测试套件（MCQ · 算术 · 工具调用 · JSON 有效性 · 安全/拒答）。一个在你的任务上表现优异但悄悄破坏工具调用的调优现在会得到 DON'T SHIP。零新增依赖。

soup ship --base ./base --adapter ./my-lora --task-eval my_task.jsonl # exit 0 = SHIP · 2 = DON'T SHIP · 3 = bad flags · 1 = runtime error

上一版本——v0.71.33，

soup draft

（测量投机解码）

soup draft measure 报告草稿模型的接受率以及真实的普通 vs 辅助 tok/s（退出码 0/2/1 用于 CI）；soup draft distill 将你的目标模型蒸馏成一个密集的小型草稿模型，自动接入 soup serve --auto-spec。在小型同族模型对上的诚实结果：蒸馏没有改变接受率（69.3% → 69.3%），辅助解码反而是净减速——而这正是你在部署投机解码之前想要的那个数字。

soup draft measure --target ./my-tuned-model --draft HuggingFaceTB/SmolLM2-135M-Instruct \ --prompts prod-prompts.jsonl # -> acceptance %, real tok/s, ship-or-not

完整历史记录：CHANGELOG.md · GitHub Releases。

快速上手

1. 安装

# Light core: CLI + config + data tools, no PyTorch pip install soup-cli

# Add the training stack (torch, transformers, peft, trl, datasets, …) pip install "soup-cli[train]"

# Everything (train + serve + ui + data) in one shot pip install "soup-cli[all]"

# Or from GitHub (latest dev) pip install git+https://github.com/MakazhanAlpamys/Soup.git

完整的 extras 列表（fast、mlx、serve、eval、ui、vision、audio 等）位于 docs/models.md。

请使用双引号包裹 extra。双引号是唯一在所有 shell（cmd.exe、PowerShell、bash 和 zsh）中都能正常工作的写法。

较旧的教程和视频（包括我们的一些内容）展示的是单引号写法 `pip install 'soup-cli[train]'`。那是 bash / zsh / PowerShell 的语法，在 Windows cmd.exe 上会失败，因为 cmd.exe 没有单引号引用机制，会把引号原样传给 pip：

ERROR: Invalid requirement: "'soup-cli[train]'": Expected package name at the start of dependency specifier

如果遇到这种情况，把 `'` 换成 `"` 即可——是 pip 在拒绝字面引号字符，包本身没有问题。（在 Windows 上完全去掉引号也可以，但 zsh 会把 `[train]` 当作通配符解析而失败。）

`soup init`、`soup data …` 以及其他数据/检查命令在精简安装下即可运行。微调（`soup train`）需要 `[train]` extra。

2. 创建配置

soup init # interactive wizard soup init --template chat # or start from a template

模板：chat、code、tool-calling、medical、reasoning、vision、kto、orpo、simpo、ipo、bco、rlhf、pretrain、moe、longcontext、embedding、audio。

3. 训练、测试、发布

soup train --config soup.yaml # LoRA, quantization, batching — all handled soup chat --model ./output # talk to your model soup push --model ./output --repo you/my-model

soup merge --adapter ./output # merge LoRA into the base soup export --model ./output --format gguf --quant q4_k_m # GGUF for Ollama / llama.cpp

更多导出目标（ONNX、TensorRT、AWQ、GPTQ、BitNet）和部署选项位于 docs/serving-and-export.md。

配置

一份完整的 soup.yaml：

base: meta-llama/Llama-3.1-8B-Instruct task: sft # backend: unsloth # 2-5x faster, pip install "soup-cli[fast]"

data: train: ./data/train.jsonl format: alpaca val_split: 0.1

training: epochs: 3 lr: 2e-5 batch_size: auto lora: r: 64 alpha: 16 quantization: 4bit

output: ./output

config/schema.py 是每个字段的唯一权威来源。高级数据、训练和 PEFT 选项在 Documentation 下有文档说明。

文档

完整功能参考位于 docs/。从这里开始：

指南 涵盖内容

训练任务与方法 SFT、DPO/GRPO/PPO/KTO/ORPO/SimPO/IPO/BCO、工具调用、PRM、预训练、知识蒸馏、分类、视觉/音频/TTS、遗忘学习、RAFT/RA-DIT、循环加固检测器

PEFT、长上下文与效率 DoRA、LoRA+、rsLoRA、VeRA、OLoRA、NEFTune、PiSSA、ReLoRA、优化器与 PEFT 工具集、LLaMA Pro、GaLore、YaRN/LongLoRA、打包、课程学习、自动调优

性能与量化 QAT、FP8、量化菜单（I 和 II）、KV 缓存、NVFP4、保存格式、Cut Cross-Entropy、梯度检查点、内核、激活卸载、层流式传输、多 GPU / DeepSpeed / FSDP

数据工程 格式、Axolotl/LF 对齐流水线、数据工具、合成生成与锻造、质量评分卡、追踪工具、远程数据集、混合、配方 DAG

评估与探针 评估设计与门禁、评估门控训练、基准测试、NLG 指标、校准、Elo 竞技场、诊断、训练后 X 射线探针、A/B 测试、漂移、可调性、模型融合建议

服务与导出 OpenAI 兼容服务器、批量推理、基准测试、合并/导出、Anthropic Messages 端点、推测解码（训练并测量你自己的草稿模型）、自动部署、Web UI、Agent Forge

适配器、注册表与治理 适配器生命周期/管理、模型注册表、Soup Cans、数据飞轮（模型融合循环）、知识编辑、引导控制、供应链管控（扫描/签名/BOM/证明/审计/物理隔离）

合规与治理快速入门 HIPAA/SOC2/EU-AI-Act/SR-11-7 初始化模板、溯源（BOM/证明/可复现凭证）、审计日志、物理隔离、模型卡自动生成（soup card）、CI 门禁（soup ci init）

后端、平台与运维 MLX/Unsloth 后端、替代模型中心、HF Hub 集成、自动部署、实验跟踪、计划/应用、环境锁文件、硬件适配、补全、插件、实用命令

命令参考 完整的 soup 命令列表

支持的模型与扩展 推荐模型系列、VRAM 容量指南、pip 扩展矩阵

数据格式

所有格式均可从 JSONL、JSON、CSV、Parquet 或 TXT 自动检测：

alpaca — {"instruction": ..., "input": ..., "output": ...}

sharegpt — {"conversations": [{"from": "human", "value": ...}, ...]}

chatml — {"messages": [{"role": "user", "content": ...}, ...]}

dpo / orpo / simpo / ipo — {"prompt": ..., "chosen": ..., "rejected": ...}

kto — {"prompt": ..., "completion": ..., "label": true}

llava / sharegpt4v（视觉）、音频、纯文本（预训练）、嵌入向量、prm、预分词、视频、多模态

完整 schema 以及与 Axolotl/LlamaFactory 对齐的数据管道（远程 URI、流式处理、分片、交错、词表扩展、文档摄取）详见 docs/data.md。

常用命令

soup train --config soup.yaml # train (SFT/DPO/GRPO/PPO/KTO/ORPO/SimPO/IPO/...) soup infer --model ./output --input prompts.jsonl # batch inference soup chat --model ./output # interactive chat soup serve --model ./output # OpenAI-compatible API server soup merge --adapter ./output # merge LoRA into the base model soup export --model ./output --format gguf # export for deployment soup eval benchmark --model ./output # evaluate soup data inspect ./data/train.jsonl # dataset stats soup recipes list # 100+ ready-made model recipes soup autopilot --model <id> --data d.jsonl --goal chat # zero-config soup doctor # check GPU / deps / environment

完整命令列表见 docs/commands.md。

支持的模型

Soup 可与 HuggingFace Hub 上的任何文本生成模型配合使用——只要它能通过 AutoModelForCausalLM 加载，就能直接运行，零配置改动。Llama 3.x/4、Qwen 2.5/3、Gemma 3、Mistral、Mixtral、DeepSeek R1/V3、Phi-4 以及 100 多个其他模型均自带现成配方（soup recipes list）。

VRAM 最大模型（QLoRA 4-bit） 示例

8 GB 约 7B Llama-3.1-8B、Mistral-7B

16 GB 约 14B Phi-4-14B、Qwen2.5-14B

24 GB 约 34B CodeLlama-34B、Yi-1.5-34B

48 GB 约 70B Llama-3.3-70B

80 GB 以上 70B 以上（完整版）或 MoE Mixtral-8x22B、DeepSeek-V3

完整模型 + 视觉表格以及可选扩展矩阵见 docs/models.md。

Docker

无需在本地安装 CUDA 或 PyTorch 即可运行 Soup（镜像在每次发布时发布到 GHCR）：

docker pull ghcr.io/makazhanalpamys/soup:latest docker run --gpus all -v $(pwd):/workspace ghcr.io/makazhanalpamys/soup train --config soup.yaml docker compose up # or build locally

环境要求

Python 3.10 及以上

支持 CUDA 的 GPU（推荐）、Apple Silicon（MPS）或 CPU（实验性——速度非常慢）

7B 模型使用 QLoRA 需要 8 GB 以上显存

所有训练任务均可在 CPU 上运行以进行测试（量化自动禁用）。可选扩展（train、all、fast、vision、qat、serve、serve-fast、ui、eval、deepspeed、liger、mlx、onnx、tensorrt 等）列于 docs/models.md。

故障排查

soup doctor # GPU, system resources, dependencies, and version in one place

ImportError：导入 _C 时 DLL 加载失败（Windows）——请为你的 CUDA 版本重新安装 PyTorch：pip install torch --index-url https://download.pytorch.org/whl/cu121。

soup 版本 ≠ pip show soup-cli——存在多个 Python 安装；请使用虚拟环境。

开发

git clone https://github.com/MakazhanAlpamys/Soup.git cd Soup pip install -e ".[dev]"

ruff check src/soup_cli/ tests/ # lint pytest tests/ -v # unit tests (fast, no GPU) pytest tests/ -m smoke -v # smoke tests (downloads a tiny model, trains)

pre-commit install # optional: ruff lint+format on commit

完整工作流程请参阅 CONTRIBUTING.md，报告漏洞请参阅 SECURITY.md。

支持 Soup

Soup 采用 Apache-2.0 许可且完全免费——并将一直如此。它是在一台 4 GB 笔记本电脑上公开构建和维护的，因此本文档中的每一个性能数字都是实测得出的，而非凭空声称。

如果 Soup 帮你省下了一次训练任务，给仓库点个星标就是最大的帮助，而且完全免费。如果你想直接资助这项工作：

❤️ 捐赠——一次性，金额不限（在结账页面使用“更改金额”选项）。支付由 Stripe 在维护者注册的企业 MePlay, Inc. 名下处理——结账页面和你的银行卡账单上显示的是这个名字，而不是“Soup”。

捐赠将用于购买 GPU 算力，以推进受硬件限制的工作——多 GPU、8B 以上模型验证、Apple Silicon——这些是单台 4 GB 笔记本电脑无法完成的任务。

推进这些项目的另一种方式就是硬件本身。这些项目都诚实地标注了“需要 <硬件>”的门槛，而非未经证实的承诺，所以如果你能接触到更大的机器——或者有闲置的 GPU 额度——运行一个“待认领”问题并发布数据，其帮助不亚于资助 GPU 算力。这些问题明确列出了当前被硬件阻塞的具体事项。

贡献者

由社区共同构建 ❤️ —— 感谢每一位贡献者。详见 CONTRIBUTORS.md。

联系方式

Bug 和功能请求请提交到 issue 跟踪器，问题请发布在 Discussions 中——这两种方式都能得到更快的回复，也能帮助遇到同样问题的下一个人。

如需实时聊天、搭建帮助，以及任何更适合以对话形式交流的内容，欢迎加入 Discord。任何在六个月后仍应可查的内容，请发布在 Issues 或 Discussions 中——Discord 上的回答只能帮到一个人，而一个 issue 能帮到所有遇到同样问题的人。行为准则同样适用于那里。

任何不适合公开的内容——安全报告（见 SECURITY.md）、行为准则相关事宜，或媒体联系——请发送邮件至 team@trysoup.dev。这是项目官方地址，也是所有与 Soup 相关事宜的正确联系渠道。makazanalpamys@gmail.com 是维护者的个人邮箱；同样可以联系到同一个人，也是一个不错的备用选择。

引用 Soup

分层流式训练——通过在 4 GB 显存的笔记本电脑 GPU 上，从主机内存逐层流式加载冻结的基座模型，训练一个 8B 模型——在一篇预印本论文中有所描述，同时还包括正确性验证协议，该协议可验证流式运行与常驻运行的结果逐位完全一致：

Makazhan, A. (2026). Exact Layer Streaming: LoRA Fine-Tuning of an 8B Model on a 4 GB Laptop GPU. Zenodo. https://doi.org/10.5281/zenodo.21771064

其中每个数字背后的测量记录都存放在 benchmarks/ 中，按原始记录发布——包括失败案例、被证明是错误的假设，以及那些被测量后又被舍弃的数据。

@misc{makazhan2026exact, title = {Exact Layer Streaming: LoRA Fine-Tuning of an 8B Model on a 4 GB Laptop GPU}, author = {Makazhan, Alpamys}, year = {2026}, publisher = {Zenodo}, doi = {10.5281/zenodo.21771064}, url = {https://doi.org/10.5281/zenodo.21771064} }

许可证

Apache-2.0。版权所有 © Soup 贡献者。
