你需要下载3个权重,以获取最终 MiniGPT4的权重,分别是:
- Pretrained MiniGPT-4
- Vicuna Weight
- Blip2 Weight
根据你准备的Vicuna模型版本,下载预训练的MiniGPT4 权重。
Checkpoint Aligned with Vicuna 7B | Checkpoint Aligned with Vicuna 13B |
---|---|
Download | Download |
MiniGPT4中使用的ViT和Qformer Weight来自blip2-flan-t5-xxl,这个weight在PaddleNLP中进行了转换。 所以你可以从 PaddleNLP 下载它,你有两种下载方式进行下载:
直接通过paddlenlp的模型加载方法进行下载,下载后一般会存入 PPNLP_HOME
指定的目录。
import os
os.environ["CUDA_VISIBLE_DEVICES"]="0"
import paddle
from paddlenlp.transformers import Blip2Model, Blip2VisionModel, Blip2VisionConfig, Blip2QFormerConfig, Blip2QFormerModel
Blip2Model.from_pretrained("Salesforce/blip2-flan-t5-xxl")
可以直接进行点击下载:
blip2-flan-t5-xxl 权重 | 点击下载 |
---|---|
model_state.pdparams | Download |
这里需要下载两个权重:Vicuna delta Weight和huggingface-formatted Llama Weight。 然后你应该结合这两个重量来获得可以使用的Vicuna 权重。
这里展示两种Vicuna delta 权重,请根据需要选择一种并点击下载。
vicuna-7b-delta-v0 | vicuna-13b-delta-v0 |
---|---|
Download | Download |
llama-7b | llama-13b |
---|---|
Download | Download |
- 为组合如上两个权重,请安装以下工具:
pip install git+https://github.com/lm-sys/[email protected]
- 运行以下命令,获取最终可用的vicuna 权重
python -m fastchat.model.apply_delta --base /path/to/llama-13bOR7b-hf/ --target /path/to/save/working/vicuna-13b/weight/ --delta /path/to/vicuna-13bOR7b-delta-v0/
Pytorch版的权重文件可能是由多个子权重文件组合而成,为使用PaddleNLP进行加载并自动转换为Paddle版,需要将其合并为一个文件:
在开始之前,请确保已经下载了 MiniGPT4 库:
git clone https://github.com/Vision-CAIR/MiniGPT-4.git
进入到MiniGPT4文件夹,执行以下代码,获取完整的 vicuna 权重文件:
import argparse
import os
os.environ["CUDA_VISIBLE_DEVICES"]="0"
os.environ["FLAGS_use_cuda_managed_memory"]="true"
import torch
from minigpt4.models.modeling_llama import LlamaForCausalLM
llama_model = LlamaForCausalLM.from_pretrained("/path/to/save/working/vicuna-13b/")
torch.save(llama_model.state_dict(), "/path/to/save/working/vicuna-13b/pytorch_model.bin")
这里提供了一个合并以上权重的脚本,你可以通过设置相关权重路径 以获取最终的 MiniGPT4 权重。
python merge_weight.py \
--blip2_path "your dir name of blip2" \
--vicuna_path "your dir name of vicuna" \
--minigpt4_path "your ckpt path of minigpt4" \
--save_path "your dir name saving the final minigpt4"
参数说明:
blip2_path
: 存放 blip2 权重的目录名vicuna_path
: 存放 vicuna_path 权重的目录名minigpt4_path
: 存放 blip2 权重的文件地址,比如./prerained_minigpt4_7b.pthsave_path
: 保存 Paddle 版 MiniGPT3 权重的目录名