InternVL 多模态模型部署微调实践 -- 书生大模型实训营第4期进阶岛第四关
感兴趣的小伙伴可以点击浏览 ——「闯关手册」第四期书生大模型实战营 ,了解最全面活动的信息:Docs
目录
环境配置
训练环境配置
创建开发机参数如下:
- 开发机名称:你自己喜欢的名字
- 镜像:Cuda12.2-conda
- 资源配置:50% A100 * 1 (需要完成基础关卡或完成6人以上的邀请解锁算力)
- 其余默认
完成SSH远程连接后,新建虚拟环境并进入:
conda create --name xtuner-env python=3.10 -y
conda activate xtuner-env
安装与deepspeed集成的xtuner和相关包:
pip install -U 'xtuner[deepspeed]' timm==1.0.9
pip install torch==2.4.1 torchvision==0.19.1 torchaudio==2.4.1 --index-url https://download.pytorch.org/whl/cu121
pip install transformers==4.39.0
推理环境配置
配置推理所需环境("lmdeploy" 为推理使用环境名):
conda create -n lmdeploy python=3.10 -y
conda activate lmdeploy
pip install lmdeploy gradio==4.44.1 timm==1.0.9
LMDeploy部署
LMDeploy基本用法介绍
我们主要通过 pipeline.chat 接口来构造多轮对话管线,核心代码为(这里直接copy了课程文档里的内容):
## 1.导入相关依赖包
from lmdeploy import pipeline, TurbomindEngineConfig, GenerationConfig
from lmdeploy.vl import load_image
## 2.使用你的模型初始化推理管线
model_path = "your_model_path"
pipe = pipeline(model_path,
backend_config=TurbomindEngineConfig(session_len=8192))
## 3.读取图片(此处使用PIL读取也行)
image = load_image('your_image_path')
## 4.配置推理参数
gen_config = GenerationConfig(top_p=0.8, temperature=0.8)
## 5.利用 pipeline.chat 接口 进行对话,需传入生成参数
sess = pipe.chat(('describe this image', image), gen_config=gen_config)
print(sess.response.text)
## 6.之后的对话轮次需要传入之前的session,以告知模型历史上下文
sess = pipe.chat('What is the woman doing?', session=sess, gen_config=gen_config)
print(sess.response.text)
网页应用部署体验
可以使用UI界面先体验与InternVL对话:
拉取本教程的github仓库https://github.com/Control-derek/InternVL2-Tutorial.git:
注意:demo.py文件中,MODEL_PATH处传入InternVL2-2B的路径,如果使用的是InternStudio的开发机则无需修改,否则改为模型路径。
遇到的问题
先遇到该问题:
进入网页时显示出如下界面,提示少包,我们按照要求下载并将包mv到指定位置:
mv /root/InternVL2-Tutorial/demo/frpc_linux_amd64_v0.2 /root/.conda/envs/lmdeploy/lib/python3.10/site-packages/gradio/frpc_linux_amd64_v0.2

再次运行,报错如下,且网页依旧无法显示:

试了非常久,希望大家不会出现这个问题。
这里给出一种解决措施:
WIN+R -- cmd --> 输入:
ssh -p (SSH登入命令里看) root@ssh.intern-ai.org.cn -CNg -L 1096:127.0.0.1:1096 -o StrictHostKeyChecking=no
接着网页打开:127.0.0.1:1096

测试结果如上,它将小笼包识别成了饺子,说明当前的模型尚且需要微调。
所以,接下来我们进行......
但在这之前,先解决一下多次提问输入不了的问题:
如果没找到目录,可以用下面的方法:
cd /conda/envs/lmdeploy/lib/python3.10/site-packages/lmdeploy/vl/
vim engine.py 打开文件,找到对应语句,
- 进入插入模式:按下
i键。- 保存并退出:按下
Esc键,然后输入:wq并按Enter。- 放弃更改并退出:按下
Esc键,然后输入:q!并按Enter
完成后如下:

XTuner微调实践
准备基本配置文件
在InternStudio开发机的/root/xtuner路径下,先进入工作目录并激活训练环境:
但是,其实是没有xtuner文件的,先在/root路径下克隆一下:
git clone https://github.com/InternLM/xtuner.git
cd xtuner

原始internvl的微调配置文件在路径./xtuner/configs/internvl/v2下,假设上面克隆的仓库在/root/InternVL2-Tutorial,复制配置文件到目标目录下:
cp /root/InternVL2-Tutorial/xtuner_config/internvl_v2_internlm2_2b_lora_finetune_food.py /root/xtuner/xtuner/configs/internvl/v2/internvl_v2_internlm2_2b_lora_finetune_food.py
配置文件参数解读


Xmind AI: The Best AI Brainstorming & Mind Mapping Tool 第一幅图的link
开始微调
注意:这里直接用的share目录下处理好的数据集。
微调参数在:
/root/xtuner/xtuner/configs/internvl/v2/internvl_v2_internlm2_2b_lora_finetune_food.py
可以直接运行。
xtuner train internvl_v2_internlm2_2b_lora_finetune_food --deepspeed deepspeed_zero2
也可以指定位置运行:
xtuner train /root/xtuner/xtuner/configs/internvl/v2/internvl_v2_internlm2_2b_lora_finetune_food.py --deepspeed deepspeed_zero2
看到有日志输出,即为启动成功:
无法发现文件,我们给出全路径继续跑一次(记得检查是否安装了
pip install -U 'xtuner[deepspeed]' timm==1.0.9,没装会报错): 
慢慢炼吧~ 
大早上又train了一遍,大概花2h,大家控制一下算力点数,尽量节约资源哦~
微调后,把模型checkpoint的格式转化为便于测试的格式:
python xtuner/configs/internvl/v1_5/convert_to_official.py xtuner/configs/internvl/v2/internvl_v2_internlm2_2b_lora_finetune_food.py ./work_dirs/internvl_v2_internlm2_2b_lora_finetune_food/iter_640.pth ./work_dirs/internvl_v2_internlm2_2b_lora_finetune_food/lr35_ep10/
运行成功之后,大概是这样的:


接下来,开始检验微调后的效果吧~
开启AI美食鉴赏家
修改MODEL_PATH为刚刚转换后保存的模型路径:

同第2节中做的那样,启动网页应用:
cd /root/InternVL2-Tutorial
conda activate lmdeploy
python demo.py
开始啦!

成功识别了小笼包,也能简单描述特定,判断是什么菜系。

欢迎大伙儿参与活动体验和留言交流~
更多推荐


所有评论(0)