前言
之前我们一直强调,大语言模型(LLM)是概率生成系统。
能力边界
- 知识时效性:模型知识截止于训练数据时间点
- 推理局限性:本质是概率预测而非逻辑运算,复杂数学推理易出错(deepseek的架构有所不同)
- 专业领域盲区:缺乏垂直领域知识
- 幻觉现象:可能生成看似合理但实际错误的内容
之前一直讲解如何通过各种不同的知识库进行知识片段的检索,并通过提示词临时注入到大模型。从今天开始,我会写一写微调相关的文章。
什么是模型微调?
- 定义:在预训练大模型(如GPT、BERT)的基础上,使用特定领域或任务的数据进行额外训练,使模型适应新任务。
- 类比:类似“博士生在通识教育(预训练)后,专攻某个研究方向(微调)”。
微调适用场景
提升特定领域的专业性
场景特点:
高度专业化知识(如医学、法律、金融、科技等) ,通用大模型缺乏特定领域的知识和逻辑。
示例:
- 医疗报告生成(需准确使用医学术语和遵循临床病例格式)
- 法律合同审核(需识别合同条款的合规性和潜在风险)
- 财务报告解析:从PDF年报中提取营收、毛利率等结构化数据
- 科研论文评审:识别论文方法论部分的实验设计缺陷
让模型更符合企业需求
场景特点:
企业需要 AI 具备特定业务逻辑。
示例:
- 代码生成:蚂蚁的zone,美团的set,普通的模型能解决代码实现的问题,但是解决不了他们的zone和set的逻辑。比如阿里的代码员工,就是微调出来的。
- 业务流程:每个公司的业务流程不一样,每个节点的规则也不一样,如果我把项目流程微调到大模型
- 企业助手:比如各种手册的微调,然后就是一个企业的产品专家。
让模型更符合用户偏好
场景特点:
个性化
示例:
- 个性化的聊天:每个互联网产品都有自己的风格和用户特性(提示词能解决一部分)
- 内容创作助手:把小说的大纲,以及涉及的知识点微调进去,视频风格微调进去。
- 游戏NPC:游戏的设定等微调进去,NPC更具备灵活性。
让模型执行特定任务
场景特点:
标准化任务。
示例:
- 代码生成模型:用大量 Java、Python 代码训练 AI,让它更擅长某种编程语言。
- 表格理解: 微调模型解析扫描文档中的复杂表格结构,提取关键字段
数据安全 & 隐私问题
场景特点:
数据敏感。
示例:
- 银行数据:通过本地微调银行敏感数据,微调出具备风险能力的模型,让模型在不暴露的前提下具备风险识别能力。
- 医疗机构: 通过本地微调病人病例和诊断证明,专业数据,让模型具备辅助诊断能力。
资源受限场景
场景特点:
离线设备、专业设备、低显存。
示例:
- 设备故障诊断手册查询:微调轻量级模型快速解析设备编码与维修手册条目的对应关系
- 地下或海底:救护知识手段,生存技能
何时选择微调 vs. 其他方案?
场景 | 推荐方案 | 原因 |
---|---|---|
数据充足且领域差异大 | 全参数微调 | 最大化模型能力,适应性强 |
数据少但需快速适配 | LoRA/P-Tuning | 节省资源,避免过拟合 |
实时性要求高 | RAG(检索增强生成) | 动态注入最新知识,无需重新训练 |
输出需严格可控 | 提示工程+少量微调 | 通过模板约束输出,微调提升指令跟随能力 |
无标注数据 | 零样本/少样本提示 | 直接利用预训练知识,成本最低 |
模型微调的方式
1. 按训练目标分类
有监督微调(Supervised Fine-Tuning, SFT)
有监督微调是最常见的微调方式,适用于任务明确且具有标注数据的情况。通过使用人工标注的高质量数据对,模型能够学习特定任务所需的知识,从而在指定任务上提供准确的输出。
- 适用场景:数据充足且任务目标明确的情况,如文本分类、情感分析、命名实体识别等。
数据示例:
[
{
"instruction": "作为法律顾问,请回答以下问题:", // 可选指令模板
"input": "如果我在公司被解雇,我有权获得多少赔偿?",
"output": "根据《劳动合同法》第47条..."
},
{
"input": "签订购房合同后,开发商违约怎么办?",
"output": "您可以依据《合同法》要求..."
}
]
指令微调(Instruction Tuning)
指令微调旨在增强模型理解并执行不同指令的能力。通过指令-输出对的训练,使模型能够更好地遵循人类指令,提高其在多个任务上的泛化能力。
- 适用场景:需要提升模型的泛化性和指令理解能力,如聊天机器人、自动化任务、智能问答等。
数据示例:
[
{
"instruction": "用简单的语言解释量子力学。",
"input": "",//可省略
"output": "量子力学是研究微小粒子行为的科学..."
},
{
"instruction": "将以下句子翻译成法语。",
"input": "你好,今天天气不错。",
"output": "Bonjour, il fait beau aujourd'hui."
}
]
对齐方法(RLHF/DPO)
通过人类反馈(如 Reinforcement Learning from Human Feedback, RLHF)或直接偏好优化(Direct Preference Optimization, DPO),调整模型的输出,使其更符合人类价值观,提高安全性和一致性。
- 适用场景:需要控制模型输出的安全性或风格一致性,如客服机器人、儿童内容生成、内容审核等。
RLHF数据示例:
[
{
"prompt": "请写一篇关于气候变化的文章。",
"chosen": "气候变化是人类面临的最紧迫问题之一。科学研究表明...",
"rejected": "气候变化是媒体夸大的骗局,无需在意。",
"score": {"chosen": 5, "rejected": 1}, // 可选:标注人工评分
"reject_reason": "否定科学共识" // 可选:标注拒绝原因
}
]
rejected
回答应明确包含安全性或价值观问题(如危险步骤、歧视性内容),而非仅是质量差异
DPO数据示例:
[
{
"prompt": "如何回应‘女性不适合学理科’的观点?",
"chosen": "性别不应限制个人发展,许多女性科学家取得了卓越成就。",
"rejected": "女性的逻辑思维确实比男性差,这是客观事实。"
}
]
多任务学习
通过同时优化多个相关任务,提升模型的泛化能力,使其能够高效处理多种任务。通过损失函数动态调整不同任务的训练权重。
- 适用场景:任务之间存在关联性,适用于智能助理、语音识别、情感分析等任务。
数据示例:
[
{
"task": "情感分析",
"input": "这款手机的电池寿命太短了,太失望了。",
"output": "负面",
},
{
"task": "文本摘要",
"input": "近日,某科技公司发布了一款新产品...",
"output": "某科技公司发布新品"
}
]
2. 按参数更新策略分类
全参数微调(Full Fine-Tuning)
所有模型参数都参与训练,通常需要大量计算资源,适用于数据充足、计算资源充足的情况。
- 技术代表:常规SFT、RLHF(如ChatGPT的训练方式)。
数据示例:
{
"model": "GPT-3",
"trainable_parameters": "100%",
"dataset": "500K法律文本对",
"fine_tuning_method": "全参数微调"
}
部分冻结微调(Partial Fine-Tuning)
仅训练模型的部分层,如冻结底层参数,仅更新高层参数,降低计算开销。
- 技术代表:如BERT冻结前8层,仅训练后4层。
数据示例:
{
"model": "BERT",
"trainable_layers": "最后4层",
"frozen_layers": "前8层",
"fine_tuning_method": "部分冻结微调"
}
参数高效微调(PEFT)
仅更新少量的参数,通常通过结构化方法(如LoRA、Adapter)减少计算需求,并在低资源环境下实现高效微调。
- 技术代表:LoRA(低秩适配)、Adapter(插入小网络)。
LoRA的特点:
- 只调整部分参数(如低秩矩阵分解)。
- 降低计算和内存开销。
- 适合快速微调,尤其在资源受限时。
adapter的特点:
- 插入额外的 Adapter 层
- 降低计算和内存开销。(仅训练 Adapter 层和可独立存储 Adapter 层)
- 多任务学习、迁移学习。
最后比较下:
- Adapter 插入额外的小型可训练模块,适用于多任务和迁移学习。
- LoRA 通过低秩矩阵分解,调整少量关键参数,适用于快速微调。
- 如果需要在 多个任务间切换,Adapter 更合适;如果只是对单个任务高效微调,LoRA 更优。
大模型微调框架简介
在大模型微调领域,存在多种框架,每个框架都有其独特的优势和局限性。下面介绍几种常见的微调框架,包括示例代码和适用模型,帮助你根据任务需求选择最合适的框架。
1. Hugging Face Transformers
简介:
Hugging Face Transformers 业界标准NLP框架,提供200+预训练模型和全流程工具链,覆盖文本、图像、音频多模态任务。
核心优势:
- 全模态任务覆盖
- 预训练模型生态(社区模型库含30万+微调模型,并且覆盖覆盖 BERT、GPT、LLaMA、Whisper、ViT 等主流架构)
- 跨框架无缝衔接
- 开箱即用工具链
- 企业级部署支持
- 开发社区极为活跃
尽管 Hugging Face Transformers 在许多常见任务中表现优秀,但在超大规模模型的微调和训练中,可能会面临性能瓶颈和资源消耗过大的问题。
2. DeepSpeed
简介:
DeepSpeed是微软开发的分布式训练引擎,通过ZeRO优化实现百亿级模型全参数微调。
核心技术:
- ZeRO 显著减少内存占用,提高分布式训练的效率
- CPU Offloading 混合精度训练,加速训练过程并减少显存需求
- 自适应梯度累积
DeepSpeed适合大规模模型的训练,但使用门槛较高,需要深入理解框架的底层实现。看了下官网,不是我能玩的。
3. LLaMA-Factory(本文使用的框架)
简介:
国产低代码微调框架,
看下官方的介绍。
4,Megatron-LM
简介:
NVIDIA千亿级模型训练框架,采用3D混合并行策略:
张量并行 + 流水并行 + 数据并行
性能指标:
- 175B模型训练:3072 A100(80G)
- 吞吐量:502 petaFLOPs
适用场景:
GPT-4级别模型预训练/微调。
据说坑不少,有不少人推荐。torchtitan。
如何选择微调框架?
不管是感官上,还是大模型得推荐上,对于我来说选择LLaMA-Factory是最好的选择。后续我基于这个做微调实现。
专有名词
过拟合(Overfitting)
是指模型在训练数据上表现得非常好,但在新数据或测试数据上的表现较差的现象。换句话说,模型过度学习了训练数据中的细节和噪声,以至于无法很好地泛化到未见过的数据。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。