【大模型入门2】模型训练与微调
模型训练和微调
目录
一、核心思想:为什么需要微调?
-
通用大模型的局限性:
-
缺乏领域知识: 它不知道各领域专业术语的精确含义。
-
不理解特定行为模式: 它可能将“两人快速靠近”理解为“打招呼”,而不是“斗殴”。
-
无法遵循特定格式: 它可能无法按照要求的固定格式(如时间、地点、人物、事件、处理结果)生成报告。
-
存在安全风险: 可能会回答无关或敏感的问题。
-
-
微调的目标:
-
知识注入: 教会模型“行话”和规章制度。
-
行为对齐: 让模型学会像一名“经验丰富的专家”一样思考和描述问题。
-
能力激发: 唤醒模型在特定场景下被“隐藏”的能力,使其更精准、更可靠。
-
二、关键技术:全量微调 vs. 参数高效微调 (PEFT)
a) 全量微调
-
做法: 解冻预训练模型的所有参数,在下游任务数据上进行训练。
-
优点:
-
效果通常是最好的,因为模型有最大的自由度去适应新数据。
-
-
缺点:
-
计算成本极高: 需要更新所有参数(例如,70B 模型有 700 亿参数),对显存和算力要求巨大。
-
存储成本高: 每个任务都需要保存一份完整的模型副本。
-
灾难性遗忘: 模型在学习新知识时,可能会忘记预训练时学到的通用知识。
-
b) 参数高效微调
-
核心思想: 冻结预训练模型的大部分参数,只训练一小部分新增的或特定的参数。
-
优点:
-
训练成本低: 显存占用和计算量大幅下降。
-
存储高效: 每个任务只需要存储一小部分“适配器”参数(几MB到几百MB)。
-
切换灵活: 可以在一个基础模型上快速切换不同任务的“适配器”。
-
不易遗忘: 由于大部分原始参数被冻结,有效缓解了灾难性遗忘。
-
-
缺点:
-
在某些极其复杂的任务上,效果可能略逊于全量微调(但通常差距不大)。
-
三、深入理解:LoRA 与 QLoRA
a) LoRA (Low-Rank Adaptation)
-
核心思想: 大模型的权重更新矩阵虽然是巨大的,但它在学习一个新任务时,实际的“信息增量”可能存在于一个“低秩”的子空间中。
-
工作原理(简化版):
-
假设模型中有一个巨大的权重矩阵
W(例如 4096x4096)。 -
LoRA 的做法是,冻结这个
W矩阵,然后在它旁边并联一个小的“旁路”矩阵。这个旁路由两个更小的矩阵A(例如 4096xr) 和B(例如 rx4096) 相乘得到 (r是一个很小的秩,比如 8, 16, 64)。 -
在训练时,我们只更新
A和B这两个小矩阵的参数。前向传播时,最终的输出是h = Wx + BAx。 -
训练完成后,我们可以将
BA的结果合并回W,或者直接保存A和B作为“适配器”。
-
-
为什么有效?
-
假设原始权重更新
ΔW是一个巨大的矩阵,但 LoRA 假设ΔW可以被近似为BA,其中A和B的参数量远小于ΔW。这个假设在实践中被证明是成立的。
-
b) QLoRA (Quantized LoRA)
-
解决的问题: 即使是 LoRA,加载一个 70B 的基础模型也需要巨大的显存(超过 140GB),这在大多数情况下是不可行的。
-
核心创新:
-
4-bit NormalFloat (NF4) 量化: 将基础模型的权重从 16-bit 或 32-bit 量化到 4-bit。这能将模型显存占用直接降低约 75%。
-
双重量化: 对量化过程本身产生的常量再次进行量化,进一步节省显存。
-
分页优化器: 利用 NVIDIA 的统一内存,将 GPU 显存不足的部分暂时放到 CPU 内存中,防止显存溢出。
-
-
效果: QLoRA 使得在单张消费级 GPU(如 24GB 的 RTX 3090/4090)上微调 70B 级别的模型成为可能,且效果几乎不损失。
四、数据燃料:如何构建高质量的场景数据集?
-
数据来源(监所场景):
-
历史事件记录: 监控日志、值班记录、事件报告、违规处理单等。这是最宝贵的“真实世界”数据。
-
规章制度文件: 监所管理条例、应急预案、行为规范等。用于构建知识库和问答对。
-
民警工作日志: 包含了大量非结构化的、描述性的语言,是训练模型“说行话”的绝佳材料。
-
模拟数据: 在真实数据不足时,可以由经验丰富的民警编写模拟案例。
-
-
数据格式(指令微调):
-
这是目前最主流的微调范式,让模型学会“听指令办事”。
-
标准格式是
{"instruction": "...", "input": "...", "output": "..."}。 -
示例1(事件分析):
-
instruction: “你是一名监所智能分析专家,请根据以下监控描述,判断事件的类型和风险等级。” -
input: “监控显示,3号监室两名在押人员发生激烈口角,并有推搡动作。” -
output: “事件类型:口角纠纷;风险等级:中。建议:重点关注,防止事态升级为肢体冲突。”
-
-
示例2(报告生成):
-
instruction: “请根据以下要素,生成一份标准的监室巡查报告。” -
input: “时间:2023-10-27 15:30;地点:5号监室;人物:全体在押人员;情况:一切正常,无异常行为。” -
output: “2023年10月27日15时30分,对5号监室进行巡查,室内秩序良好,全体在押人员状态正常,未发现任何异常行为及违禁物品。”
-
-
-
数据清洗与质量控制:
-
脱敏处理: 去除所有个人身份信息(姓名、身份证号等),这是数据安全的底线。
-
去重与去噪: 去除重复、无效、格式错误的数据。
-
质量校验: 人工或使用规则校验
input和output的逻辑一致性。
-
五、问题巩固
【概念与原理题】
- [ ] 为什么不能直接使用通用大模型,而必须进行微调?请结合xx场景说明。
- [ ] 全量微调和参数高效微调(PEFT)有什么区别?各自适用于什么场景?
- [ ] (高频) 请详细解释 LoRA 的工作原理。为什么它可以用很少的参数达到很好的效果?
- [ ] QLoRA 解决了什么问题?它的核心技术是什么?
- [ ] 除了 LoRA,你还了解哪些其他的 PEFT 方法?(如 Prompt Tuning, Adapter)
【实践与应用题】
- [ ] (场景题) 如果让你为“xxxxxxx”任务构建一个微调数据集,你会如何设计?数据从哪里来?格式是什么样的?
- [ ] (场景题) 我们微调后的模型,在“A行为”识别上准确率很高,但“B行为”识别很差,你会从哪些方面排查和优化?
- [ ] (资源题) 假设项目预算有限,硬件资源只有一张 A100(40GB),需要同时支持“智能问答”和“事件分析”两个功能,你会如何设计你的模型训练和部署方案?
- [ ] (安全题) 在微调过程中,如何保障数据的安全与隐私?
更多推荐



所有评论(0)