日期:2026-07-13
我们服务的一家垂直行业客户(某装备制造企业)在试水通用大模型后发现,模型在通用问答上表现不错,但一碰到本行业的术语、工艺规范、售后话术就"露怯"——它既说不清某个零部件的命名规范,也答不准售后派工的标准流程。客户的核心诉求很明确:希望通用大模型长出行业 know-how,能够在内部知识助手、售后工单辅助、工艺文档检索等场景里稳定输出符合行业规范的答案。
摆在面前的现实约束有三个。第一,全量微调(full fine-tuning)对算力要求极高,客户手里的 GPU 资源池有限的,跑一次全量微调动辄需要多卡多天,成本难以承受;第二,全量微调容易导致"灾难性遗忘",模型在学会行业知识的同时,通用能力明显退化,连基础常识都开始出错;第三,行业语料会随着规范更新而变化,模型必须能够反复迭代且每次迭代都可回归、可回滚。
带着这几个约束,我们决定走"底座微调工具链 + 服务化"的路线,在客户私域语料上做参数高效微调(PEFT),把行业能力做成一个可独立版本化、可灰度上线的"行业版模型"。
整体方案依托我们采用的私有化 AI 底座中的"微调工具链层":从数据清洗、指令样本合成,到 LoRA/QLoRA 微调,再到评估与版本管理,全部在客户内网完成,数据不出域。
流程上,我们先把客户沉淀的工艺手册、售后规范、内部培训材料、历史工单等原始语料归集到语料库,经过清洗与去重后,构建出"继续预训练语料 + 指令微调样本"两类数据。随后在底座的微调工具链上用 QLoRA 在 4bit 量化基座上训练 LoRA 适配器(adapter),产出行业版权重。训练产物不直接替换基座,而是作为一份独立的低秩权重挂载到模型服务化层(vLLM 推理框架支持 LoRA 热挂载),业务系统通过 AI 网关统一调用,网关侧按需路由到"通用基座 + 行业 LoRA"组合。
这样,行业能力以"插件"形态存在:基座保持通用能力不变,行业 LoRA 叠加在推理时生效,既能灵活切换不同行业的适配器,也能在出现问题时快速回退到纯基座。
行业语料最大的坑不是"不够多",而是"太脏"。我们拿到的最原始的 PDF 工艺手册里夹杂着扫描水印、页眉页脚、OCR 乱码,还有大量与行业知识无关的目录和广告位。我们先做结构化清洗:用规则 + 轻量分类模型剥离页眉页脚与噪声行,统一全半角与单位表述;再做语义去重(MinHash + 局部敏感哈希)去掉高度重复的段落,避免模型对高频模板过拟合。
指令样本主要靠"合成 + 人工校验":用强模型基于清洗后的文档生成(问题,答案)对,覆盖术语解释、规范查询、流程问答三类;同时保留约 15% 的真实历史工单作为真实分布样本。最关键的一步是污染防控——严格把行业数据与公开的通用评测集(如 MMLU、C-Eval 子集)做重叠检测,任何与评测集重合的样例一律剔除,确保后续的能力评估是"真提升"而非"数据泄漏"。
QLoRA 让我们在一张 24G 显存的消费级卡上也能微调 7B 级别的基座:4bit NF4 量化基座 + 双重量化 + 分页优化器,显存峰值从全量微调的 60G+ 压到 18G 左右。LoRA 配置上,我们最终定为 rank=64、alpha=128(alpha/rank=2 的常规经验比),target_modules 覆盖 q_proj、k_proj、v_proj、o_proj 与 gate_proj、up_proj、down_proj;学习率用 2e-4 的恒定加余弦衰减,训练 3 个 epoch,序列长度 2048。rank 不宜过大——我们对比过 rank=128,参数翻倍但行业任务收益几乎持平,还增加了推理时的适配器加载开销,因此定在 64 平衡风险与收益。
我们只信"先有基线,再谈提升"。训练前先用一套自建的行业评测集(200 道覆盖术语、规范、流程的单选题 + 50 道真实工单改写题)给基座打基线;训练后用同一套集子复测。同时必须跑通用回归:MMLU、C-Eval 的子集,以及一组通用的常识问答,确保行业 LoRA 挂载后通用能力回退控制在可接受区间(我们设的红线是通用子集准确率下降不超过 1.5 个百分点)。一旦越过红线,就回退并重新调小 LoRA 学习率或缩减数据里的"硬覆盖"比例。
行业 LoRA 权重像代码一样版本化:每次训练产物带数据集版本、基座版本、超参摘要的元数据,存进模型仓库。上线不走"全量替换",而是走网关路由灰度——先放 5% 的内部测试流量到"基座+行业LoRA",观察行业任务准确率与通用回归指标,再 20%、50% 逐步放量,最后全量;期间任一指标异常,网关一键切回纯基座,业务无感。
案例片段(已脱敏): 以下为该项目 QLoRA 训练核心配置(已脱敏,部分超参经简化):
yaml base_model: /models/xxx-7b-base-4bit # NF4 量化基座 lora_r: 64 lora_alpha: 128 lora_dropout: 0.05 target_modules: [q_proj,k_proj,v_proj,o_proj,gate_proj,up_proj,down_proj] learning_rate: 2e-4 lr_scheduler: cosine num_train_epochs: 3 max_seq_length: 2048 quantization: nf4 + double_quant + paged_adamw per_device_train_batch_size: 4 gradient_accumulation_steps: 8评估对比(脱敏示意,行业评测集 250 题):基座基线行业准确率 61.5%,挂载行业 LoRA 后提升至 86.2%;通用回归子集准确率 78.4% → 77.3%,回退 1.1 个百分点,未越红线。
上述装备制造企业项目落地后,脱敏示意效果如下:
回过头看,这个项目踩过的坑和沉淀的经验,有几条是通用的:
结语:行业大模型落地,难的从来不是把模型跑起来,而是让它在"更懂行业"的同时"不丢常识",并且每一步都可回归。LoRA/QLoRA 给了我们这样一个低风险的支点。