1、Finetune 简介
- 两种Finetune范式
LLM 的下游应用中,增量预训练和指令跟随是经常会用到两种的微调模式
增量预训练微调
使用场景:让基座模型学习到一些新知识,如某个垂类领域的常识训练数据:文章、书籍、代码等
指令跟随微调
使用场景:让模型学会对话模板,根据人类指令进行对话训练数据:高质量的对话、问答数据
- 一条数据的一生
原始数据à标准格式数据à添加对话模板àTokenized数据à添加 Labelà开始训练
2、XTuner 介绍
XTuner一个大语言模型&多模态模型微调工具箱。由 MMRazor 和 MMDeploy 联合开发。
- 傻瓜化:以配置文件的形式封装了大部分微调场景,0基础的非专业人员也能一键开始微调。
- 轻量级:对于 7B 参数量的LLM,微调所需的最小显存仅为 8GB:消费级显卡✅,colab✅
功能亮点
- 适配多种生态
多种微调算法多种微调策略与算法,覆盖各类 SFT 场景
适配多种开源生态支持加载 HuggingFace、Modelscope 模型或数据集
自动优化加速开发者无需关注复杂的显存优化与计算加速细节
- 适配多种硬件
训练方案覆盖 NVIDIA 20 系以上所有显卡
最低只需 8GB 显存即可微调 7B 模型
3、8GB显存玩转LLM
Flash Attention 和 DeepSpeed ZeRO 是 XTuner 最重要的两个优化技巧
- Flash Attention
将 Attention 计算并行化避免了计算过程中 Attention Score NxN的显杏占用(训练过程中的 N 都比较大)
- Deepspeed ZeRO
ZeRO 优化,通过将训练过程中的参数、梯度和优化器状态切片保存,能够在多 GPU 训练时显著节省显存
除了将训练中间状态切片外,DeepSpeed 训练时使用 FP16 的权重,相较于 Pvtorch 的 AMP 训练在单 GPU 上也能大幅节省显存
4、InternLM2 1.8B 模型
InternLM2-1.8B 提供了三个版本的开源模型,大家可以按需选择
- InternLM2-1.8B:具有高质量和高适应灵活性的基础模型,为下游深度适应提供了良好的起点。
- InternLM2-Chat-1.8B-SFT:在 InternLM2-1.8B 上进行监督微调(SFT)后得到的对话模型。
- InternLM2-Chat-1.8B:通过在线 RLHF 在 InternLM2-Chat-1.8B-SFT 之上进-步对齐。InternLM2-Chat-1.8B 表现出更好的指令跟随、聊天体验和函数调用推荐下游应用程序使用。(模型大小仅为3.78GB)
在 FP16 精度模式下,InternLM2-1.8B 仅需 4GB 显存的笔记本显卡即可顺畅运行。拥有 8GB 显存的消费级显卡,即可轻松进行 1.8B 模型的微调工作。如此低的硬件门槛非常适合初学者使用,以深入了解和掌握大模型的全链路
5、多模态LLM微调
给LLM装上电子眼:多模态LLM原理简介
文本单模态+图像Image Projcetorà多模态LLM
什么型号的电子眼:LLaVA方案简介
- Haotian Liu 等使用 GPT-4V 对图像数据生成描述,以此构建出大量<question text><image>--<answer text>的数据对
- 利用这些数据对,配合文本单模态 LLM,训练出一个 |mage Projector。
- 所使用的文本单模型 LLM 和训练出来的 Image Projector,统称为 LLaVA 模型。
快速上手:InternLM2 Chat 1.8B + LlaVA
在本节中,我们将 自己构造<questiontext><image><answer text>数据对,基于InternLM2 chat 1.8B这个文本单模态模型,使用LLaVA方案训练一个给InternLM2 Chat 1.8B使用的lmage Projector文件。