云计算百科
云计算领域专业知识百科平台

如何用自己的数据配置一个小模型

你不需要 70B 模型。不需要十万美元算力。不需要一个机器学习团队。

一个 1.5B 参数的模型,用 200 到 500 条好样本微调之后,在你那个具体任务上能超过用通用提示词的前沿模型。

这是完整指南:数据采集、清洗、数据集构建、QLoRA 训练、Google Colab、评测、部署。每一步都有能跑的代码。

一、先纠正对微调的误解

大多数人以为微调是让模型变聪明。不是。

微调是让模型在一个窄任务上稳定地做得更好。这就是它的全部价值主张。

指南用的例子:输入一段创业简报(比如「我们帮独立诊所减少爽约,靠自动提醒、排程工作流和患者随访,正在融种子轮来扩产品和销售团队」),输出一段融资路演文案——干净、有依据、不编造指标、不套死的幻灯片结构。

一个 1.5B 模型可靠地做这件事,比一个 70B 模型不稳定地做这件事更有价值。

二、微调不是你的第一步

在训练任何东西之前,先建三个基线:

· 基线 1:很强的纯提示词

· 基线 2:提示词加检索(RAG)

· 基线 3:微调后的模型

微调能改善什么:语气、结构、一致性、领域词汇、指令遵循。

微调不能可靠地给模型什么:当前市场数据、竞品情报、实时事实。如果你的模型需要知道当前的市场规模或融资趋势,用检索,不要用训练。

能用的架构是这样一条链:创业简报 → 可选检索(市场数据、证据)→ 小的微调模型 → 纯文本输出。

只有在你的纯提示词基线在某个具体点上失败之后,才开始微调。

三、第一步:选一个小的基座模型

从 0.5B 到 3B 之间起步。推荐的起点:Qwen/Qwen2.5-1.5B-Instruct(指南选的就是它)、Qwen/Qwen3-0.6B、HuggingFaceTB/SmolLM2-1.7B-Instruct。

1.5B 小到可以在 T4 上跑 QLoRA,又大到能写出有用的商业文案。

不要从 7B 或 14B 开始。 更大的模型意味着:更高的显存要求、更长的训练时间、更高的服务成本、更多的运维复杂度,以及在小的数据集上更高的过拟合风险。

先用小模型。只有在它评测失败时才升级。

四、第二步:抓数据之前先确认数据权利

这是所有人都会跳过的一步,也是最危险的一步。

公开可得,不等于有训练授权。

在下载任何一个文件之前,为每个数据源记录这些东西:source_id、source_url、owner、rights_status(是 approved,不是 assumed)、permission_scope、commercial_use_permitted、redistribution_permitted、rights_reviewed_at、以及指向私有证据的引用。

放进公开 GitHub 仓库的:来源元数据、文件哈希、处理代码、数据集 schema、评测代码。

留在私有的:原始 PDF、OCR 输出、人工金标转录、许可邮件、用户提交的数据。

先把这件事做对。剩下的都只是工程。

五、第三步和第四步:可复现地下载、从 PDF 和 OCR 里抽文本

绝不要盲目爬取。 用一个明确的、经过批准 URL 的 allowlist。每个文件都要拿到:哈希、时间戳、manifest 条目。重复的按内容哈希跳过,不做静默重下。代码里还有一道校验——确认响应体真的以 %PDF- 开头,不是就抛错。

路演 PPT 属于难处理的文档:大段文字、极小的脚注、图表、表格、旋转文字、嵌在图片里的数字、多栏排版。用一个级联策略:

1. 先试原生 PDF 文本提取 → 够多就留

2. 不够就上版面感知的 OCR(Docling、PaddleOCR)→ 结果好就留

3. 还不行就用第二个 OCR 引擎或人工复核

关键规则:不要静默丢弃那些 OCR 什么也没返回的页面。 空结果是你最难的样本,它们告诉你流水线在哪里断掉。

还有一条:机器草稿不等于真值,永远不要把两者混为一谈。记录结构里专门留了 gold_text 字段,在人工复核前保持为空。

六、第五步:清洗文本,但不要毁掉它

清洗的意思是去掉提取噪音,不是把它弄得「更漂亮」。

安全的操作只有这些:Unicode NFKC 归一化、去掉空字节、把不换行空格换成普通空格、把连续空格压成一个、把三个以上的连续换行压成两个。

永远不要自动纠正数字。

七、第七步:按公司切分,不要按页切分(这个错误会让评测失去意义)

如果同一家公司同时出现在训练集和验证集里:模型会记住这家公司特有的措辞,看起来像是泛化了。它没有。

按公司切分,并保留一份切分 manifest(记录 split_version、dataset_hash、train/validation/test 各自的公司 ID 列表、创建时间)。

看过结果之后,永远不要改动测试集。 一旦你用它做过评测,它就被烧掉了——它变成了你的训练信号,不再是真正的评测。

八、第九步:用 QLoRA 训练

QLoRA 用 4-bit 精度加载基座模型,只训练一个小的适配器。显存占用比全量微调低得多,结果几乎一样。

关键超参和它们为什么这么设:

· r=16 → LoRA 适配器秩,从这里起步

· lora_alpha=32 → 适配器缩放(通常取秩的两倍)

· lora_dropout=0.05 → 正则化

· learning_rate=2e-4 → LoRA 的一个好的起点

· num_train_epochs=2 → 从低开始,过拟合是真实存在的

· gradient_accumulation_steps=8 → 模拟更大的 batch

· packing=True → 短样本的 GPU 利用率更好

不要因为训练损失在下降就增加轮数。 模型可以把你的样本背下来,同时在没见过的公司上表现更差。更低的训练损失不等于更好的泛化。

九、第十二步:评测,以及什么叫「一个数字是幻觉」

评测里有个很实用的检查:把生成文本里的数字集合,减去源证据里的数字集合。结果里任何不出现在源证据中的数字,就是幻觉。

指南给了一份记分卡的样子:

纯提示词基线:有用程度 7.1/10,无依据论断 8%,数字错误 3%,平均延迟 2.4 秒

微调模型:有用程度 8.0/10,无依据论断 2%,数字错误 1%,平均延迟 1.5 秒

只有在测试集在你开始评测之前就已经隔离的前提下,才可以声称有改进。 如果你偷看过测试集,这些结果就没有意义。

十、第十三步:部署适配器

两条路径,看流量:

高吞吐走 vLLM:以服务方式启动基座模型,开 –enable-lora,把适配器挂成一个 lora 模块。部署前查一下当前版本的 LoRA 文档,选项会变。

低流量走 FastAPI 加 Transformers。

绝不要把裸的模型服务暴露到公网上。 生产结构应该是:客户端 → HTTPS 加鉴权 → VPS 限流 → 请求队列 → GPU 模型服务 → 纯文本响应。VPS 负责 TLS、鉴权、限流、排队;GPU 只负责推理。

十一、第十四步:部署后监控质量,以及什么时候该重训

从第一天就开始跟踪质量指标。不要自动收集用户数据用于重训——要用明确的 opt-in,而且即使有同意,存储前也要剥掉敏感部分。生产训练数据永远要和评测数据分开。

重训的触发条件不是每个用户提交,而是同时具备:足够数量的经过复核的样本、一个明确的、被记录下来的失败模式、一个稳定的评测集、一个有记录的数据集版本,以及一个回滚方案。

一个合理的节奏:

· v0:纯提示词基线

· v1:200 条复核过的样本

· v2:1000 条复核过的样本

· v3:更大的数据集加检索

每个版本都记录:版本号、基座模型及其修订、数据集哈希、训练样本数、GPU 类型、总 GPU 小时、各项评测指标、部署日期、回滚产物、已知失败模式。

没有写清楚回滚路径,就不要部署。

十二、这份指南真正值钱的地方

不是 QLoRA 那段代码——那段到处都是。值钱的是它把两件通常被跳过的事放在了流程的最前面和最后面:

前面是数据权利。 「公开可得不等于有训练授权」这一条,加上「公开仓库只放元数据和哈希,原文和许可邮件留私有」,是国内写微调的文章几乎从不提的部分。它花不了多少时间,但它是从「玩一玩」到「能交付给客户」之间的那道门。

后面是评测纪律。 按公司切分(而不是按页)、测试集看过就烧掉、生成里的每个数字都要能在源证据里找到、没写回滚路径不部署。这些听起来像流程洁癖,但它们决定了你那个 8.0/10 的分数是真的,还是自己骗自己。

链接

原文(Rahul):

https://x.com/sairahul1/article/2100882424343265527

Qwen2.5-1.5B-Instruct:

https://huggingface.co/Qwen/Qwen2.5-1.5B-Instruct

赞(0)
未经允许不得转载:网硕互联帮助中心 » 如何用自己的数据配置一个小模型
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!