这几天学习了《InternVL 多模态模型部署微调实践 》一课,进一步体会到了xtuner微调大模型的巨大威力,以及微调在大模型部署到应用中的关键作用。以下是记录复现过程及截图:
首先,根据老师的讲解,解释一下internVL InternVL 是一种用于多模态任务的深度学习模型,旨在处理和理解多种类型的数据输入,如图像和文本。它结合了视觉和语言模型,能够执行复杂的跨模态任务,比如图文匹配、图像描述生成等。通过整合视觉特征和语言信息,InternVL 可以在多模态领域取得更好的表现
InternVL 模型总览
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/0b9eac5ce9b74d21aafc1b160b18e14e.jpeg
上面是扩大448*448
![在这是原这里插入图片描述](https://i-blog.csdnimg.cn/direct/7dc15f750f064b96a3ab95af88c56e0f.jpeg#p
这是原图
InternVL 部署微调实践
conda create --name xtuner python=3.10 -y
激活虚拟环境(注意:后续的所有操作都需要在这个虚拟环境中进行)
conda activate xtuner
安装一些必要的库
conda install pytorch2.1.2 torchvision0.16.2 torchaudio==2.1.2 pytorch-cuda=12.1 -c pytorch -c nvidia -y
安装其他依赖
apt install libaio-dev
pip install transformers4.39.3
pip install streamlit1.36.0
上面是配置虚拟环境及安装依赖包的截图
InternVL 推理部署攻略
推理后我们发现直接使用2b模型不能很好的讲出梗
现在我们要对这个2b模型进行微调:
红框里就是启动微调的命令代码
上面是检查系统环境信息的截图
这是对数据进行处理
微调中微调中微调结束。经过大约七小时六轮训练成功优化internVL2-2B大模型
合并权重&&模型转换
用官方脚本进行权重合并
cd XTuner
transfer weights
python3 xtuner/configs/internvl/v1_5/convert_to_official.py xtuner/configs/internvl/v2/internvl_v2_internlm2_2b_qlora_finetune.py /root/InternLM/work_dir/internvl_ft_run_8_filter/iter_3000.pth /root/InternLM/InternVL2-2B/(启动权重合并命令)
权重合并的截图
最后我们的模型在:/root/InternLM/convert_model/,文件格式:
微调后效果对比
把下面的代码替换进test_lmdeploy.py中,然后跑一下效果。
下面展示一些 内联代码片
。
from lmdeploy.vl import load_image
pipe = pipeline('/root/InternLM/InternVL2-2B')
image = load_image('/root/InternLM/007aPnLRgy1hb39z0im50j30ci0el0wm.jpg')
response = pipe(('请你根据这张图片,讲一个脑洞大开的梗', image))
print(response.text)
```cd /root/InternLM/code
python3 test_lmdeploy.py
红框是回答的结果。比前面回答有意思哇!