大模型微调原理和框架概述

分类: LM大模型&微调

大模型微调

一、预训练和行为微调

这是一个非常精准且专业的切入视角。在现代大语言模型(LLM)的开发范式中,整个生命周期本质上就是分为 预训练(Pre-training)后训练/行为微调(Post-training / Behavioral Fine-tuning) 两个截然不同的阶段。

如果你把训练一个大模型比作“培养一个大学生”,那么这两个阶段有着完全不同的目标、数据和训练方式。我们拆开来看:

一、 预训练 (Pre-training):积累世界知识的“通识教育”

预训练是大模型生命周期的第一步,也是消耗算力最大、时间最长的一个阶段(通常占总计算资源的 90% 以上)。

  • 核心目标:让模型掌握人类语言的语法规律、逻辑推理能力,并将海量的世界知识(常识、科学、历史、代码等)压缩到神经网络的参数中。它在建立一个“世界模型”。

  • 训练原理自监督学习 (Self-supervised Learning)。最经典的机制就是“下一个词预测”(Next-token prediction)。给定前文序列,模型需要预测下一个出现的词汇,目标是最大化序列的联合概率:

$$P(w_1, w_2, ..., w_T) = \prod_{t=1}^{T} P(w_t | w_1, w_2, ..., w_{t-1})$$

  • 数据特点:海量且庞杂(通常是数万亿个 Token)。数据来源包括网页抓取(如 CommonCrawl)、维基百科、书籍、GitHub 代码库等。数据处理的核心难点在于清洗去重和质量过滤。

  • 最终产物基座模型 (Base Model),例如 Llama-3-8B-Base。

  • 基座模型的缺陷:它是一个无情的“文本接龙机器”。如果你输入“如何炒西红柿鸡蛋?”,它可能不会给你菜谱,而是接着输出“这道菜在北方很常见……”或者“如何做地三鲜?”。它有知识,但不懂得如何与人交互。


二、 行为微调 (Behavioral Fine-tuning):塑造 AI 助手的“职业培训”

为了让基座模型从“懂很多词汇的接龙机器”变成“听得懂指令、会聊天的 AI 助手”,我们需要进行行为微调(通常统称为 Post-training)。这个阶段算力消耗较小,但对数据质量的要求极高。它主要包含两个子阶段:

1. 监督微调 (SFT - Supervised Fine-Tuning) / 指令微调

  • 核心目标:教会模型“一问一答”的对话范式,激发它在预训练阶段学到的知识,使其能够遵循人类的指令(遵循格式、提取摘要、编写代码等)。
  • 训练原理:使用人工标注或强模型(如 GPT-4)生成的高质量问答对进行监督学习。虽然底层数学逻辑依然是计算交叉熵损失,但这里只对 Response(回答)部分的 token 计算 Loss,不再让模型去预测 Prompt(问题)部分的 token。
  • 数据特点:量少而精(通常在几万到几十万条级别)。数据格式严格按照 <Prompt> + <Response> 构成。

2. 人类偏好对齐 (Alignment Tuning)

  • 核心目标:塑造模型的“三观”和行为边界。让模型的输出符合 3H 原则:Helpful(有帮助)、Honest(诚实,减少幻觉)、Harmless(无害,拒绝回答制造炸弹等危险问题)。
  • 训练原理:就是我们在上一条提到的 RLHF(基于人类反馈的强化学习)或 DPO(直接偏好优化)。
  • 数据特点:偏好数据(Preference Data)。给定一个问题,提供一个“被接受的回答(Chosen)”和一个“被拒绝的回答(Rejected)”,让模型学习什么是更好的回答。
  • 最终产物对话/指令模型 (Chat / Instruct Model),例如 Llama-3-8B-Instruct。这才是一个开箱即用的大模型。

总结与对比

维度 预训练 (Pre-training) 行为微调 (Behavioral Fine-tuning)
生动比喻 填鸭式阅读图书馆里的所有书 学习如何做一名称职的客服/助理
主要目标 学习语言规律、积累世界知识 遵循指令、对齐人类偏好、保障安全
数据规模 万亿级 Tokens (TB/PB 级别) 万级至十万级对话样本 (MB/GB 级别)
算法核心 Next-token prediction (自监督) SFT 交叉熵 + RLHF/DPO (有监督/强化学习)
算力门槛 极高 (上千张顶级 GPU 跑几个月) 较低 (消费级/单节点多卡即可完成,尤其是配合 LoRA)

作为算法开发者,受限于算力成本,我们日常接触和主导的绝大部分工作,其实都是在“行为微调”这一层打转——即拿一个开源的强力基座模型,用特定的行业数据(比如量化交易的策略文档、特定的代码规范)做 SFT,然后再用 DPO 调整它的回答语气和逻辑风格。


工程流程

第一阶段:数据工程(决定模型智商的上限)

微调大模型,80% 的精力会花在数据处理上。你需要学习如何构建监督微调(SFT)所需的数据格式。

  • 核心技术:Python 原生数据处理(json, pandas)。
  • 学习重点
  • ShareGPT 或 Alpaca 数据格式:目前开源界最通用的对话数据格式。你需要将淘宝客服的聊天记录,或者你写的故事大纲与成品故事,写成 JSONL 文件。
  • System Prompt 的设计:为不同的角色设定系统提示词。

淘宝客服数据示例 (JSONL): {"type": "chat", "messages": [{"role": "system", "content": "你是一个温柔的淘宝女装客服。"}, {"role": "user", "content": "这件衣服起球吗?"}, {"role": "assistant", "content": "亲亲,这款采用的是精梳棉材质,经过抗起球处理的,正常穿着洗涤是不会起球的哦~"}]}


第二阶段:微调框架与硬件加速(打破算力瓶颈)

作为个人开发者,你可能没有庞大的英伟达 GPU 集群。因此,学会利用手头的消费级显卡,甚至榨干特定端侧芯片(如 Apple 芯片的 GPU 和 NPU)的算力至关重要。

  • 1. 开源全链路工具:LLaMA-Factory
  • 定位:极其适合新手的第一站,提供 WebUI。
  • 你要做的事:学会如何把 Qwen 模型和你的 JSONL 数据导入,在网页上点选 LoRA、4-bit 量化,然后一键开启微调。它可以帮你快速验证你的数据是否有效。
  • 2. Apple 芯片专属加速生态:MLX
  • 定位:如果你想充分利用 Apple A系列(如 A17 Pro)或 M 系列芯片的统一内存架构、GPU 和 NPU 来跑大模型,传统的 PyTorch CUDA 路线走不通,必须学 MLX。
  • 核心库:苹果官方开源的 mlxmlx-lm。它允许你在 Mac/iOS 架构上极其高效地进行 QLoRA 微调。
  • 3. 核心底层代码库:Hugging Face 生态
  • 定位:真正掌握微调原理的必经之路。
  • 核心库transformers(加载模型和分词器)、peft(注入 LoRA 降秩矩阵)、trl(专门用于 SFT 和对齐的工具包)、datasets(加载数据集)。