HuggingFace镜像/LLaVA
模型介绍文件和版本分析
下载使用量0

LLaVA

目录

  • [LLaVA]
    • 概述
    • 准备训练环境
    • 模型训练
    • 模型评估
    • 模型推理

概述

模型介绍

LLaVA是一种新颖的端到端训练的大型多模态模型,它结合了视觉编码器和Vicuna,用于通用的视觉和语言理解,实现了令人印象深刻的聊天能力,在科学问答(Science QA)上达到了新的高度。

支持任务列表

本仓已经支持以下模型任务类型

模型任务列表是否支持
LLaVA 1.5 7B训练✔
LLaVA 1.5 7B推理✔
LLaVA 1.5 7B评估✔

代码实现

  • 参考实现:

    url=https://github.com/haotian-liu/LLaVA.git
    commit_id=3e337ad269da3245643a2724a1d694b5839c37f9
  • 适配昇腾AI处理器的实现:

    url=https://modelers.cn/models/PyTorch-NPU/LLaVA

准备训练环境

创建python环境

  • git clone 远程仓

    git clone https://modelers.cn/PyTorch-NPU/LLaVA.git
    cd LLaVA
  • 创建python环境并且安装python三方包

    conda create -n llava python=3.10 -y
    conda activate llava
    pip install --upgrade pip  # enable PEP 660 support
    pip install -e .
    pip install -e ".[train]"
    pip3 install torch==2.1.0+cpu  --index-url https://download.pytorch.org/whl/cpu  #For X86
    pip3 install torch==2.1.0  #For Aarch64
    pip3 install accelerate==0.28.0 decorator==5.1.1 scipy==1.13.0 attrs==23.2.0 openpyxl

    如果不使用wandb需要卸载wandb,否则程序会报错

    pip uninstall wandb
  • 环境准备指导

    请参考《Pytorch框架训练环境准备》。

    表 1 昇腾软件版本支持表

    软件类型支持版本
    FrameworkPTAdapter在研版本
    CANN在研版本
    昇腾NPU固件在研版本
    昇腾NPU驱动在研版本

准备数据集

  • 需要自行下载llava_v1_5_mix665k.json指令微调数据集,以及图片数据集,涉及到的图片数据集如下所示:
    ├── coco
    │   └── train2017
    ├── gqa
    │   └── images
    ├── ocr_vqa
    │   └── images
    ├── textvqa
    │   └── train_images
    └── vg
       ├── VG_100K
       └── VG_100K_2
    需要将这五个数据集放置到同一个文件夹下,数据集来源请参考 https://github.com/haotian-liu/LLaVA/blob/main/README.md 中的数据准备章节。

准备预训练权重

  1. 联网情况下,预训练模型会自动下载。

  2. 无网络时,用户可访问huggingface官网自行下载,文件namespace如下:

    lmsys/vicuna-7b-v1.5
    openai/clip-vit-large-patch14-336
    liuhaotian/llava-v1.5-mlp2x-336px-pretrain-vicuna-7b-v1.5

模型训练

  1. 训练脚本位置位于scripts/v1_5/finetune_npu.sh,需要手动将数据集,权重的路径传入到相应参数上。

     --model_name_or_path lmsys/vicuna-7b-v1.5  # vicuna权重路径
     --data_path ./playground/data/llava_v1_5_mix665k.json # 指令微调数据的路径
     --image_folder ./playground/data # 图片数据集的路径,路径下包含五个数据集
     --vision_tower openai/clip-vit-large-patch14-336 # clip模型路径
     --pretrain_mm_mlp_adapter ./checkpoints/llava-v1.5-7b-pretrain/mm_projector.bin # mlp adapter路径
  2. 运行训练脚本,该模型支持单机8卡训练。

    bash scripts/v1_5/finetune_npu.sh # 8卡精度及性能 bf16

    训练完成后,权重文件保存在参数--output_dir路径下。

性能

芯片卡数samples per secondbatch_sizeAMP_TypeTorch_Version
GPU8p18.6216bf162.1
Atlas A28p20.1316bf162.1

模型评估

  • 评估脚本位于scripts/v1_5/eval下面,这里以textvqa任务为例,测试之前需要准备TextVQA_0.5.1_val.json和train_val_images.zip数据集,解压并传到相关参数上面。执行textvqa.sh脚本即可进行评估。
    --question-file ./playground/data/eval/textvqa/llava_textvqa_val_v051_ocr.jsonl \
    --image-folder ./playground/data/eval/textvqa/train_images \

模型推理

  • 推理任务需要传递训练好的模型以及图片到下面的脚本上。
    python -m llava.serve.cli \
     --model-path liuhaotian/llava-v1.5-7b \
     --image-file "https://llava-vl.github.io/static/images/view.jpg" \

公网地址说明

代码涉及公网地址参考 public_address_statement.md

版本说明

变更

2024.05.09: 首次发布 2024.05.20: 添加NPU适配代码

FAQ

无