书生浦语实战营第二期之Xtuner微调LLM

poster

1. 前期准备

1.1 数据集准备

step1: 创建一个文件夹,并进入该文件夹
step2: 创建一个存放数据的data文件夹
step3: 使用generate_data.py生成训练数据

1.2 模型准备

准备完数据集后,使用 InternLM 最新推出的小模型 InterLM2-Chat-1.8B 来完成

step1: 创建一个文件夹,并进入该文件夹 mkdir -p /root/ft/model
step2: 复制模型文件 cp -r /root/share/new_models/Shanghai_AI_Laboratory/internlm2-chat-1_8b/* /root/ft/model/

1.3 配置文件选择

step1: xtuner list-cfg -p internlm2_1_8b
step2: xtuner copy-cfg internlm2_1_8b_qlora_alpaca_e3 /root/ft/config

2. 模型训练部分

2.1 配置文件修改

这部分使用的是书生浦语实战营提供的config文件

2. 2 模型训练

2.2.1 常规训练

准备好了配置文件,只需要将使用 xtuner train 指令即可开始训练。

xtuner train /root/ft/config/internlm2_1_8b_qlora_alpaca_e3_copy.py --work-dir /root/ft/train

–work-dir 为指定保存路径

2.2.2 使用 deepspeed 来加速训练

除此之外,也可以结合 XTuner 内置的 deepspeed 来加速整体的训练过程

使用 deepspeed 来加速训练

xtuner train /root/ft/config/internlm2_1_8b_qlora_alpaca_e3_copy.py --work-dir /root/ft/train_deepspeed --deepspeed deepspeed_zero2

2.3 训练效果

训练前:
在这里插入图片描述

训练后:

3. 模型转换、整合、测试及部署

3.1 模型转换

模型转换的本质其实就是将原本使用 Pytorch 训练出来的模型权重文件转换为目前通用的 Huggingface 格式文件。

step1: 创建保存转换后 Huggingface 格式的文件夹
step2: xtuner convert pth_to_hf ${配置文件地址} ${权重文件地址} ${转换后模型保存地址}

此时,huggingface 文件夹即为我们平时所理解的所谓 “LoRA 模型文件”

可以简单理解:LoRA 模型文件 = Adapter

convert

3.2 模型整合

\qquad 我们通过视频课程的学习可以了解到,对于 LoRA 或者 QLoRA 微调出来的模型其实并不是一个完整的模型,而是一个额外的层(adapter)。那么训练完的这个层最终还是要与原模型进行组合才能被正常的使用。

\qquad 而对于全量微调的模型(full)其实是不需要进行整合这一步的,因为全量微调修改的是原模型的权重而非微调一个新的 adapter ,因此是不需要进行模型整合的。

\qquad 在 XTuner 中也是提供了一键整合的指令,但是在使用前我们需要准备好三个地址,包括原模型的地址、训练好的 adapter 层的地址(转为 Huggingface 格式后保存的部分)以及最终保存的地址。

step1: 创建一个名为 final_model 的文件夹存储整合后的模型文件
step2: export MKL_SERVICE_FORCE_INTEL=1
step3: xtuner convert merge ${NAME_OR_PATH_TO_LLM} ${NAME_OR_PATH_TO_ADAPTER} ${SAVE_PATH}

merge

3.3 对话测试

3.3.1. 与模型进行对话
xtuner chat /root/ft/final_model --prompt-template internlm2_chat

test

3.3.2 和原模型进行对话进行对比
xtuner chat /root/ft/model --prompt-template internlm2_chat

origin

3.3.3 使用 --adapter 参数与完整的模型进行对话
xtuner chat /root/ft/model --adapter /root/ft/huggingface --prompt-template internlm2_chat

adapter

4. Web demo 部署

step1: 首先需要下载相关的第三方库 pip install streamlit==1.24.0
step2: 创建存放 InternLM 文件的代码
step3: git clone https://github.com/InternLM/InternLM.git
step4: 进入该库中
step5 : 一些配置
step6: streamlit run /root/ft/web_demo/InternLM/chat/web_demo.py --server.address 127.0.0.1 --server.port 6006

在运行前,我们还需要做的就是将端口映射到本地。那首先我们使用快捷键组合 Windows + R(Windows 即开始菜单键)打开指令界面,并输入命令,按下回车键。

打开 PowerShell 后,先查询端口,再根据端口键入命令, 然后我们需要在 PowerShell 中输入以下内容(需要替换为自己的端口号)

ssh -CNg -L 6006:127.0.0.1:6006 root@ssh.intern-ai.org.cn -p 38374

注意:要在浏览器打开 http://127.0.0.1:6006 页面后,模型才会加载。

效果图如下:
web

5. 上传模型至Openxlab社区

详情可见地址:https://openxlab.org.cn/models/detail/Alannikos/SmartAssistant/tree/main
在这里插入图片描述

下面是在openxlab社区部署效果(这里因为是CPU运行,所以比较慢)

yunxing


REFERENCE

  1. https://github.com/InternLM/Tutorial/blob/camp2/xtuner/personal_assistant_document.md
  • 13
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值