参考文档
https://github.com/InternLM/Tutorial/blob/camp3/docs/L2/InternVL/joke_readme.md
InternVL简介
InternVL 是一种用于多模态任务的深度学习模型,旨在处理和理解多种类型的数据输入,如图像和文本。它结合了视觉和语言模型,能够执行复杂的跨模态任务,比如图文匹配、图像描述生成等。通过整合视觉特征和语言信息,InternVL 可以在多模态领域取得更好的表现
InternVL 模型总览
视觉模块就是一个微调过的ViT,语言模块是一个InternLM的模型。对于视觉模块来说,它的特殊之处在Dynamic High Resolution。
Dynamic High Resolution
InternVL独特的预处理模块:动态高分辨率,是为了让ViT模型能够尽可能获取到更细节的图像信息,提高视觉特征的表达能力。对于输入的图片,首先resize成448的倍数,然后按照预定义的尺寸比例从图片上crop对应的区域。
Pixel Shuffle
Pixel Shuffle在超分任务中是一个常见的操作,PyTorch中有官方实现,即nn.PixelShuffle(upscale_factor) 该类的作用就是将一个tensor中的元素值进行重排列,假设tensor维度为[B, C, H, W], PixelShuffle操作不仅可以改变tensor的通道数,也会改变特征图的大小。
准备环境
准备微调数据集
huggingface上的zhongshsh/CLoT-Oogiri-GO数据
原模型推理测试
这张图片中的情景让人不禁联想到一个脑洞大开的梗:
梗名:“鸽子下架”
梗的详细解释:
在超市或商店里,有时候货架上会摆放着许多商品,但有时候,某些商品由于库存问题,会被暂时下架。而这张图片中的鸽子,它显然是故意下架的商品。
为什么会有这种搞笑的梗?
1. **出乎意料的“下架”**:通常,鸽子是宠物,它们不会出现在商店货架旁,更不会下架。这张图片中的“下架”行为显然是出乎意料的,制造了一种幽默效果。
2. **意外性**:下架商品通常是为了腾出空间来放置新的商品,而鸽子这种动物出现在货架旁,显得非常不协调和搞笑。
3. **讽刺意味**:这张图片可能讽刺了某些商店在商品选择上的无奈,或者是在调侃某些商品因为缺货而被暂时下架。
4. **创意和幽默**:通过一只鸽子下架商品,图片制造了一种幽默感,使观者会心一笑,从而产生共鸣和娱乐效果。
这个梗通过出乎意料的“下架”行为,加上意想不到的动物出现,制造了强烈的幽默效果,令人忍俊不禁。
InternVL 微调攻略
将上面红框内的配置文件,修改如下: 主要是模型、数据、Batch_size
训练
NPROC_PER_NODE=1 xtuner train /root/InternLM/code/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
合并权重&&模型转换
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_500.pth /root/InternLM/InternVL2-2B/
模型路径:/root/InternLM/InternVL2-2B
微调后效果对比