这是一个非常精准且专业的切入视角。在现代大语言模型(LLM)的开发范式中,整个生命周期本质上就是分为 预训练(Pre-training) 和 后训练/行为微调(Post-training / Behavioral Fine-tuning) 两个截然不同的阶段。
如果你把训练一个大模型比作“培养一个大学生”,那么这两个阶段有着完全不同的目标、数据和训练方式。我们拆开来看:
预训练是大模型生命周期的第一步,也是消耗算力最大、时间最长的一个阶段(通常占总计算资源的 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。
基座模型的缺陷:它是一个无情的“文本接龙机器”。如果你输入“如何炒西红柿鸡蛋?”,它可能不会给你菜谱,而是接着输出“这道菜在北方很常见……”或者“如何做地三鲜?”。它有知识,但不懂得如何与人交互。
为了让基座模型从“懂很多词汇的接龙机器”变成“听得懂指令、会聊天的 AI 助手”,我们需要进行行为微调(通常统称为 Post-training)。这个阶段算力消耗较小,但对数据质量的要求极高。它主要包含两个子阶段:
<Prompt> + <Response> 构成。| 维度 | 预训练 (Pre-training) | 行为微调 (Behavioral Fine-tuning) |
|---|---|---|
| 生动比喻 | 填鸭式阅读图书馆里的所有书 | 学习如何做一名称职的客服/助理 |
| 主要目标 | 学习语言规律、积累世界知识 | 遵循指令、对齐人类偏好、保障安全 |
| 数据规模 | 万亿级 Tokens (TB/PB 级别) | 万级至十万级对话样本 (MB/GB 级别) |
| 算法核心 | Next-token prediction (自监督) | SFT 交叉熵 + RLHF/DPO (有监督/强化学习) |
| 算力门槛 | 极高 (上千张顶级 GPU 跑几个月) | 较低 (消费级/单节点多卡即可完成,尤其是配合 LoRA) |
作为算法开发者,受限于算力成本,我们日常接触和主导的绝大部分工作,其实都是在“行为微调”这一层打转——即拿一个开源的强力基座模型,用特定的行业数据(比如量化交易的策略文档、特定的代码规范)做 SFT,然后再用 DPO 调整它的回答语气和逻辑风格。
微调大模型,80% 的精力会花在数据处理上。你需要学习如何构建监督微调(SFT)所需的数据格式。
json, pandas)。淘宝客服数据示例 (JSONL):
{"type": "chat", "messages": [{"role": "system", "content": "你是一个温柔的淘宝女装客服。"}, {"role": "user", "content": "这件衣服起球吗?"}, {"role": "assistant", "content": "亲亲,这款采用的是精梳棉材质,经过抗起球处理的,正常穿着洗涤是不会起球的哦~"}]}
作为个人开发者,你可能没有庞大的英伟达 GPU 集群。因此,学会利用手头的消费级显卡,甚至榨干特定端侧芯片(如 Apple 芯片的 GPU 和 NPU)的算力至关重要。
mlx 和 mlx-lm。它允许你在 Mac/iOS 架构上极其高效地进行 QLoRA 微调。transformers(加载模型和分词器)、peft(注入 LoRA 降秩矩阵)、trl(专门用于 SFT 和对齐的工具包)、datasets(加载数据集)。