XTuner微调个人小助手认知

当我们准备好开发机之后,就可以进行下一步的微调任务了。

另外,进入开发机之后,请确保自己已经克隆了Tutorial仓库的资料到本地。

mkdir -p /root/InternLM/Tutorial
git clone -b camp3  https://github.com/InternLM/Tutorial /root/InternLM/Tutorial

2.2 创建虚拟环境

在安装 XTuner 之前,我们需要先创建一个虚拟环境。使用 Anaconda 创建一个名为 xtuner0121 的虚拟环境,可以直接执行命令。

# 创建虚拟环境
conda create -n xtuner0121 python=3.10 -y

# 激活虚拟环境(注意:后续的所有操作都需要在这个虚拟环境中进行)
conda activate xtuner0121

# 安装一些必要的库
conda install pytorch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 pytorch-cuda=12.1 -c pytorch -c nvidia -y
# 安装其他依赖
pip install transformers==4.39.3
pip install streamlit==1.36.0

2.3 安装 XTuner

虚拟环境创建完成后,就可以安装 XTuner 了。首先,从 Github 上下载源码。

# 创建一个目录,用来存放源代码
mkdir -p /root/InternLM/code

cd /root/InternLM/code

git clone -b v0.1.21  https://github.com/InternLM/XTuner /root/InternLM/code/XTuner

其次,进入源码目录,执行安装。

# 进入到源码目录
cd /root/InternLM/code/XTuner
conda activate xtuner0121

# 执行安装
pip install -e '.[deepspeed]'

如果速度太慢可以换成 pip install -e '.[deepspeed]' -i https://mirrors.aliyun.com/pypi/simple/

最后,我们可以验证一下安装结果。

xtuner version

对于很多初学者而言,我们可能不太熟悉 XTuner 的用法,那么我们可以通过以下命令来查看相关的帮助。

xtuner help

对于很多的初学者而言,安装好环境意味着成功了一大半!因此我们接下来就可以进入我们的下一步,准备好我们需要的模型、数据集和配置文件,并进行微调训练!

2.4 模型准备

软件安装好后,我们就可以准备要微调的模型了。

对于学习而言,我们可以使用 InternLM 推出的1.8B的小模型来完成此次微调演示。

对于在 InternStudio 上运行的小伙伴们,可以不用通过 HuggingFace、OpenXLab 或者 Modelscope 进行模型的下载,在开发机中已经为我们提供了模型的本地文件,直接使用就可以了。

我们可以通过以下代码一键通过符号链接的方式链接到模型文件,这样既节省了空间,也便于管理。

# 创建一个目录,用来存放微调的所有资料,后续的所有操作都在该路径中进行
mkdir -p /root/InternLM/XTuner

cd /root/InternLM/XTuner

mkdir -p Shanghai_AI_Laboratory

ln -s /root/share/new_models/Shanghai_AI_Laboratory/internlm2-chat-1_8b Shanghai_AI_Laboratory/internlm2-chat-1_8b

执行上述操作后,Shanghai_AI_Laboratory/internlm2-chat-1_8b 将直接成为一个符号链接,这个链接指向 /root/share/new_models/Shanghai_AI_Laboratory/internlm2-chat-1_8b 的位置。

这意味着,当我们访问 Shanghai_AI_Laboratory/internlm2-chat-1_8b 时,实际上就是在访问 /root/share/new_models/Shanghai_AI_Laboratory/internlm2-chat-1_8b 目录下的内容。通过这种方式,我们无需复制任何数据,就可以直接利用现有的模型文件进行后续的微调操作,从而节省存储空间并简化文件管理。

模型文件准备好后,我们可以使用tree命令来观察目录结构。

这里使用了NUMPY==1.26.4才可以运行成功。

3 快速开始

这里我们用 internlm2-chat-1_8b 模型,通过 QLoRA 的方式来微调一个自己的小助手认知作为案例来进行演示。

3.1 微调前的模型对话

我们可以通过网页端的 Demo 来看看微调前 internlm2-chat-1_8b 的对话效果。

首先,我们需要准备一个Streamlit程序的脚本。

Streamlit程序的完整代码是:tools/xtuner_streamlit_demo.py

然后,我们可以直接启动应用。

conda activate xtuner0121

streamlit run /root/InternLM/Tutorial/tools/xtuner_streamlit_demo.py

运行后,在访问前,我们还需要做的就是将端口映射到本地。

通过如图所示的地方,获取开发机的端口和密码。

花了4个小时完成微调处理。

3.2.4 模型格式转换

模型转换的本质其实就是将原本使用 Pytorch 训练出来的模型权重文件转换为目前通用的 HuggingFace 格式文件,那么我们可以通过以下命令来实现一键转换。

我们可以使用 xtuner convert pth_to_hf 命令来进行模型格式转换。

pth_file=`ls -t ./work_dirs/internlm2_chat_1_8b_qlora_alpaca_e3_copy/*.pth | head -n 1`
export MKL_SERVICE_FORCE_INTEL=1
export MKL_THREADING_LAYER=GNU
xtuner convert pth_to_hf ./internlm2_chat_1_8b_qlora_alpaca_e3_copy.py ${pth_file} ./hf

合成新的模型

调整了一天的模型测试下看

老天,花了大半天时间训练的模型变傻子了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值