当前位置:   article > 正文

多模态 Llama-3 它来了 !![全网首发微调教程]_llava-llama3

llava-llama3

近日,XTuner 团队基于 meta 发布了最新版多模态大模型 LLaVA-Llama-3-8B,相比 LLaVA-1.5, 在多个评测数据集上取得显著提升。

基于此背景,机智流社区创作了基于 Llama3-8B-Instruct 和 XTuner 团队预训练好的 Image Projector ,微调自己的多模态图文理解模型 LLaVA 的教程,快一起来学习下吧~

  • XTuner:

    https://github.com/InternLM/XTuner (文末点击阅读原文可直达,欢迎 Star)

  • 微调教程:

    https://github.com/SmartFlowAI/Llama3-XTuner-CN/ (欢迎 Star)

https://www.reddit.com/r/LocalLLaMA/comments/1ca8uxo/llavallama38b_is_released/

  1. 写在前面
    ==========

随着 XTuner 团队放出了基于 Llama3-8B 的 LLaVA 模型,我们也是第一时间与 XTuner 团队取得了联系,并获得了他们已经预训练好的 Image Projector。接下来,我们将带大家基于 Llama3-8B-Instruct 和 XTuner 团队预训练好的 Image Projector 微调自己的多模态图文理解模型 LLaVA。



  



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  1. 环境、模型、数据准备

2.1 配置环境


我们先来配置相关环境。使用如下指令便可以安装好一个 python=3.10 pytorch=2.1.2+cu121 的基础环境了。



`conda create -n llama3 python=3.10``conda activate llama3``conda install pytorch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 pytorch-cuda=12.1 -c pytorch -c nvidia`


  • 1
  • 2
  • 3
  • 4
  • 5

接下来我们安装 XTuner。



`cd ~git clone -b v0.1.18 https://github.com/InternLM/XTunercd XTunerpip install -e .`


  • 1
  • 2
  • 3
  • 4
  • 5

2.2 模型准备


2.2.1 准备 Llama3 权重

在微调开始前,我们首先来准备 Llama3-8B-Instruct 模型权重。

  • InternStudio 环境下


`cd ~``ln -s /root/new_models/meta-llama/Meta-Llama-3-8B-Instruct .`


  • 1
  • 2
  • 3
  • 4
  • 5
  • 非 InternStudio 环境下

我们选择从 OpenXLab 上下载 Meta-Llama-3-8B-Instruct 的权重。



`cd ~``git lfs install``git clone https://code.openxlab.org.cn/MrCat/Llama-3-8B-Instruct.git Meta-Llama-3-8B-Instruct`


  • 1
  • 2
  • 3
  • 4
  • 5

2.2.2 准备 Visual Encoder 权重

我们接下来准备 Llava 所需要的 openai/clip-vit-large-patch14-336,权重,即 Visual Encoder 权重。

  • InternStudio 环境下


`cd ~``ln -s /root/new_models/openai/clip-vit-large-patch14-336 .`


  • 1
  • 2
  • 3
  • 4
  • 5
  • 非 InternStudio 环境下

可以访问 https://huggingface.co/openai/clip-vit-large-patch14-336 进行下载。

2.2.3 准备 Image Projector 权重

然后我们准备 Llava 将要用到的 Image Projector 部分权重。

  • InternStudio 环境下


`cd ~``ln -s /root/new_models/xtuner/llama3-llava-iter_2181.pth .`


  • 1
  • 2
  • 3
  • 4
  • 5
  • 非 InternStudio 环境下

由于 HuggingFace 暂时因为某些原因无法访问,所以暂时不提供基于 HuggingFace 的下载教程。

相关权重可以访问:

https://huggingface.co/xtuner/llava-llama-3-8b 以

及 https://huggingface.co/xtuner/llava-llama-3-8b-v1_1 (已经过微调,并非 Pretrain 阶段的 Image Projector)

2.3 数据准备


按照

https://github.com/InternLM/Tutorial/blob/camp2/xtuner/llava/xtuner_llava.md

中的教程来准备微调数据。为了让大家可以快速上手,我们选择了使用过拟合的方式快速实现。

可以执行以下代码:



`cd ~``git clone https://github.com/InternLM/tutorial -b camp2``python ~/tutorial/xtuner/llava/llava_data/repeat.py \`  `-i ~/tutorial/xtuner/llava/llava_data/unique_data.json \`  `-o ~/tutorial/xtuner/llava/llava_data/repeated_data.json \`  `-n 200`


  • 1
  • 2
  • 3
  • 4
  • 5
  1. 微调过程

3.1 训练启动


我们已经为大家准备好了可以一键启动的配置文件,主要是修改好了模型路径、对话模板以及数据路径。我们使用如下指令以启动训练:



`cd ~``git clone https://github.com/SmartFlowAI/Llama3-XTuner-CN``mkdir -p ~/project/llama3-ft``cd ~/project/llama3-ft``xtuner train ~/Llama3-XTuner-CN/configs/llava_llama3_8b_instruct_qlora_clip_vit_large_p14_336_lora_e1_finetune.py --work_dir ~/project/llama3-ft/llava --deepspeed deepspeed_zero2`


  • 1
  • 2
  • 3
  • 4
  • 5

训练过程所需显存约为44447 MiB,在单卡A100上训练所需时间为30分钟。

在训练好之后,我们将原始 image projector 和 我们微调得到的 image projector 都转换为 HuggingFace 格式,为了下面的效果体验做准备。



`xtuner convert pth_to_hf ~/Llama3-XTuner-CN/configs/llava_llama3_8b_instruct_qlora_clip_vit_large_p14_336_lora_e1_finetune.py \`  `~/llama3-llava-iter_2181.pth \`  `~/project/llama3-ft/llava/pretrain_iter_2181_hf``   ``xtuner convert pth_to_hf ~/Llama3-XTuner-CN/configs/llava_llama3_8b_instruct_qlora_clip_vit_large_p14_336_lora_e1_finetune.py \`  `~/project/llama3-ft/llava/iter_1200.pth \`  `~/project/llama3-ft/llava/finetune_iter_1200_hf`


  • 1
  • 2
  • 3
  • 4
  • 5

3.2 效果体验


在转换完成后,我们就可以在命令行简单体验一下微调后模型的效果了。

问题1:Describe this image.

问题2:What is the equipment in the image?

3.2.1 Pretrain 模型



`xtuner chat ~/Meta-Llama-3-8B-Instruct \`  `--visual-encoder ~/clip-vit-large-patch14-336 \`  `--llava ~/project/llama3-ft/llava/pretrain_iter_2181_hf \`  `--prompt-template llama3_chat \`  `--image ~/tutorial/xtuner/llava/llava_data/test_img/oph.jpg`


  • 1
  • 2
  • 3
  • 4
  • 5

输出结果如下:

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

3.2.2 Finetune 后模型



`xtuner chat ~/Meta-Llama-3-8B-Instruct \`  `--visual-encoder ~/clip-vit-large-patch14-336 \`  `--llava ~/project/llama3-ft/llava/finetune_iter_1200_hf \`  `--prompt-template llama3_chat \`  `--image ~/tutorial/xtuner/llava/llava_data/test_img/oph.jpg`


  • 1
  • 2
  • 3
  • 4
  • 5

输出结果如下:

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

如何学习大模型 AGI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

-END-


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/运维做开发/article/detail/938980

推荐阅读
相关标签