预训练
模型的输出本质上是一个概率分布。模型对词表里每一个可能得token都给出一个概率。
所谓训练,归根结底就是调整这个概率分布 -- 让我们想要的token概率更高、不想要的更低。
先建立一张最重要的地图:现代模型的能力开发通常可以拆成四个环节。 预训练打下通用基础,Mid-training 在目标分布上补充知识与基础能力,SFT 与 RL 再根据输出要求和任务目标塑造行为。
- 预训练(Pre-training):在海量互联网文本上做“预测下一个词”的训练。这一步让模型学会语言规律、世界知识和基本推理,就像一个人读完了图书馆里的所有书——博学,但还不会好好回答问题。这是最贵的一步(动辄数千万美元),也是能力的地基。
- Mid-training(中期训练/继续预训练):从一个已有基础模型出发,在目标语言、领域文档、代码、长上下文或经过设计的能力数据上继续做语言建模。它不是从头重建地基,而是补上通用预训练没有覆盖好的“教材章节”。相比全量预训练,数据与计算规模更小;相比 SFT,它更适合吸收大量知识和建立任务所需的基础表征。有些团队把 Mid-training 算作预训练的后半程,有些称为继续预训练(Continued Pre-training, CPT)、领域自适应预训练(Domain-Adaptive Pre-training, DAPT)或任务自适应预训练(Task-Adaptive Pre-training, TAPT)。
- 监督微调(SFT,Supervised Fine-Tuning,即用标注好的 “输入—输出” 对来训练模型,类似老师给出标准答案让学生照着学):用几千到几万条 “问题—标准回答”的示范数据,教会模型 “该用什么格式、什么风格、什么流程来回答”。这一步把有知识、有能力的模型变成一个听得懂指令、输出规整的助手。它便宜、快、稳,是当前几乎所有部署模型都会经过的一步。
- 强化学习(RL,Reinforcement Learning,即让模型反复尝试、根据结果好坏给奖惩来改进行为,类似做题后按得分复盘):不再直接模仿标准回答的 token,而是让模型自己去试,把做得好的行为的概率调高、做得差的调低。当基模已经能偶尔成功,且奖励、数据和环境设计得当时,这一步可以让模型在没见过的情况下做出更好的决策,也是本章篇幅最大、最需要工程功力的一步。
一个直觉类比:预训练是 “接受通识教育”,Mid-training 是 “集中研修专业教材”,SFT 是 “老师示范答题与表达规范”,RL 是 “自己下场做题、根据结果反复打磨”。
把训练一个会做事的模型想象成培养一名员工:
| 阶段 | 干什么 | 类比 | 产物 |
|---|---|---|---|
| 预训练(Pretrain) | 读几万亿 Token 的互联网文本,玩"猜下一个词" | 十几年通识教育 | 基座模型(博学但不听指挥) |
| SFT(监督微调) | 用几万条"指令→标准回答"教它听话 | 岗前培训,背标准话术 | 指令模型(你日常用的 Chat 版) |
| 奖励建模(RM) | 训练一个"打分器",学会判断哪个回答更好 | 培养一位考核主管 | 奖励模型 |
| 强化学习微调(RLHF/RLAIF) | 让模型追求打分器的高分 | 按考核结果发奖金 | 对齐后的模型 |
| Agentic RL | 在真实任务(解题/用工具)中试错,按结果对错给奖励 | 上一线干活,按业绩发奖金 | 会推理、会用工具的智能体模型 |
预训练之后的三段合称"后训练(Post-training)":先 SFT 教格式和基本能力,再训一个奖励模型当裁判,最后用强化学习去追这个裁判的高分。
SFT
SFT的本质:换了数据的“预测下一个词”
SFT在数学上和预训练是同一个任务 -- 都是预测下一个词、最小化同一个损失函数。 SFT与预训练的差别只有两点:
- 数据不同:预训练用原始互联网文本(无结构、什么都有),SFT用人工精心准备的“输入-输出”对,格式统一为“用户提问 - 理想会带”。 模型在这些示范上继续做“预测下一个次”,于是把被提问时该怎么组织回答这个协议学了进去。
- 损失只算在“回答”上(loss masking,损失屏蔽)。一条SFT样本包含问题和标注回答两部分。我们不希望模型学怎么提问, 只希望它学怎么回答,所以计算损失时把问题部分的token屏蔽掉,只对回答部分回传梯度。这是SFT在工程上与预训练唯一实质性的区别。
它的优化目标是让标注回答里每一个 token 的概率尽可能高,也就是尽量复现示范。对目标明确、格式固定的任务,这种方法极其高效(几千条样例就见效);但当数据覆盖面和多样性不足时,模型可能对示范中的表面模式或捷径过拟合,在分布变化后性能下降。
一句话概括 SFT 的本质:用极高的样本效率,把一套稳定的“输入→输出”映射与协议固化进参数。 它固化的是“格式、风格、流程”这类协议性知识(该怎么说、怎么做),而非大量事实性知识(知道什么)——后者要靠预训练或 RAG。
训练成本:LoRA 参数高效微调。上面 SFT 和后面的 RL 都要更新模型参数,而全参数微调对显存的要求很高(要为数十亿参数都存梯度和优化器状态)。LoRA(Low-Rank Adaptation,低秩适配)是最常用的省钱办法:不动原始的大权重矩阵,只在旁边挂一个很小的“补丁”(低秩矩阵)来学习任务,参数量仅占原始的 1%–5%,却能接近全参微调的效果。因为原权重被冻结,LoRA 对基座已有能力的扰动也更小,灾难性遗忘的风险更低。几条经过验证的实践经验1:必须把 LoRA 应用到所有主要权重矩阵(尤其参数占比最大的 MLP 层),只加在注意力层会掉点;最优学习率约是全参微调的 10 倍(SFT、RL 都成立,是个非常实用的迁移规则);SFT 用中高 rank(64–256),RL 因每轮信息量很小、用小 rank(8–32)甚至 rank=1 就够。部署时一台推理服务器可同时加载多个 LoRA adapter 做多租户服务。
文本分类
文本分类是NLP中的一项常见任务。
该任务的目标是训练一个模型,为输入的文本分配标签或类别。从情感分析和意图识别,到实体提取和语言检测,文本分类在全球范围内被广泛应用
微调
根据是否更新模型全部参数,监督微调(SFT)的方法可以分为两类:
- 全参数微调(Full Fine-tuning)
- 参数高效微调(Parameter-Efficient Fine-tuning, PEFT)
参数高效微调(Parameter-Efficient Fine-tuning, PEFT)是一系列微调方法,其核思想是仅更新少量参数或引入少量可训练模块,在显著降低资源消耗的同时,高效适配目标任务。目前,最先进的PEFT方法已经能实现与全参微调相当的性能。 PEFT 的兴起可追溯至 2019 年前后。当时以 BERT、GPT-2 为代表的预训练模型规模迅速扩大,传统全参数微调的资源成本逐渐难以承受。伴随模型规模持续膨胀,这种矛盾愈发凸显,由此推动了 PEFT 技术的快速发展,形成了包括 Prompt Tuning、Prefix Tuning、P-Tuning、Adapter、LoRA 等多条技术路线
在众多方法中,LoRA(Low-Rank Adaptation)因其结构简洁、训练高效、稳定,已成为当前大语言模型监督微调(SFT)的主流选择;其量化版本 QLoRA (Quantized Low-Rank Adaptation)进一步融合量化技术,将微调门槛降至消费级 GPU 也可运行的水平。相比之下,其他 PEFT 方法因在效率、稳定性或通用性等方面存在局限,已逐渐边缘化。
Prompt - Tuning(提示微调)
超大规模的Prompt-Tuning方法,分别为:
-
上下文学习 In-Context Learning(ICL):直接挑选少量的训练样本作为该任务的提示; 通过上下文示例让模型理解任务,而无需显式训练。常用的In-contenxt learning方法包括:
- zero-shot learning: 给出任务的描述,然后提供测试数据对其进行预测,直接让预训练好的模型去进行任务测试
- one-shot learing: 在预训练和真正翻译的样本之间,插入一个样本作为指导,相当于给一个例子。
- few-shot learning: 插入多个样本作为指导,相当于给多个例子。
-
指令学习 Instruction-Tuning:构建任务指令集,促使模型根据任务指令做出反馈; 通常是在一个预训练大模型的基础上,收集大规模指令-响应对,并将这些指令转化为自然语言提示(prompt)输入模型,通过监督微调(Supervised Fine-Tuning, SFT)让模型学会按照指令生成符合预期的输出;训练时将指令与上下文拼接成输入序列,目标是最大化模型对正确响应的生成概率,从而让模型在推理时对未见过的新指令也能进行符合意图的生成。
-
思维链 Chain-of-Thought(CoT):给予或激发模型具有推理和解释的信息,通过线性链式的模式指导模型生成合理的结果。
CoT 没有像 ICL 那样简单地用输入输出对构建提示,而是结合了中间推理步骤,这些步骤可以作为大模型的输入。简单来说,思维链是一种离散式提示学习,更具体地,相比于之前的上下文学习(即不进行训练,将例子添加到当前样本输入的前面,让模型一次输入这些文本进行输出完成任务),思维链多了中间的推导过程提示。
遇到"模型效果不好",专家的排查顺序是一个成本递增的阶梯,绝不上来就微调:
提示词工程(几分钟) → RAG外挂知识(几天) → 微调(几周+算力钱) → 预训练(别想了)
微调方法地图
- 全参微调(Full Fine-tuning):更新全部参数。7B 模型全参训练要 100GB+ 显存,个人玩不起,也容易把通用能力练丢(灾难性遗忘)
- LoRA(Low-Rank Adaptation):冻结原模型,只在每层旁边加两个小矩阵——一个大矩阵可以近似拆成两个"瘦长"小矩阵相乘,这就是低秩分解,参数量因此骤减——只训练这不到 1% 的新参数。效果接近全参、显存省一个数量级,是当前微调的绝对主流
- QLoRA:把冻结的原模型量化成 4bit 再做 LoRA,显存再省一半——7B 模型 16GB 显存(一张免费 Colab T4)就能微调
- SFT(Supervised Fine-Tuning,监督微调):用"问题-标准答案"对训练,教模型"照着学"。你要做的 99% 是这个
- RLHF / DPO(偏好对齐):用"回答 A 比回答 B 好"的偏好数据训练,教模型"哪种更好"。大厂对齐团队做的事,了解概念即可
最常见组合 = SFT + QLoRA。
LoRA
LoRA微调的全称是Low-Rank Adaptation,这种方法通过引入低秩矩阵分解,可以通过仅训练少量参数实现大模型的适配。
模型微调
微调(Fine - tuning)是指在已经预训练好的大规模模型基础上,通过进一步训练来适应特定任务或数据集的过程。
这一过程体现了迁移学习的思想,即利用预训练模型在通用数据上学习到的知识,通过微调使其更好的服务于特定的应用场景。
微调的主要步骤:
-
选择预训练模型: 从现有的大型预训练模型(如qwen、deepseek、llama等)中挑选适合任务需求的模型作为基础。
-
准备数据集: 为特定任务准备高质量的训练和验证数据集,确保数据与目标任务紧密相关。
-
调整模型结构: 根据任务需求,可能需要对模型进行微调,如增减层数、调整激活函数等。
-
设置训练参数: 包括学习率、批处理大小、训练轮次等,这些参数将直接影响微调效果。
-
开始训练: 在选定数据集上迭代训练模型,并观察验证集上的表现,适时调整训练策略。
-
评估与部署: 使用测试集评估微调后的模型性能,满足要求后即可部署到实际应用中。
以上就是AI模型微调步骤,不管是模型微调和模型训练都少不了模型微调和模型训练需要的数据集。我们知道要想微调和训练模型数据集非常重要。数据集都是靠人工标注或者是通过程序来实现,对非技术人员不太友好,换句话说微调数据集制作门槛就非常高,普通小白是很难上手的。
很多新手一遇到模型效果不好就像微调,这往往是错的第一反应。
效果不好需要按这个顺序排查:
- 效果不好?
- 先优化 Prompt
- 还不行? 用RAG补充知识
- 还不行? 考虑更换更强的模型
- 以上都试过扔不满足 才考虑微调
为什么微调排最后? 因为它的成本最高(要数据、要算力、要时间)、更新最麻烦(数据变了得重训)、且大部分问题Prompt + RAG就能解决。
微调真正擅长解决的是:
- 风格/格式的稳定固化: 让模型永远用某种特定语气、格式输出(Prompt反复叮嘱都不稳定时)
- 特定任务的能力强化: 某个很垂直、Prompt教不会的任务。
- 让小模型学会大模型的某项能力: 省成本
注意区分: 微调是教模型新的行为/风格,RAG是给模型新的知识,想让模型知道最新信息,需要用RAG而不是微调。
微调的基本概念
PEFT(大模型参数高效微调)
参数高效微调方法(Parameter-Efficient Fine-Tuning,PEFT),PEFT 方法仅微调少量或额外的模型参数,固定大部分预训练参数,大大降低了计算和存储成本,同时最先进的 PEFT 技术也能实现了与全量微调相当的性能。
目前应用较多的PEFT方法主要分为三大类:
- Prefix/Prompt-Tuning:在模型的输入或隐层添加 k个额外可训练的前缀 tokens(这些前缀是连续的伪 tokens,不对应真实的 tokens),只训练这些前缀参数;
- Adapter-Tuning:将较小的神经网络层或模块插入预训练模型的每一层,这些新插入的神经模块称为 adapter(适配器),下游任务微调时也只训练这些适配器参数;
- LoRA:通过学习小参数的低秩矩阵来近似模型权重矩阵 W的参数更新,训练时只优化低秩矩阵参数;
全量微调 vs LoRA
-
全量微调: 调整模型的全部参数,效果好但要巨大算力(几十上百GB显存),个人几乎做不了。
-
LoRA(低秩适配): 只训练一小部分附加参数,冻结原模型主体。显存需求大幅降低,一张消费级显卡就能微调小模型,是个人和中小团队的主流选择。
类比: 全量微调像重新装修整栋房子,LoRA像只换软装(家具、窗帘)---花小钱办大部分事,还能随时换回来。
微调需要什么
- 数据: 一批输入 -> 期望输出 的高质量样本,数据质量决定一切,几百上千条精心准备的数据,往往胜过几万条脏数据。
- 一个基座模型: 开源的如Qwen、Llama、ChatGLM等。
- 算力: 一张够用的GPU(本地或租云GPU)
- 工具: 如LLaMA-Factory(新手友好,图形界面能拉起微调)、Unsloth(块且省显存)、Hugging Face PEFT库。
微调数据长什么样
通常是这样的对话样本(JSONL格式,每行一条)
{"messages": [{"role": "user", "content": "把这句话改写得更正式:这bug我搞不定"}, {"role": "assistant", "content": "此缺陷目前尚未定位到根因,需进一步排查。"}]}
准备几百上千条这样的样本,就是微调的核心工作。
如果不想折腾本地环境,很多云厂商(包括模型厂商本身)提供托管微调服务:
你上传数据 -> 平台帮你训 -> 给你一个微调后的模型接口调用。
数据准备:微调成败的80%
两种通用格式:
- Alpaca格式(单轮指令)
{
"instruction": "把用户的旅行需求解析成JSON",
"input": "我想十一带爸妈去西安玩四天,预算八千",
"output": "{\"city\": \"西安\", \"days\": 4, \"budget\": 8000, \"companions\": \"父母\", \"date\": \"十一假期\"}"
}
- ShareGPT格式(多轮对话,Agent场景更常用)
{
"conversations": [
{"from": "human", "value": "北京天气怎么样?"},
{"from": "gpt", "value": "[TOOL_CALL:get_weather:city=Beijing]"},
{"from": "human", "value": "[工具返回] Beijing: 晴 25°C"},
{"from": "gpt", "value": "北京今天晴,25度,很适合出门!"}
]
}
把你 Agent 的工具调用轨迹做成训练数据,微调后小模型也能稳定输出你的工具调用协议——这是 Agent 微调最常见的实战场景。
微调数据从哪来
- 生产日志清洗(最好的来源):从你的 Agent 日志里挑出"回答得好"的对话,人工修正后入库
- 大模型蒸馏:用 DeepSeek/GPT-4 级模型批量生成高质量问答,教给 7B 小模型(注意各家 API 的服务条款)
- 人工编写种子 + 扩写:手写 50 条典型样本,让大模型仿写扩充到 500 条,再人工抽查
数量与质量
- 学格式/语气:300~1000 条就有明显效果
- 学领域任务:3000~50000 条
- 铁律:质量 > 数量。100 条精心校对的样本,胜过 10000 条脏数据;脏数据不仅没用,还会教坏模型
实操: LLaMA - Factory微调Qwen
LLaMA-Factory 是目前中文社区最流行的微调框架,WebUI 点点鼠标就能训。
4.1 硬件要求速查
| 微调方式 | 7B 模型显存需求 | 参考硬件 |
|---|---|---|
| QLoRA (4bit) | ~12GB | RTX 3060 12G / Colab 免费 T4 |
| LoRA (16bit) | ~20GB | RTX 3090/4090 24G |
| 全参 | 100GB+ | 多卡 A100,忘了它 |
没有 GPU:用 Google Colab(免费 T4)或 Kaggle(每周 30 小时免费 GPU),流程完全一样。
4.2 安装与启动
git clone https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -e ".[torch,metrics]"
llamafactory-cli webui # 打开 http://localhost:7860
4.3 WebUI 训练五步
- Model:选
Qwen2.5-7B-Instruct(会自动从 HuggingFace/魔搭下载,国内记得export HF_ENDPOINT=https://hf-mirror.com,见第 09 篇) - Finetuning method:
lora;Quantization:4(即 QLoRA) - Dataset:把你的 JSON 数据放进
data/目录,并在data/dataset_info.json里注册文件名和格式(alpaca/sharegpt) - 超参数(新手默认值就行,只需要懂这三个):
-
learning_rate学习率:LoRA 常用 1e-4~2e-4,太大练废、太小练不动 -num_train_epochs轮数:2~3 轮,轮数太多必过拟合 -cutoff_len截断长度:必须大于你最长的样本 - 点 Start,盯着 loss 曲线:平滑下降后趋平 = 正常;一直不降 = 学习率/数据有问题;降到接近 0 = 大概率过拟合(模型在背答案)
训练产物是一个几十 MB 的 LoRA 适配器(不是完整模型)。在 WebUI 的 Export 页把适配器与基座合并导出为完整模型目录,供下一节部署用。
4.4 训练完必须做的两个检查
- 对照评估:准备 20~50 条训练集里没有的测试题,微调前后各跑一遍,肉眼对比 + 让 GPT-4 级模型当裁判打分(第 10 篇的 LLM-as-a-Judge)
- 通用能力回归:问几个与训练任务无关的常识题,确认没有灾难性遗忘(比如练完工具调用后连"你好"都回不好了,就是训过头:减少轮数或降低学习率)
LoRA
原理:
在传统的全参数微调(Full Fine-tuning)中,模型中的某个权重矩阵 W0∈ℝd×k(例如 Transformer 中的注意力投影矩阵)会在训练过程中被更新为:
W=W0+ΔW,
其中 ΔW是微调阶段需要学习的完整增量矩阵。
LoRA 的作者在实践中观察到:ΔW 往往具有低秩结构,也就是说它的有效自由度远低于其表面维度。基于这一关键现象,LoRA 将 ΔW近似分解为两个低秩矩阵的乘积:
ΔW≈AB,A∈ℝd×r, B∈ℝr×k,
其中 r≪min(d,k),通常取 4、8 或 16 等远小于原始维度的数值。这样,微调后的权重矩阵可写为:
W=W0+AB.
在训练过程中,LoRA 完全冻结原始权重 W0,仅对新增的低秩矩阵 A和 B进行优化。这大幅减少了需要更新的参数量,同时也避免了对大规模模型权重的直接修改,使微调过程更加轻量、高效。
在推理阶段,低秩增量 AB可以无缝合并回原始权重 W0中,不会引入额外的计算复杂度,因此 LoRA 的高效性不仅体现在训练中,也体现在推理过程中。
由于秩 r很小,LoRA 的参数开销和计算成本都极低。例如,对 d=k=4096的权重矩阵进行全参数更新需要约 16M 个参数,而采用 LoRA(如 r=8)时,仅需:
4096×8+8×4096=65,536
个参数,占原始权重的仅约 0.4%。这种数量级的压缩使得在有限资源下微调大模型成为可能,也使得在多个任务之间共享底层模型、仅保存轻量级 LoRA 适配器成为现实。
LoRA 通常插入模型中的线性层。在主流 Decoder-only 模型(如 LLaMA、Qwen)中,最常用的是对注意力层的 q_proj 和 v_proj 插入 LoRA,原因如下: - Query 和 Value 对任务语义最敏感; - 仅插这两处即可接近全参微调性能; - 参数和显存开销最小。
QLoRA
QLoRA(Quantized Low-Rank Adaptation)是 LoRA 的量化增强版本,由华盛顿大学和微软研究院于 2023 年提出。QLoRA 在 LoRA 的基础上引入 4-bit 量化技术,在几乎不损失性能的前提下,将大语言模型微调的硬件门槛大幅降低,使得数十亿参数级别的模型可在单张消费级 GPU(如 RTX 3090/4090)上完成高效微调。
QLoRA出现的背景和动机:
尽管LoRA已经大大降低了微调的参数量和存储需求,但对于GPT-3 (175B)、LLaMA-65B (65B)、Falcon-40B (40B) 这样参数量巨大的模型,即使是加载模型本身(即使冻结)也需要巨大的GPU内存。例如,加载一个65B参数的16-bit模型就需要大约130GB 的 VRAM,这超出了大多数消费级GPU的能力。
于是Dettmers et al. 于 2023 年在论文 QLoRA: Efficient Finetuning of Quantized LLMs 中提出QLoRA (Quantized LoRA) 。
它的核心思想是:通过对预训练语言模型(PLM)进行量化(通常是 4-bit NormalFloat),并结合 LoRA 技术进行微调,从而在极低的内存消耗下,仍然能够高效地微调巨型语言模型,同时保持甚至超越全量 16-bit LoRA 的性能。
QLoRA极大地降低了微调大型模型的硬件门槛,使得在消费级 GPU 上微调数十亿甚至千亿参数的模型成为可能。
QLoRA的特点:
优点: 极低的内存消耗。这是 QLoRA 最显著的优势。可以将训练巨型模型的内存需求降低 3-4 倍,使得在单张消费级 GPU 上(如 24GB VRAM 的 RTX 3090/4090)微调 65B 甚至 70B 参数的模型成为可能。 性能优异:尽管进行了 4-bit 量化,但由于 16-bit 的 LoRA 权重和优化器状态,QLoRA 在许多任务上能够保持与 16-bit LoRA 甚至全量微调相媲美的性能。 训练速度快:由于只训练少量参数且内存效率高,训练速度非常快。 缺点 虽然 NF4 优化了精度,但极端任务或敏感任务可能仍受 4-bit 量化影响。 由于量化和分页机制的存在,训练和问题调试会比标准 LoRA 更复杂。
私有化部署:把模型跑在自己机器上
为什么要私有化部署?
- 数据安全/合规: 敏感数据不能发给第三方API
- 成本: 高频调用时,自己部署开源模型可能比调API便宜
- 可控/离线: 不依赖外部服务,可断网运行。
代价: 你要自己搞定GPU、运维、性能优化 - 比调API复杂得多。
新手友好的部署工具
- Ollama: 一行命令就能在本地跑开源模型,Ollama提供OpenAI兼容接口,所以只要把base_url换成本地地址就能切换到本地模型
- vLLM: 生产级高性能推理引擎,追求高并发、低延时用,比Ollama复杂,但快很多
- LM Studio: 带图形界面,适合桌面端长线
部署要关心的概念
-
量化(Quantization): 把模型参数从高精度压成低精度(如FP16 -> INT4),大幅降低显存占用,代价是轻微精度损失。让大模型能塞进小显卡的关键技术。你会看到模型名带Q4、INT8之类标记,就是量化版本。
-
显存需求: 模型大小 ≈ 参数量 * 每参数字节数。 7B模型FP16大约要14GB显存,INT4量化后约 4~5GB。选模型前先算算你的显卡够不够。
vLLM
Ollama适合单人开发,要同时服务几十上百个用户,用vLLM(需要NVIDA GPU + Linux):
pip install vllm
vllm serve Qwen/Qwen2.5-7B-Instruct --host 0.0.0.0 --port 8001
# 微调过的模型: vllm serve /path/to/你导出的模型目录
vLLM 快在哪:
- PagedAttention:像操作系统管理内存分页一样管理 KV Cache(注意力缓存),显存利用率提升数倍
- Continuous Batching(连续批处理):不等一批请求全部完成,谁的生成结束了就立刻把空位让给新请求——高并发下吞吐量是朴素实现的 10~20 倍
显存估算公式:
推理显存 ≈ 参数量 × 精度字节数 + KV Cache
7B 模型 FP16: 7B × 2字节 = 14GB(权重) + 几GB KV Cache → 24G 卡合适
7B 模型 4bit: 7B × 0.5字节 = 3.5GB + KV Cache → 8G 卡能跑
贯穿全章的核心理念是: 评估体系的首要价值不是给当前系统打分,而是让你能快速、可靠地跟上模型的演进。 当一个更强或更便宜的模型发布时,拥有完善评估体系的团队能在数小时内得出切换决策,而缺乏评估体系的 团队只能凭直觉或等待社区反馈。在竞争激烈的 Agent 市场中,这种速度差距可能决定成败。
强化学习与训练工具
TRL
TRL 是 Hugging Face 提供的模型训练库,支持监督微调(SFT)与多种对齐方法(如 DPO、PPO 等)。其与 Transformers、Accelerate、PEFT 无缝集成,可在 Llama、Qwen、Mistral 等开源模型上快速构建微调与对齐流程。该工具在保持灵活性的同时降低了实现难度,适用于 SFT、奖励模型训练与轻量对齐等多类场景。
LLaMA Factory
LLaMA Factory 是一个面向大模型微调的一体化训练框架,提供图形化界面与标准化训练脚本,可显著降低微调流程搭建的复杂度。它支持全参数微调、LoRA/QLoRA 等参数高效微调方法,并集成数据处理、模型加载、训练监控与导出等完整流程。框架适配 Llama、Qwen、Mistral 等主流开源模型,是进行监督微调与轻量化适配的高效工具。