准备InternVL模型和环境
我们使用InternVL2-2B模型。该模型已在share文件夹下挂载好,现在让我们把移动出来。
cd /root mkdir -p model # cp 模型 cp -r /root/share/new_models/OpenGVLab/InternVL2-2B /root/model/
然后配置环境和安装xtuner:
好像和之前xtuner有点冲突,换了个文件夹名字
准备微调数据集
数据集我们从官网下载下来并进行去重,只保留中文数据等操作。并制作成XTuner需要的形式。并已在share里,我们一起从share里挪出数据集。
让我们打开数据集的一张图看看,我们选择jsonl里的第一条数据对应的图片。首先我们先把这张图片挪动到InternLM文件夹下面。(要去root下cp)
InternVL 推理部署攻略
使用pipeline进行推理
之后我们使用lmdeploy自带的pipeline工具进行开箱即用的推理流程,新建一个文件并运行:
InternVL 微调攻略
数据集已经准备好了,在刚刚的datasets里
配置微调参数
让我们一起修改XTuner下 InternVL的config,文件在: /root/InternLM/code/XTuner/xtuner/configs/internvl/v2/internvl_v2_internlm2_2b_qlora_finetune.py
开始训练
这里使用之前搞好的configs进行训练。咱们要调整一下batch size,并且使用qlora。要不半卡不够用的 QAQ。
(这里文档写的cd XTuner,但是我试了好久都不行)
cd root/InternLM/code_0828/
NPROC_PER_NODE=1 xtuner train /root/InternLM/code_0828/XTuner/xtuner/configs/internvl/v2/internvl_v2_internlm2_2b_qlora_finetune.py --work-dir /root/InternLM/work_dir/internvl_ft_run_8_filter --deepspeed deepspeed_zero1
合并权重&&模型转换
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/
微调后效果对比
LoRA微调
我们如法炮制,把configs的LoRA_finetune给改了
然后开始训练:
cd XTuner NPROC_PER_NODE=1 xtuner train /root/InternLM/code_0828/XTuner/xtuner/configs/internvl/v2/internvl_v2_internlm2_2b_lora_finetune.py --work-dir /root/InternLM/work_dir/internvl_ft_run_8_filter --deepspeed deepspeed_zero1
训练完成后:
试试LoRA的效果,用官方脚本进行权重合并:
python3 xtuner/configs/internvl/v1_5/convert_to_official.py xtuner/configs/internvl/v2/internvl_v2_internlm2_2b_lora_finetune.py /root/InternLM/work_dir/internvl_ft_run_8_filter/iter_3000.pth /root/InternLM/InternVL2-2B/
微调后效果对比
test_lmdeploy.py运行:
(EMMM)
怪怪的