目录

一、核心思想:为什么需要微调?

二、关键技术:全量微调 vs. 参数高效微调 (PEFT)

a) 全量微调

b) 参数高效微调

三、深入理解:LoRA 与 QLoRA

a) LoRA (Low-Rank Adaptation)

b) QLoRA (Quantized LoRA)

四、数据燃料:如何构建高质量的场景数据集?

五、问题巩固


一、核心思想:为什么需要微调?

  • 通用大模型的局限性:

    • 缺乏领域知识: 它不知道各领域专业术语的精确含义。

    • 不理解特定行为模式: 它可能将“两人快速靠近”理解为“打招呼”,而不是“斗殴”。

    • 无法遵循特定格式: 它可能无法按照要求的固定格式(如时间、地点、人物、事件、处理结果)生成报告。

    • 存在安全风险: 可能会回答无关或敏感的问题。

  • 微调的目标:

    • 知识注入: 教会模型“行话”和规章制度。

    • 行为对齐: 让模型学会像一名“经验丰富的专家”一样思考和描述问题。

    • 能力激发: 唤醒模型在特定场景下被“隐藏”的能力,使其更精准、更可靠。

二、关键技术:全量微调 vs. 参数高效微调 (PEFT)

a) 全量微调

  • 做法: 解冻预训练模型的所有参数,在下游任务数据上进行训练。

  • 优点:

    • 效果通常是最好的,因为模型有最大的自由度去适应新数据。

  • 缺点:

    • 计算成本极高: 需要更新所有参数(例如,70B 模型有 700 亿参数),对显存和算力要求巨大。

    • 存储成本高: 每个任务都需要保存一份完整的模型副本。

    • 灾难性遗忘: 模型在学习新知识时,可能会忘记预训练时学到的通用知识。

b) 参数高效微调

  • 核心思想: 冻结预训练模型的大部分参数,只训练一小部分新增的或特定的参数。

  • 优点:

    • 训练成本低: 显存占用和计算量大幅下降。

    • 存储高效: 每个任务只需要存储一小部分“适配器”参数(几MB到几百MB)。

    • 切换灵活: 可以在一个基础模型上快速切换不同任务的“适配器”。

    • 不易遗忘: 由于大部分原始参数被冻结,有效缓解了灾难性遗忘。

  • 缺点:

    • 在某些极其复杂的任务上,效果可能略逊于全量微调(但通常差距不大)。

三、深入理解:LoRA 与 QLoRA

a) LoRA (Low-Rank Adaptation)

  • 核心思想: 大模型的权重更新矩阵虽然是巨大的,但它在学习一个新任务时,实际的“信息增量”可能存在于一个“低秩”的子空间中。

  • 工作原理(简化版):

    1. 假设模型中有一个巨大的权重矩阵 W (例如 4096x4096)。

    2. LoRA 的做法是,冻结这个 W 矩阵,然后在它旁边并联一个小的“旁路”矩阵。这个旁路由两个更小的矩阵 A (例如 4096xr) 和 B (例如 rx4096) 相乘得到 (r 是一个很小的秩,比如 8, 16, 64)。

    3. 在训练时,我们只更新 A 和 B 这两个小矩阵的参数。前向传播时,最终的输出是 h = Wx + BAx

    4. 训练完成后,我们可以将 BA 的结果合并回 W,或者直接保存 A 和 B 作为“适配器”。

  • 为什么有效?

    • 假设原始权重更新 ΔW 是一个巨大的矩阵,但 LoRA 假设 ΔW 可以被近似为 BA,其中 A 和 B 的参数量远小于 ΔW。这个假设在实践中被证明是成立的。

b) QLoRA (Quantized LoRA)

  • 解决的问题: 即使是 LoRA,加载一个 70B 的基础模型也需要巨大的显存(超过 140GB),这在大多数情况下是不可行的。

  • 核心创新:

    1. 4-bit NormalFloat (NF4) 量化: 将基础模型的权重从 16-bit 或 32-bit 量化到 4-bit。这能将模型显存占用直接降低约 75%。

    2. 双重量化: 对量化过程本身产生的常量再次进行量化,进一步节省显存。

    3. 分页优化器: 利用 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),需要同时支持“智能问答”和“事件分析”两个功能,你会如何设计你的模型训练和部署方案?
  • [ ] (安全题) 在微调过程中,如何保障数据的安全与隐私?
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐