1. 微调基础概念介绍
1.1 微调基本概念
所谓大模型微调,指的在已有的大规模预训练模型基础上,通过对标注数据进行训练,进一步优化 模型的表现,以适应特定任务或场景的需求。
不同于RAG或者Agent技术,通过搭建工作流来优化模型表现,微调是通过修改模型参数来优化模型能力,是一种能够让模型“永久”掌握某种能力的方法。
1.2 全量微调与高效微调
而从方法的大类上来划分,微调又可以划分为全量微调:带入全部数据进行微调,和高效微调:只 带入部分数据进行微调。
毫无疑问,全量微调是一种算力消耗更大、但对模型的能力改造更为彻底的方 法,而高效微调则更类似一种“ 四两拨千斤”的方法,通过修改模型部分参数,来调整模型整体能力。
1.3 全量指令微调
全量微调的一个最核心的应用场景就是全量指令微调,在当代大模型的训练流程中,首先需要进行模型预训练,在这个过程中我们需要输入大量不带标签的文本段落,让模型学习到语言的基本结构、语法规则、上下文信息等。
经过预训练的模型就拥有了“成语接龙的能力”,如下所示:
但目前在很多场景下,我们需要大模型进行对话(chat)而非补全(completion),因此我们需要围绕 经过预训练的模型进行进一步的全量指令微调,通过输入海量的对话文本(一问一答构成的文本,同时 也是有监督的文本),让模型学会对话的能力,例如:
现在绝大多数开源模型,在开源的时候都会公布两个版本的模型,其一是Base模型,该模型只经过了预 训练,没有经过指令微调;其二则是Chat模型(或者就是不带尾缀的模型),则是在预训练模型基础上 进一步进行全量指令微调之后的对话模型:
1.4 高效微调与LoRA、 QLoRA
尽管全量微调可以对模型的能力进行深度改造,但要带入模型全部参数进行训练,需要消耗大量的算力,且有一定的技术门槛。
相比之下,在绝大多数场景中,如果我们只想提升模型某个具体领域的能 力,那高效微调会更加合适。尽管在2020年前后,深度学习领域诞生了很多高效微调的方法,但现在适 用于大模型的最主流的高效微调方法只有一种——LoRA。
LoRA( Low-Rank Adaptation)微调是一种参数高效的微调方法,旨在通过引入低秩矩阵来减少微 调时需要调整的参数数量,从而显著降低显存和计算资源的消耗。
具体来说,LoRA 微调并不直接调整原 始模型的所有参数,而是通过在某些层中插入低秩的适配器(Adapter)层来进行训练。
LoRA的原理:
○ 在标准微调中,我们会修改模型的所有权重,而在 LoRA 中,只有某些低秩矩阵(适配器)被训练 和调整。这意味着原始模型的参数保持不变,只是通过少量的新参数来调整模型的输出。
○ 低秩矩阵的引入可以在显存和计算能力有限的情况下,依然有效地对大型预训练模型进行微调,从 而让 LoRA 成为显存较小的设备上的理想选择。
LoRA的优势:
-
显存优化: 只需要调整少量的参数(适配器),显著减少了显存需求,适合显存有限的GPU。
-
计算效率: 微调过程中的计算负担也更轻,因为减少了需要调整的参数量。
-
灵活性: 可以与现有的预训练模型轻松结合使用,适用于多种任务,如文本生成、分类、问答等。
而QLoRA(QuantizedLow-RankAdaptation) 则是 LoRA 的一个扩展版本,它结合了 LoRA 的 低秩适配器和量化技术。 QLoRA 进一步优化了计算效率和存储需求,特别是在极端显存受限的环境下。
与 LoRA 不同的是, QLoRA会将插入的低秩适配器层的部分权重进行量化(通常是量化为INT4或INT8) ,在保持性能的同时显著降低模型的存储和计算需求。
- 核心思想: 在 LoRA 的基础上加入量化技术,减少权重表示的位数,从而降低显存和计算需求。 QLoRA 结合了低秩适配器和量化的优点,能够在显存有限的设备上进行更高效的微调。
- 量化: 通过将模型权重量化为低精度(如 INT4),减少内存占用,并提高推理和训练速度。
- 优势:
○ 在显存非常有限的情况下仍能进行微调。
○ 可以处理更大规模的模型。
○ 适合用于边缘设备和需要低延迟推理的场景。
LoRA与QLoRA二者对比如下
2. 高效微调的应用场景
在实际大模型应用场景中,高效微调主要用于以下四个方面:
• 对话风格微调:高效微调可以用于根据特定需求调整模型的对话风格。例如,针对客服系统、虚拟助理等场景。
模型可以通过微调来适应不同的 语气、礼貌程度 或 回答方式,从而在与用户互动时 提供更符合要求的对话体验。
通过微调少量的参数(例如对话生成的策略、情感表达等),可以使 模型表现出更具针对性和个性化的风格。
• 知识灌注:知识灌注是指将外部知识或领域特定的信息快速集成到已有的预训练模型中。通过高效微调,模型可以更好地学习新领域的专有知识,而无需重新从头开始训练。
例如,对于法律、医疗 等专业领域,可以使用少量的标注数据对预训练模型进行微调,帮助模型理解特定行业的术语、规 则和知识,进而提升专业领域的问答能力。
• 推理能力提升:高效微调还可以用于提升大模型的推理能力,尤其是在处理更复杂推理任务时。
通过微调,模型能够更加高效地理解长文本、推理隐含信息,或者从数据中提取逻辑关系,进而在多 轮推理任务中提供更准确的答案。这种微调方式可以帮助模型在解答复杂问题时,提高推理准确性 并减少错误。
• Agent能力(Functioncalling能力)提升:在多任务协作或功能调用场景中,高效微调能够显著 提升模型Agent能力,使得模型能够有效地与其他系统进行交互、调用外部API或执行特定任务。
通过针对性微调,模型可以学会更精准的功能调用策略、参数解析和操作指令,从而在自动化服 务、智能助手或机器人控制等领域表现得更加高效和智能。
3. 微调与强化学习训练、模型蒸馏等概念辨析
而伴随着DeepSeek R1的兴起,关于强化学习训练、模型蒸馏等概念也逐渐被人熟知,这里我们简 单总结下这三者的异同。
微调、 强化学习训练 和 模型蒸馏 都是常用的技术手段,它们有着不同的应用场景和目标。尽管这些方法在某些方面有所交集,但它们的核心原理和任务目标却存在显著差异。
1. 微调(Fine-tuning):
微调是指在一个已经预训练的大型模型基础上,使用较少的任务特定数据对模型进行再训练,以适应特 定任务的需求。
微调通常针对模型的某些层进行调整,或者通过在全模型基础上进一步训练来优化其在 目标任务中的表现。微调不需要从零开始训练模型,而是通过 小范围的参数调整 来获得较高的任务表现。
• 目标:通过少量的标注数据对预训练模型进行优化,适应具体任务(如文本分类、问答、生成 等)。
• 特点:微调的计算量相对较小,能够在有限的数据和计算资源下提升模型在特定任务上的性能。
• 应用:常用于下游任务如情感分析、机器翻译、推荐系统等。
2. 强化学习训练(Reinforcement Learning):
强化学习是一种通过与环境互动来学习如何最大化长期奖励的学习方式。
与微调不同,强化学习是一个决策优化过程,其主要目标是通过 试错 和反馈来学习最优策略。强化学习的智能体通过与环境的交互获 得奖励信号,并根据反馈调整策略,长期进行优化。
• 目标:通过与环境的交互,学习最优的行为策略,最大化累积奖励。
• 特点:强化学习强调 动态决策,通过 探索和利用 的平衡,优化策略。它通常不依赖于预定义的数 据集,而是依赖于与环境的持续交互。
• 应用:强化学习在游戏AI(如AlphaGo)、机器人控制、自动驾驶等任务中有广泛应用。
3. 模型蒸馏(Model Distillation):
模型蒸馏是一种将 复杂、计算密集型的教师模型 的知识转移到 小型、高效的学生模型 上的技术。
通过蒸馏,学生模型能够学习教师模型的决策过程或表示,从而在保留较高效能的同时,降低模型的计算和 存储成本。蒸馏通常通过教师模型生成软标签或行为模仿来指导学生模型训练。
• 目标:通过教师模型的“知识转移” ,帮助学生模型提升性能,特别是计算能力有限的设备上。
• 特点:蒸馏的核心在于知识的迁移,尤其是在模型压缩和部署方面的优势。学生模型通常在性能上 能接近教师模型,但参数量更小,计算更高效。
• 应用:常见于模型压缩、边缘计算、低功耗设备的部署中,用于提升部署效率并降低计算需求。
三者的异同
需要注意的是, 模型微调 和 强化学习训练 都可以作为 模型蒸馏 的一个环节或技术实现手段,它们并不 互相排斥,反而在某些情况下能够互相补充,结合起来达到更好的效果。
4. 主流微调工具介绍
在入手学习大模型微调时,首先推荐功能层次封装层次较高的微调三剑客: unsloth、 Llama-Factory和ms-SWIFT。
除此之外,也可以借助更加底层的库,如peft、 LoRA、 transformer等实现高效 微调。
对于初学者来说,首先推荐unsloth、 Llama-Factory和ms-SWIFT来进行微调,三种工具基本说明 如下。
4.1 unsloth
• unsloth GitHub主页:https://github.com/unslothai/unsloth
unsloth 是一个专为大型语言模型(LLM)设计的微调框架,旨在提高微调效率并减少显存占用。 它通过手动推导计算密集型数学步骤并手写 GPU 内核,实现了无需硬件更改即可显著加快训练速度。
unsloth 与 HuggingFace 生态兼容,可以很容易地transformers、 peft、 trl等库结合,以实现模型的监督微调(SFT)和直接偏好优化(DPO),仅需模型的加载方式,无需对现有训练代码进行修改。
主要功能点:
• 高效微调: unsloth 通过深度优化,使 LLM 的微调速度提高 2-5 倍,显存使用量减少约 80%,且 准确度无明显下降。
• 广泛的模型支持: 目前支持的模型包括目前各类主流模型,用户可以根据需求适合的模型进行微调。
• 兼容性: unsloth 与 HuggingFace态系统兼容,用户可以轻松将其与 traformers、 peft等库结合,实现模型的监督微调(SFT)和直接偏好优化(DPO),仅需修改模型的加载方式,无需对现有训练代码进行过多修改。
• 内存优化: 通过 4 位和 16 位的 QLoRA/LoRA 微调, unsloth 显著了显 存占用,使得在资源受限的环境中也能大的微调。
unsloth核心优势:
• 显著提升微调效率: 相比传统方法, Unsloth 能够在更短的时间内完成微调任务,节省时间成本。
• 降低硬件要求: 通过优化显存使用,用户可以在显存较小的 GPU 上进行大模型的微调,降低了硬 件门槛。
• 开源免费: Unsloth 提供开源版本,用户可以在 Google Colab 或 Kaggle Notebooks 上免费试用,方便上手体验。
总的来说, unsloth 为大型语言模型的微调提供了高效、低成本的解决方案,适合希望在有限资源下进行模型微调的开发者和研究人员。
4.2 LLama-Factory
• LLama-Factory GitHub主页:https://github.com/hiyouga/LLaMA-Factory
LLaMA-Factory 是一个统一且高效的微调框架,旨在为超过 100 种大型语言模型(LLMs)和视觉 语言模型(VLMs)提供便捷的微调支持。 用户能够灵活地定制模型以适应各种下游任务。
主要功能和特点:
• 广型支持: LLaMA-Factory 支持对 100 多LLMs 和 VLMs 进行微调,包括最新的模型版本,如 Llama 3、 GLM-4、 Mistral Small、 PaliGemma2 等。
• 高效的微调方法: 框架集成了多nk Adaptation)、 QRA(Quantized LoRA)等,以提高训练速度 并减少显存占用。
• 多模态任务支持: 除了传统的文本任务外, LLaMA-Factory 还支频识别、音频理解等多种任务类 型。
• 实验监控: 提供了丰富的实验监控工具,如 LlamaBoard、TensorBoard、Wandb、 MLflow、练过程。
• 快速: 框架提供了类似 OpenAI 风格的 API、 Gradio UI 和命令行界面,并结合 vLLM worker,实 现了高效的推理能力。
4.3 ms-SWIFT
• ms-SWIFT GitHub项目主页: https://github.com/modelscope/swift
ms-swift( Scalable lightWeight Infrastructure for Fine-Tuning)是由魔搭社区(ModelScope) 开发的高效微调和部署框架,旨在为研究人员和开发者提供一站式的大模型与多模态大模型的训练、推理、评测、量化和部署解决方案。
模型支持:
ms-swift 支持超过 450 种大型模型(LLMs)和 150 多种多模态大模型(MLLMs)的训练和部署。
包括最新的模型版本,如 Qwen2.5、 InternLM3、GLM4、 Llama3.3、 Mistral、 DeepSeek-R1、Yi1.5、 Baichuan2、 Gemma2 等,以及多模态模型如 Qwen2.5-VL、 Qwen2-Audio、 Llama3.2-Vision、 Llava、 InternVL2.5 等。
• 多样化的训练技术: 框架集oRA、 Llama-Pro、 LonoRA、 GaLore、 Q-GaLore、 LoRA+、 LISA、 DoRA、 FourierFt、 ReFT、 UnSloth 和 Liger 等,满足不同的微调需求。
• 轻量级微调: 支持多种轻量级微调方法,如 LoRA、 QLoRA、 DoLLaMAPro、Adapt、 GaLore、 Q- Galore、 LISA、 UnSloth、 Liger-Kernel 等,降低显存和计算资源的消耗。
• 分布式训练: 支持分布式数据并行(DDP)、 DeepSpeed ZeRO2/ZeRO3、 FSDP 等技术,提升推 理加速: ** 提供 BNBWQ、 GPTQ、AQLM、 HQQ、 EETQ 等量化方法,并支持使用 vLLM 和LMDeploy 对推理、评测和部署 支持图像、视频和语音等多种模态型训练,涵盖 VQA、 Caption、 OCR、 Grounding 等任务。
• 用户友好的界面: 提供基于 Gradio 的 We和量化操作,简化了大模型的全链路流程。
5.模型微调所需硬件与服务器环境搭建
大模型微调属于大模型进阶类技术,不同于普通的模型对话或搭建基础应用,微调往往需要一定的软硬件条件支持。
接下来我们将以8B模型为例进行高效微调,最低INT4情况下仅需7G显存即可运行。
• 操作系统选择
而操作系统方面,由于绝大多数工业场景下微调会涉及多卡微调,目前只有Linux系统对DeepSpeed和其他多卡并行加速库支持较好,因此绝大多数工业场景下都会使用Ubuntu操作系统或 CentOS操作系统。本节公开课我们以Ubuntu系统为例来进行高效微调。
若无相关软件环境,本节公开课的相关代码也可以在Windows下运行(本节微调示例不涉及多卡并 行)。
但若想体验更加真实的工业场景下的微调流程,也可以考虑在AutoDL上租赁显卡并配置Ubuntu 服务器来完成操作。
最小化实现微调效果,仅需单卡3090运行两小时即可得到结果,仅需不到5元即可 完成训练:
6. 如何系统学习掌握AI大模型?
AI大模型作为人工智能领域的重要技术突破,正成为推动各行各业创新和转型的关键力量。抓住AI大模型的风口,掌握AI大模型的知识和技能将变得越来越重要。
学习AI大模型是一个系统的过程,需要从基础开始,逐步深入到更高级的技术。
这里给大家精心整理了一份
全面的AI大模型学习资源
,包括:AI大模型全套学习路线图(从入门到实战)、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等,资料免费分享
!
1. 成长路线图&学习规划
要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。
这里,我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。可以说是最科学最系统的学习成长路线。
2. 大模型经典PDF书籍
书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础。(书籍含电子版PDF)
3. 大模型视频教程
对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识。
4. 2024行业报告
行业分析主要包括对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。
5. 大模型项目实战
学以致用 ,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。
6. 大模型面试题
面试不仅是技术的较量,更需要充分的准备。
在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。
全套的AI大模型学习资源已经整理打包,有需要的小伙伴可以
微信扫描下方CSDN官方认证二维码
,免费领取【保证100%免费
】