dsh-fine-tune: Fine-tune local small models with LoRA/QLoRA in DSH

前言

写的是智能体应用的人,多半会碰到一个坎:全栈模型好用,但它跑在别人的服务器上,你手里只有 API。要用 API 之外的产出——换基座、加领域语料、做可复现的实验——就得自己有一只能落地的卡。另一个常见妥协是脚本化训练:翻多个脚本,拼配置,盯显存,最后还得自己写评测,跑通一次要一整天。

下面介绍的 songrui111/dsh-fine-tune(DSH plugin,作者 songrui111,分类「模型推理」)把这件事收进一个面板里:导入数据 → 训练 → 评测 → 导出,产物是一个几十 MB 的 LoRA 适配器。目录页见 https://www.skillhub.cn/plugins/songrui111/dsh-fine-tune ,仓库见 https://github.com/songrui111/dsh-fine-tune 。

这是什么

一句话:在 DeepSeek Harness 里微调一个下载到你自己机器上的开源小模型(Qwen / Llama 系的 QLoRA / LoRA),不需要命令行写死一整套训练脚本。

它解决的是「小模型在自己卡上做领域适配,并且过程可见、数字可比」这件事。它不能做的事也很明确,README 一开始就讲:微调不了你正在聊天的那个云端模型——你没有它的权重;macOS 没有 CUDA,训练不可行;显存不够训大模型是物理限制。

作者只在 RTX 3060 Laptop 6 GB + Windows 11 上完整跑通(安装、训练、评测、导出),其余环境未验证,这点下面单列。

硬件和系统要求

项 要求
系统 Windows 10/11(Linux 未验证,安装器目前直接拒绝非 Windows 平台)
显卡 NVIDIA,6 GB 显存起
驱动 支持 CUDA 11.8 以上
Python 3.10+(用来建虚拟环境)
磁盘 约 10 GB(依赖 3-5 GB + 模型 1 GB + 数据)

显存对应的训练能力,README 里给出的是实测/推算值:

显存 能训
6 GB 0.5B(QLoRA,seq ≤ 1024),显存峰值 2.86 GiB
8 GB 1.5B
12 GB 3B
24 GB 7B

其中 6 GB 一档是实测标定,8/12/24 GB 是按显存推算,不是实测。

安装与启用

README 给出的安装路径是插件市场,没有写 dsh plugin add 之类的命令:

  1. 在插件市场安装本插件
  2. 打开面板,顶部会提示「训练需要 Python 环境」,点安装环境
  3. 等待 10-20 分钟(下载 torch 等约 3-5 GB)
  4. 装完会验证 GPU 真的能跑矩阵乘法,不只是能 import

环境装在 $DSH_HOME/fine-tune/venv,重装插件不用重下。

装完的面板上有 「导入示例数据集」 按钮(60 条,只在数据集列表为空时出现,文件在 sample/sample.jsonl),点一下就能先把流程跑通。

安装失败时的自检:

报错 原因
nvidia-smi 不可用 没有 N 卡,或驱动没装
没有匹配的 torch 轮子 驱动太旧,升级驱动
显存不足 4 GB 以下训练不可行(装完也训不动,所以不下载)
找不到 Python 3.10+ 装 Python 并勾选 Add to PATH

package.json 里对宿主和 peer 依赖的要求是 engines.dsh >= 0.1.7-rc.2、peerDependencies: @deepseek-ai/schemastery >= 3.18.0,插件版本 0.6.0。

典型用法

1. 准备数据

JSONL,每行一个对话。两种写法都行:

{"messages":[{"role":"user","content":"问题"},{"role":"assistant","content":"答案"}]}

简写版:

{"prompt":"问题","response":"答案"}

建议 100 条以上。少于 20 条,训出来的差别大概率在噪声里。

导入后先在面板里看数据卡(样本数、token 分布、去重结果),再进训练。

2. 训练

「数据」页勾选数据集 → 「下一步」→ 选模型和序列长度 → 「开始训练」。

6 GB 显卡的一组关键参数:

参数 值
模型 Qwen2.5-0.5B-Instruct
训练方式 QLoRA
序列长度 1024

训练启动前有显存预估框:放不下就不启动,不会跑到一半 OOM。看预估框是绿色再点开始。

3. 评测

「评测与发布」页,跑 20 条,看工具调用准确率和文本相似度。之后可以导出 adapter、合并权重,或导出 GGUF 给 Ollama。

实测数据(RTX 3060 Laptop 6 GB)

在 1614 条工具调用样本上训练 Qwen2.5-0.5B:

项 结果
耗时 18.3 分钟(190 步)
显存峰值 2.86 GiB
loss 1.49 → 0.68
工具调用准确率 0% → 10%
文本相似度 F1 0.005 → 0.271
沾题率 0% → 90%

底座 0% 是正常的:0.5B 原本不会输出那种 JSON 结构。10% 是 0.5B 在这项任务上的真实水平,不是训练没做好;要更高准确率只能换更大模型,需要更大显存。

有一个坑值得记下来:把数据集的上下文压缩掉之后(为了塞进更短的序列),train_loss 卡在 1.61 不降,完全学不到东西;原版数据能降到 0.68。提示里的历史上下文是决策依据,不是冗余,不要为了省显存去裁剪它——用更大的序列长度,或者接受截断。

已知限制

已验证:Windows 11 + RTX 3060 6 GB,torch 2.5.1+cu121 / transformers 4.46.3 / peft 0.13.2 / bitsandbytes 0.44.1,本机训练、评测、导出完整链路。

未验证:

项 说明
Linux 代码写了,安装器和训练一次都没在 Linux 上跑过
其他显卡型号 只在这块 3060 上测过
远程 SSH 后端 有端到端测试(11/11 通过),但用的是模拟 SSH 服务器,没连过真实远程 GPU
CUDA 11.8 轮子 驱动太旧时安装器会选它,未实测
多卡 不支持

架构上,宿主侧 index.js 负责路由、权限门和训练进程管理,client/client.js 是面板,lib/ 下是显存估算、参数校验、CUDA 轮子选择、安装、本机/SSH 后端、数据集读写;python/fnt_worker/ 是训练、评测、导出的 Python worker。README 说明了用 venv 而不是打包依赖的原因:torch 版本取决于显卡,3-5 GB 的包体积也超过插件应有的范围,装错版本比不装更难排查。

适用场景与注意

适合:手上有 NVIDIA 显卡、想在 DSH 里对较小的开源模型做领域适配或工具调用格式对齐,并且接受 0.5B–7B 这个量级的玩家。它把数据导入、显存预估、训练、评测、导出收在一个面板里,适合先跑通流程、再看数字是否可接受。

不建议:需要训 7B 以上、需要多卡、或者期望微调云端模型的人。Linux 用户目前装不上,远程 SSH 后端没连过真实 GPU,两处都不要当成已验证能力。

还有两点要注意。第一,插件是在当前 DSH 进程里运行的,用的就是当前进程的权限,安装前先看一眼源码(仓库里列出了 files 清单)和许可证,MIT。第二,目录页是社区站点,与 DeepSeek / 幻方没有官方从属关系,不是官方应用商店。

结尾

这个插件的价值不在于把一个大模型训出多高的分数,而在于把「导入数据 → 训练 → 评测 → 导出」这条链路收进面板,让本地小模型的适配变成一次可重复、数字可判定的实验。前提是你接受它只在 Windows + RTX 3060 Laptop 6 GB 上验证过这个事实。

目录页:https://www.skillhub.cn/plugins/songrui111/dsh-fine-tune
仓库:https://github.com/songrui111/dsh-fine-tune

安装前请自行检查源码与许可证。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye