展示HN:在4GB笔记本GPU上微调8B模型
通过一个命令微调和后训练LLM。无需SSH,无需配置地狱。网站 · 快速入门 · 配置 · 文档 · 命令 · 模型 · Discord Soup将LLM微调的痛苦转化为简单的工作流程。一个配置,一个命令,完成。pip install "soup-cli[train]" # 添加[train]以进行微调;裸的`soup-cli`是轻量级CLI soup init --template chat soup train 为什么选择Soup?训练LLM仍然很痛苦。即使是经验丰富的团队也会花费30-50%的时间与基础设施作斗争,而不是改进模型。Soup解决了这个问题。零SSH。再也不用SSH进入损坏的GPU盒子。一个配置。您只需要一个简单的YAML文件。自动所有。批量大小,GPU检测,量化——全部处理。可以在本地工作。在您的GPU上使用QLoRA进行训练。无需云。 新功能v0.72.4——在笔记本上对齐:DPO,ORPO,SimPO和KTO通过层流。层流使得冻结的基础不占用VRAM,并将其逐层喂入GPU。以前它只支持监督微调;现在它也运行偏好损失。DPO的参考模型是免费的。DPO需要一个参考点进行比较,如果有第二份模型,则会使内存翻倍,这样就失去了整个意义。Soup使用相同的流式基础关闭适配器——一组权重,一条流。在RTX 3050 4GB上测量:流式DPO的峰值达到了监督微调峰值的0.914×。在同一测试中强制使用真实的第二个模型增加了+730 MB——恰好是权重的一个副本。然而,KTO并不是无参考的,尽管通常如此描述:它以DPO相同的方式选择参考,因此获得相同的处理。ORPO和SimPO确实是的。与正常的非流式运行的相同损失相比,误差为0.0,这是该系列每个版本必须清除的门槛。VRAM预飞行知道配对损失的行数是两倍,因为选择和拒绝作为一个张量通过模型。真实成本:参考在内存中是免费的,而且不是时间——DPO每步读取层堆栈的频率是监督微调的1.52倍。grpo / ppo故意被排除:生成每个token重新读取每一层,这正是流式无法摊销的。仍然是测试版。 # soup.yaml — 然后只需`soup train --config soup.yaml` 训练: stream_layers:true # 基础从VRAM中流出;只有适配器训练 量化:4bit # NF4 — ~4x更小的存储,因此8B适合4GB卡 batch_size:4 # v0.72.3:更大的批量摊销权重读取 stream_source:auto # RAM适合时使用,NVMe磁盘在不适合时使用 在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 reward synth(从您的数据生成奖励验证器) 将soup reward synth指向参考输出的JSONL,它推断出一个确定性的验证器,写入可读/可提交的.py奖励函数,并且——其他人都不做的部分——拒绝发出一个不能告诉您参考与错误答案的验证器(四个类别:数值/json_schema/正则表达式/工具调用;强制校准报告是护城河)。奖励合集(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使得运行重放为相同的判决,eval.ship在soup.yaml中+ --config使得门政策可审查,并且--config将证据绑定到产生它的确切配方(过时的证据→ 退出3)。 soup ship --push owner/repo#N在PR上发布SHIP / DON'T-SHIP卡。 上一个版本——v0.71.38,门增长了牙齿(真实的leg-2回归门) 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报告了草稿模型的接受率 + 实际的普通与辅助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 Huggi
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡