一件有点反常的事是:一个 7B/8B 级别的小模型,花大约 50 美元训练账单,就能写出一点 1990 年代微软技术手册的味道。
这不是微软官方项目,也不是商业发布。它是一名技术写作者做的个人实验:把 Bitsavers/Internet Archive 上的微软旧文档整理成语料,用 QLoRA 给 Llama 3.1 8B 和 Qwen 2.5 7B 训练适配器。
我更在意的不是“AI 能不能写文档”这个大问题,而是一个更窄的问题:低成本微调,能不能把小型本地 LLM 训练成可信的技术文档风格模仿者?
这次答案比较清楚:能摹形,但不能负责。
实验怎么做:旧手册语料,加 QLoRA 适配器
语料来自 Bitsavers/Internet Archive 收录的微软旧文档集合,覆盖 1977 年到 2005 年的过期手册,总规模约 3700 万词。
作者下载 OCR 文本后,用 Python 清理索引、前言等噪声。又通过 OpenRouter 调用 gemma-4-26b,对段落做保留或丢弃分类。这一步成本约 8 美元。
最终,语料被整理成 192456 条 JSONL 训练样本。
训练方式是 QLoRA。也就是说,作者没有从零训练一个新模型,而是在冻结底座模型权重的前提下,训练较小的 LoRA 适配器。训练跑在 Runpod GPU 上,总训练支出约 50 美元。
这个数字要小心看。50 美元只是这次个人实验里的训练账单,不包括数据清洗、人力时间、失败运行和反复调参成本。它不能直接换算成企业生产成本。
| 项目 | 事实 | 对读者的含义 |
|---|---|---|
| 语料 | Bitsavers/Internet Archive 微软旧文档,约 3700 万词 | 风格密度够高,实验才有意义 |
| 样本 | 192456 条 JSONL 训练样本 | 不是随手喂几篇文档就能复现 |
| 方法 | QLoRA 训练适配器 | 成本低,但受底座模型能力限制 |
| 模型 | Llama 3.1 8B、Qwen 2.5 7B 及多个微调版本 | 面向本地运行和个人/小团队试验 |
| 成本 | Runpod 训练约 50 美元 | 只能代表训练支出,不能代表稳定生产成本 |
作者也明确说明:非商业、非附属,不分发模型和适配器。这个边界很重要。
它更像一份技术写作者的实验笔记,不是一个可以采购的“微软文档生成器”。
结果如何:Qwen 更像旧手册,但也会认真胡编
测试任务有三个:给 C 函数 malloc() 写文档,给虚构 Win32 API ConnectWifi() 写文档,用 1990 年代微软手册风格解释 REST API。
未微调模型表现并不好。它们更容易输出今天常见的 Markdown、教程式说明,或者干脆不能稳定完成任务。非指令版 Llama base 表现尤其差。
微调后,差异拉开了。
Qwen 系列整体更能保留旧式技术文档的章节结构、正式语气和术语节奏。Qwen-192k 在 REST API 测试中表现最好,能把一个更偏现代的概念,写成类似 Windows 2000 Resource Kit 的章节开头。
Llama 微调版本也能学到一些格式和腔调,但更容易滑回现代说明文。它像是在“套模板”,Qwen 更像是在“续写旧手册”。
| 测试项 | 观察结果 | 说明的问题 |
|---|---|---|
| malloc() | 微调模型更容易生成旧手册式结构 | 风格、栏目、语气可以被学进去 |
| ConnectWifi() | 有的模型会编出常量、平台要求、交叉引用 | 风格越像,幻觉越有迷惑性 |
| REST API | Qwen-192k 表现最好 | 强风格迁移可以包装现代概念 |
| base model | 非指令模型表现很差 | 微调不能弥补所有交互能力缺口 |
最值得警惕的是 ConnectWifi()。这是一个虚构 API。
有的模型会识别设定,提醒它不存在。有的模型会顺着 90 年代微软文档腔,认真编出参数、常量、平台要求和 See Also。
这就是技术文档里最危险的地方:不是写得不像,而是写得太像。
作者还观察到,rank 和 epoch 会影响拟真程度和幻觉倾向。rank 较低的适配器有时更忠实地模仿腔调;rank 16 加较少 epoch 的组合,反而更容易把相近概念拉进来,出现 SOAP 等错配内容。
这也说明,它不是“调大参数就更好”的简单问题。风格、事实和服从设定之间,会互相拉扯。
对文档团队和开发者意味着什么:能进草稿流,别进终审位
对技术写作者和文档团队,这类微调最现实的用法不是替人写终稿,而是内化风格指南。
如果团队有大量干净的历史文档、API 说明、产品手册,可以考虑把小模型微调成草稿助手。它可以帮忙生成接近公司口径的初稿,也可以做一点风格一致性检查。
但采购和流程上要保守。文档团队不该因为“50 美元训练”就把它当成可上线系统。更合理的动作是:先选一个低风险文档类型试点,把模型产出放在人工审校之前,而不是之后。
对关注本地 LLM 和微调实践的开发者,这次实验给的信号也很具体:如果目标是“写得像”,微调比 RAG 更直接;如果目标是“说得准”,RAG 或检索校验仍然更关键。
两条路线不要混用概念。
RAG 是把事实从资料库里找出来,适合回答“这个接口真实参数是什么”。QLoRA 风格微调是把语气、结构、表达习惯压进模型,适合回答“这段文档要写成什么腔调”。
| 需求 | 更适合的路线 | 风险 |
|---|---|---|
| 查内部事实、参数、版本 | RAG / 检索增强 | 检索质量差会答错 |
| 学公司文档口吻 | QLoRA 风格微调 | 会把旧错误和坏习惯一起学进去 |
| 写第一版草稿 | 微调模型 + 人工审校 | 草稿看起来可信,但事实未必可靠 |
| 生成可发布终稿 | 不宜只靠微调模型 | 缺少判断、责任和边界控制 |
我不太买账的是,把这类实验直接包装成“本地小模型替代技术写作者”。证据还到不了那一步。
技术写作的难点不只是排出 Synopsis、Parameters、Return Value、See Also。真正难的是知道什么该写,什么不能写,什么看似合理但会误导用户。
接下来更该盯三个变量。
一是语料是否足够干净。OCR 噪声、过时 API、旧手册里的错误,都会被模型学进去。
二是模型能否稳定服从事实边界。尤其是在虚构 API、时代错置概念、过期平台要求上,不能只看文风像不像。
三是团队有没有审校流程。没有人工控制,风格微调越成功,错误越难被一眼看出。
回到开头那个 50 美元的数字,它的价值不是证明“廉价 AI 写作者”已经来了。
它证明的是另一件更实际的事:小模型已经可以低成本学会组织语气和文档形状。至于文档能不能发布,仍然要靠人来取舍和负责。
