赞
踩
目录
1.增量预训练(Incremental Pretraining)
2. 指令微调(Instructional Fine-tuning)
1. 指令微调(Instructional Fine-tuning)
2. 增量预训练(Incremental Pretraining)
2. 三种模式的对比Full Finetuning、LoRA、QLoRA
①. XTuner两个优化技巧Flash Attention和 DeepSpeedZeRO
图解:
增量预训练是一种微调模式,它通过逐步添加新的层或参数来扩展预训练模型。在增量预训练中,首先使用预训练模型在新任务的数据集上进行初步训练,然后逐层或逐步添加新的层或参数,并继续训练模型。这种微调模式适用于具有相似任务特征的不同数据集,可以有效地利用预训练模型的已有知识,提高模型的泛化能力。
使用场景:让基座模型学习到一些新知识,如某个垂类领域的常识训练数据:文章、书籍、代码等
指令微调是一种微调模式,它通过将预训练模型与特定任务的指令相结合来进行训练。在指令微调中,首先使用预训练模型在新任务的数据集上进行初步训练,然后使用特定任务的指令(如文本描述、图像标签等)来指导模型进行进一步的训练。这种微调模式适用于具有明确任务目标的新数据集,可以有效地利用预训练模型的已有知识,并利用特定任务的指令来提高模型的性能。
使用场景:让模型学会对话模板,根据人类指令进行对话训练数据:高质量的对话、问答数据
指令微调的图解样例:
一个问题一个回答
对话模板:为了让模型可以识别出system、user、assistant
流程如下图所示:
陈述句式
XTuner 适配了多个热门开源数据集格式,开发者如已有对应格式的数据集,可以直接使用,并支持多种格式数据源的混合使用:
XTuner 首次尝试将 HuggingFace 与 OpenMMLab 进行结合,兼顾易用性和可配置性。支持使用 MMEngine Runner 和 HuggingFace Trainer 两种训练引擎,开发者如有深度定制化需求,可根据使用习惯灵活配置。
- pip install xtuner
-
- # 使用 MMEngine Runner 训练
- xtuner train internlm_7b_qlora_oasst1_e3
-
- # 使用 HugingFace Trainer 训练
- xtuner train internlm_7b_qlora_oasst1_e3_hf
XTuner 内置了增量预训练、单轮&多轮对话指令微调、工具类指令微调的标准化流程,让开发者只需聚焦于数据本身。
同时, XTuner 集成了 QLoRA、DeepSpeed 和 FSDP 等技术,提供各种尺寸模型在各种规格硬件下的训练解决方案,通过XTurner一键式启动训练,仅需8GB显存即可微调7B模型。
- pip install 'xtuner[deepspeed]'
- # 8G 显存微调 Llama2-7B
- xtuner train llama2_7b_qlora_oasst1_512_e3 --deepspeed deepspeed_zero2
详细简介如图:
LoRA通过在原本的Linear旁,新增一个支路,包含两个连续的小Linear,新增的这个支路通常叫做Adapter(LORA)
Adapter参数量远小于原本的 Linear,能大幅降低训练的显存消耗。
课程中老师的描述挺形象的:
想象一下,你有一个超大的玩具,现在你想改造这个超大的玩具。但是,对整个玩具进行全面的改动会非常昂贵。
①因此,你找到了一种叫 LoRA 的方法:只对玩具中的某些零件进行改动,而不是对整个玩具进行全面改动。
② 而 QLoRA 是 LoRA 的一种改进:如果你手里只有一把生锈的螺丝刀,也能改造你的玩具。
Flash Attention将Attention计算并行化,避免了计算过程中Attention Score NxN的显存占用(训练过程中的N都比较大)。
ZeRO优化,通过将训练过程中的参数、梯度和优化器状态切片保存,能够在多GPU训练时显著节省显存,除了将训练中间状态切片外,DeepSpeed 训练时使用FP16的权重,相较于Pytorch的AMP训练,在单GPU上也能大幅节省显存。
其并非自动启动需要加 --deepspeed deepspeed zero3
QLoRA后面加上 --deepspeed deepspeed zero2
xtuner train internlm_20b_qlora__oasst1_512_e3 --deepspeed deepspeed zero3
模型微调的流程看官方的文档超详细:xtuner单卡微调
下载了三个多小时终于下好了
1. 将得到的 PTH 模型即LoRA模型文件转换为 HuggingFace 模型
2. 将 HuggingFace adapter 合并到大语言模型
3. 与合并后的模型对话:
注意:prompt-template后的参数需要根据自己选择的底座模型进行更改
可以使用xtuner chat --help参看
- # 加载 Adapter 模型对话(Float 16)
- xtuner chat ./merged --prompt-template internlm_chat
4. 微调和测试效果
创建data
文件夹用于存放用于训练的数据集
mkdir -p /root/personal_assistant/data && cd /root/personal_assistant/data
使用脚本生成正确格式的数据集
- import json
-
- # 输入你的名字
- name = 'Shengshenlan'
- # 重复次数
- n = 10000
-
- data = [
- {
- "conversation": [
- {
- "input": "请做一下自我介绍",
- "output": "我是{}的小助手,内在是上海AI实验室书生·浦语的7B大模型哦".format(name)
- }
- ]
- }
- ]
-
- for i in range(n):
- data.append(data[0])
-
- with open('personal_assistant.json', 'w', encoding='utf-8') as f:
- json.dump(data, f, ensure_ascii=False, indent=4)
下载模型InternLM-chat-7B
InternStudio 平台的 share
目录下已经为我们准备了全系列的 InternLM
模型,可以使用如下命令复制internlm-chat-7b
:
- mkdir -p /root/personal_assistant/model/Shanghai_AI_Laboratory
- cp -r /root/share/temp/model_repos/internlm-chat-7b /root/personal_assistant/model/Shanghai_AI_Laboratory
下载配置文件
拷贝一个配置文件到当前目录:xtuner copy-cfg ${CONFIG_NAME} ${SAVE_PATH}
(注意最后有个英文句号,代表复制到当前路径)
xtuner copy-cfg internlm_chat_7b_qlora_oasst1_e3 .
修改配置文件即: 修改拷贝后的文件internlm_chat_7b_qlora_oasst1_e3_copy.py
训练模型
xtuner train /root/personal_assistant/config/internlm_chat_7b_qlora_oasst1_e3_copy.py
将得到的 PTH 模型转换为 HuggingFace 模型,即:生成 Adapter 文件夹
xtuner convert pth_to_hf ${CONFIG_NAME_OR_PATH} ${PTH_file_dir} ${SAVE_PATH}
例如:
成功标志如下:
将 HuggingFace adapter 合并到大语言模型:
- xtuner convert merge ./internlm-chat-7b ./hf ./merged --max-shard-size 2GB
- # xtuner convert merge \
- # ${NAME_OR_PATH_TO_LLM} \
- # ${NAME_OR_PATH_TO_ADAPTER} \
- # ${SAVE_PATH} \
- # --max-shard-size 2GB
例如:
与合并后的模型对话:
- # 加载 Adapter 模型对话(Float 16)
- xtuner chat ./merged --prompt-template internlm_chat
-
- # 4 bit 量化加载
- # xtuner chat ./merged --bits 4 --prompt-template internlm_chat
到此为止我们得到了属于自己的专属模型
QAQ翻车,训练轮数太少,导致并没有安装咱设定好的来,不过也和原来的不一样。大家可以看一下下面的两张图片: 【建议大家多训练几轮,我由于怕数据多训练时间长把10000数据变为了1000,大家想要达到自己的预期效果请增加数据集和训练轮数】
原模型的回复:
毕竟是第一次生成专属自己的模型,所以我又重新跑了一遍
但是好像过拟合了,只会回答这一个问题了,哈哈,不过还是成功微调了!!!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。