一.Finetune
1.为什么要微调?
2.两种微调范式
增量预训练微调,指令跟随微调
3.微调的两种方式:LoRA和QLoRA
二.XTuner
零基础非专业人员也能一键开始微调
微调所需的最小显存仅为8
与LLaMa-Factory相比:
安装:pip install xtuner
挑选配置模板:xtuner list-cfg-p internlm_20b
一键训练:xtuner train internlm_20b_qlora_oasst1_512_e3
拷贝配置模板: xtuner copy-cfg internlm_20b_qlora_oasst1_512_e3 ./
修改配置模板:vim internlm_20b_qlora_oasst1_512_e3_copy.py
启动训练:xtuner train internlm_20b_qlora_oasst1_512_e3_copy.py
Floa t16模型对话:xtunerchat internlm/ internlm_20b
4bit模型对话:xtunerchat internlm/ internlm_20b --bits4
加载adpter模型对话:xtunerchat internlm/ internlm_20b --adapter $ADAPTER_DIR
加速训练:xtuner train internlm_20b_qlora_oasst1_512_e3 --deepspeed deepspeed_zero3
三.8GB显存玩转LLM
四.InternLM2 1.8B模型
InternLM2 1.8B提供了三个版本的开源模型:
InternLM2 1.8B,InternLM2 -chat-1.8B-SFT,InternLM2 -Chat-1.8B(推荐)
五.快速上手
1.环境安装:
首先我们需要先安装一个 XTuner 的源码到本地来方便后续的使用。
# 如果你是在 InternStudio 平台,则从本地 clone 一个已有 pytorch 的环境: # pytorch 2.0.1 py3.10_cuda11.7_cudnn8.5.0_0 studio-conda xtuner0.1.17 # 如果你是在其他平台: # conda create --name xtuner0.1.17 python=3.10 -y # 激活环境 conda activate xtuner0.1.17 # 进入家目录 (~的意思是 “当前用户的home路径”) cd ~ # 创建版本文件夹并进入,以跟随本教程 mkdir -p /root/xtuner0117 && cd /root/xtuner0117 # 拉取 0.1.17 的版本源码 git clone -b v0.1.17 https://github.com/InternLM/xtuner # 无法访问github的用户请从 gitee 拉取: # git clone -b v0.1.15 https://gitee.com/Internlm/xtuner # 进入源码目录 cd /root/xtuner0117/xtuner # 从源码安装 XTuner pip install -e '.[all]'
2.数据集准备:
创建一个文件夹来存放我们这次训练所需要的所有文件。
# 前半部分是创建一个文件夹,后半部分是进入该文件夹。 mkdir -p /root/ft && cd /root/ft # 在ft这个文件夹里再创建一个存放数据的data文件夹 mkdir -p /root/ft/data && cd /root/ft/data
# 创建 `generate_data.py` 文件
touch /root/ft/data/generate_data.py
3.模型准备:
假如大家存储空间不足,我们也可以通过以下代码一键通过符号链接的方式链接到模型文件,这样既节省了空间,也便于管理。
# 删除/root/ft/model目录
rm -rf /root/ft/model
# 创建符号链接
ln -s /root/share/new_models/Shanghai_AI_Laboratory/internlm2-chat-1_8b /root/ft/model
执行上述操作后,/root/ft/model 将直接成为一个符号链接,这个链接指向 /root/share/new_models/Shanghai_AI_Laboratory/internlm2-chat-1_8b 的位置。
这意味着,当我们访问 /root/ft/model 时,实际上就是在访问 /root/share/new_models/Shanghai_AI_Laboratory/internlm2-chat-1_8b 目录下的内容。通过这种方式,我们无需复制任何数据,就可以直接利用现有的模型文件进行后续的微调操作,从而节省存储空间并简化文件管理。
配置文件选择
(注意要提前激活之前配置的XTuner环境,否则后面的步骤无法进行,我就是犯了这个错误)
所谓配置文件(config),其实是一种用于定义和控制模型训练和测试过程中各个方面的参数和设置的工具。准备好的配置文件只要运行起来就代表着模型就开始训练或者微调了。
# 列出所有内置配置文件
# xtuner list-cfg
# 假如我们想找到 internlm2-1.8b 模型里支持的配置文件
xtuner list-cfg -p internlm2_1_8b
这里就用到了第一个 XTuner 的工具 list-cfg ,对于这个工具而言,可以选择不添加额外的参数
# 创建一个存放 config 文件的文件夹
mkdir -p /root/ft/config
# 使用 XTuner 中的 copy-cfg 功能将 config 文件复制到指定的位置
xtuner copy-cfg internlm2_1_8b_qlora_alpaca_e3 /root/ft/config
这里我们就用到了 XTuner 工具箱中的第二个工具 copy-cfg ,该工具有两个必须要填写的参数 {CONFIG_NAME} 和 {SAVE_PATH}
配置文件修改:(修改后的代码)
模型训练:
常规训练:我们准备好了配置文件好,我们只需要将使用 xtuner train 指令即可开始训练。
# 指定保存路径
xtuner train /root/ft/config/internlm2_1_8b_qlora_alpaca_e3_copy.py --work-dir /root/ft/train
训练时间较长(我在这里等待了将近二十分钟)真的很慢!!!
使用 deepspeed 来加速训练(可以发现训练的速度明显加快)
# 使用 deepspeed 来加速训练
xtuner train /root/ft/config/internlm2_1_8b_qlora_alpaca_e3_copy.py --work-dir /root/ft/train_deepspeed --deepspeed deepspeed_zero2