XTuner大模型单卡低成本微调实战笔记
本节课首先介绍了大模型的常用微调方法,再介绍了上海人工智能实验室推出的XTuner工具
主要分为四个部分
1. Finetune简介
在LLM的下游应用中主要使用的微调方式是增量预训练和指令跟随
1.增量预训练微调是将新领域的文本内容喂给大模型
2.指令跟随微调则是根据一些对话模版进行微调
指令微调是一种特定的微调方式,在不同的论文中以不同的方式引入。我们在一个新的语言建模任务上对模型进行微调,其中的示例具有额外的结构,嵌入到模型提示中。
指令调整模型接收一对输入和输出,描述引导模型的任务。例如,
Instruction:写一个周末有趣的活动清单
Output:徒步旅行,去公园度过一天,野餐,看电影晚上
我们要求模型学习对整个文本字符串进行语言建模,例如“Instruction:写一个周末有趣的事情清单 Output:在公园度过一天、野餐、看电影”。
指令可以是任何文本,例如写电子邮件、编辑句子等。由于我们可以提供非常通用和多样化的指令,我们期望模型在许多以指令为驱动的任务上能够很好地泛化。
通过这种训练方式,与仅在整个文档的下一个标记预测上计算损失函数相比,模型学会遵循指令和输出的模式,并在回答那些人们经常感兴趣的问题时变得更有价值。换句话说,指令训练通过训练模型以与人类倾向于给出和接收指令的格式相一致的方式来提高语言模型给出的答案的质量。
在使用指令进行大型语言模型微调的过程中,会发生以下步骤:模型接收描述指令和输出的输入文本。在测试阶段,我们将使用相同的格式从模型生成输出。
参考链接:https://www.zhihu.com/question/603488576/answer/3178990801
两种常见的微调
2. XTuner介绍
主要介绍了XTuner工具的一些重要功能,如何通过已有的训练配置文件来自定义训练配置。还有一些XTuner的基础命令
3. 8GB 显卡玩转LLM
基础作业:
构建数据集,使用 XTuner 微调 InternLM-Chat-7B 模型, 让模型学习到它是你的智能小助手,大概说一下微调需要做的一些流程,
第一步创建开发环境不多说了,git里的xtuner官方文档有详细说明https://github.com/InternLM/tutorial/blob/main/xtuner;
第二步准备微调的数据,本案例中因为要微调的效果是输出xx小助手,所以我们需要手动制作,因为微调的方式是指令式的,所以我们要构建input和output模式的数据,类似
第三步,因为是微调InternLM模型,所以要准备原本的预训练模型文件,然后修改训练配置文件
第四步,使用XTuner train命令启动训练
因为官方文档其实挺详细的,基本上是零基础小白只要照着文档去做都能成功,所以就不再详细介绍了,当然因为我也还没有详细研究源码(xixi,偷个懒啦)。
最后附上微调后的效果
进阶作业:
- 将训练好的Adapter模型权重上传到 OpenXLab、Hugging Face 或者 MoelScope 任一一平台。
- 将训练好后的模型应用部署到 OpenXLab 平台,参考部署文档请访问:Docs