Llama 3 图片理解本领微调(XTuner+LLaVA 版)实践笔记

打印 上一主题 下一主题

主题 1880|帖子 1880|积分 5640

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
      基于 Llama3-8B-Instruct 和 XTuner 团队预训练好的 Image Projector 微调自己的多模态图文理解模型 LLaVA。
环境、模型、数据准备

  1. conda create -n llama3 python=3.10
  2. conda activate llama3
  3. conda install pytorch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 pytorch-cuda=12.1 -c pytorch -c nvidia
复制代码
接下来安装 XTuner
  1. cd ~
  2. git clone -b v0.1.18 https://github.com/InternLM/XTuner
  3. cd XTuner
  4. pip install -e .[all]
复制代码
克隆Llama3堆栈
  1. cd ~
  2. git clone https://github.com/SmartFlowAI/Llama3-Tutorial
复制代码
模型准备

准备 Llama3 权重

从 OpenXLab 上下载 Meta-Llama-3-8B-Instruct 的权重
  1. mkdir -p ~/model
  2. cd ~/model
  3. git lfs install
  4. git clone https://code.openxlab.org.cn/MrCat/Llama-3-8B-Instruct.git Meta-Llama-3-8B-Instruct
复制代码
准备 Visual Encoder 权重

我们接下来准备 Llava 所需要的 openai/clip-vit-large-patch14-336,权重,即 Visual Encoder 权重
访问 https://huggingface.co/openai/clip-vit-large-patch14-336 以进行下载
准备 Image Projector 权重

然后我们准备 Llava 将要用到的 Image Projector 部分权重
相关权重可以访问:https://huggingface.co/xtuner/llava-llama-3-8b 以及 https://huggingface.co/xtuner/llava-llama-3-8b-v1_1 。(已颠末微调,并非 Pretrain 阶段的 Image Projector)
数据准备

我们按照 Tutorial/xtuner/llava/xtuner_llava.md at camp2 · InternLM/Tutorial · GitHub 中的教程来准备微调数据。为了让大家可以快速上手,我们选择了使用过拟合的方式快速实现
  1. cd ~
  2. git clone https://github.com/InternLM/tutorial -b camp2
  3. python ~/tutorial/xtuner/llava/llava_data/repeat.py \
  4.   -i ~/tutorial/xtuner/llava/llava_data/unique_data.json \
  5.   -o ~/tutorial/xtuner/llava/llava_data/repeated_data.json \
  6.   -n 200
复制代码
微调过程

训练启动

  1. xtuner train ~/Llama3-Tutorial/configs/llama3-llava/llava_llama3_8b_instruct_qlora_clip_vit_large_p14_336_lora_e1_finetune.py --work-dir ~/llama3_llava_pth --deepspeed deepspeed_zero2
复制代码
训练过程所需显存约为44447 MiB,在单卡 A100 上训练所需时间为30分钟
在训练好之后,我们将原始 image projector 和 我们微调得到的 image projector 都转换为 HuggingFace 格式,为了下面的结果体验做准备
  1. xtuner convert pth_to_hf ~/Llama3-Tutorial/configs/llama3-llava/llava_llama3_8b_instruct_qlora_clip_vit_large_p14_336_lora_e1_finetune.py \
  2.   ~/model/llama3-llava-iter_2181.pth \
  3.   ~/llama3_llava_pth/pretrain_iter_2181_hf
  4. xtuner convert pth_to_hf ~/Llama3-Tutorial/configs/llama3-llava/llava_llama3_8b_instruct_qlora_clip_vit_large_p14_336_lora_e1_finetune.py \
  5.   ~/llama3_llava_pth/iter_1200.pth \
  6.   ~/llama3_llava_pth/iter_1200_hf
复制代码
结果体验

Pretrain 模型

  1. export MKL_SERVICE_FORCE_INTEL=1
  2. xtuner chat /root/model/Meta-Llama-3-8B-Instruct \
  3.   --visual-encoder /root/model/clip-vit-large-patch14-336 \
  4.   --llava /root/llama3_llava_pth/pretrain_iter_2181_hf \
  5.   --prompt-template llama3_chat \
  6.   --image /root/tutorial/xtuner/llava/llava_data/test_img/oph.jpg
复制代码

此时可以看到,Pretrain 模型只会为图片打标签,并不能回答问题
Finetune 后 模型

  1. export MKL_SERVICE_FORCE_INTEL=1
  2. xtuner chat /root/model/Meta-Llama-3-8B-Instruct \
  3.   --visual-encoder /root/model/clip-vit-large-patch14-336 \
  4.   --llava /root/llama3_llava_pth/iter_1200_hf \
  5.   --prompt-template llama3_chat \
  6.   --image /root/tutorial/xtuner/llava/llava_data/test_img/oph.jpg
复制代码

颠末 Finetune 后,我们可以发现,模型已经可以根据图片回答我们的问题了

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

兜兜零元

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表