MiniGPT4系列之一部署篇:在RTX-3090 Ubuntu服务器部署步骤详解_seaside2003的博客-CSDN博客
MiniGPT4系列之二推理篇命令行方式:在RTX-3090 Ubuntu服务器推理详解_seaside2003的博客-CSDN博客
MiniGPT4系列之三模型推理 (Web UI):在RTX-3090 Ubuntu服务器推理_seaside2003的博客-CSDN博客
主要参考知乎帖子:
MiniGPT-4 本地部署 RTX 3090 - 知乎
MiniGPT-4部署比麻烦,首先需要获取LLaMA权重,并结合Vicuna的bitwise XOR增量文件完成Vicuna模型权重生成,最后准备好预训练的MiniGPT-4进行模型部署。为了便于理解,我画了个流程框图:
系统版本:Ubuntu 20.04
我的硬件设备:Nvidia GeForce RTX-3090,显存24G
1、准备环境
克隆MiniGPT-4库,准备environment.yml中所需的环境。
git clone https://github.com/Vision-CAIR/MiniGPT-4.git
cd MiniGPT-4
conda env create -f environment.yml
conda activate minigpt4
……
2、LLaMA权重获取
首先我们需要从huggingface下载模型权重,pip安装huggingface_hub。
pip install huggingface_hub
由于显卡限制,我选用了参数量最小的模型 llama-7b-hf,huggingface下载链接如下:
LLaMA:
decapoda-research (Decapoda Research)
本文选择:decapoda-research/llama-7b-hf
decapoda-research/llama-7b-hf at main
注意:文件需要全部下载,原文中是用snapshot_download下载的,我直接网页版下载,因为git容易断,还可能出现checkout失败,可以手动下载。
3、Vicuna增量文件
选用模型vicuna-7b-delta-v1.1,huggingface下载链接如下:
lmsys (Large Model Systems Organization)
lmsys/vicuna-7b-delta-v1.1 at main
注:vicuna权重分为v0和v1.1两个版本,MiniGPT-4作者采用的是v0,当使用v0版本时,生成vicuna权重出错(bug:tensor尺度不一致),而换为v1.1版本即可解决。我之前试用过v0这个版本,没有搞成功,不是上述原因,待查,所以建议选用v1.1版本。
4、Vicuna权重生成
克隆FastChat库:
git clone https://github.com/lm-sys/FastChat.git
GitHub - lm-sys/FastChat: An open platform for training, serving, and evaluating large language models. Release repo for Vicuna and FastChat-T5.
在终端输入以下命令:
python3 -m fastchat.model.apply_delta --base-model-path /home/train/mycharm/MiniGPT-4/model/llama-7b-hf/ --target-model-path /home/train/mycharm/new/vicuna --delta /home/train/mycharm/new/lmsys/lmsysvicuna-7b-delta-v1.1 --low-cpu-mem
说明:
base-model-path是llama原始模型权重,7b参数的,target-model-path 是要生成的vicuna权重,delta是vicuna delta权重,低CPU内存需加入--low-cpu-mem,可以把大的权重文件分割成多个小份,并使用磁盘作为临时存储。可以使峰值内存保持在16GB以下。不然无法载入vicuna增量文件,CPU内存占满,程序直接被kill,绿色表示已有的vicuna-7b-delta权重。
这行命令对初学者有些迷惑:简单说就是利用llama的权重,结合vicuna的delta权重,然后生成vicuna权重,根源在于meta发布的llama权重没有正式公开导致,能下载只是网络行为。
运行结果如下:
新生成的vicuna的权重在设定的目录中:
5、MiniGPT-4启动
本文采用的权重为原作者的checkpoints,prerained_minigpt4_7b.pth,并放在生成的vicuna权重路径下,目录一定要放对。
下载链接:
https://link.zhihu.com/?target=https%3A//drive.google.com/file/d/1RY9jV0dyqLX-o38LrumkKRh6Jtaop58R/view
此处要用谷歌,下载其他版本应该也可以,我没试。
下载完成后放到上述刚生成的vicuna目录下:
修改配置文件模型权重存放的目录:
下面这两步很关键,要修改权重文件的目录,要根据自己实际情况修改:
1)、修改MiniGPT-4/minigpt4/configs/models/minigpt4.yaml 文件中llama_model的值为vicuna-7b的路径:比如,我的在/home/train/mycharm/new/vicuna/在这个目录下,原文件在16行。
2)、修改MiniGPT-4/eval_configs/minigpt4_eval.yaml,将ckpt的值改成prerained_minigpt4_7b.pth的路径,原文件在11行。
比如我的在这个目录:/home/train/mycharm/new/vicuna/prerained_minigpt4_7b.pth
6、启动MiniGPT-4 demo
进入到MiniGPT-4目录:
python demo.py --cfg-path eval_configs/minigpt4_eval.yaml --gpu-id 0
执行成功。
7、其他说明
里面有个警告,疑似pytorch(2.0.1)和torchvision(0.13.1)版本不一致导致,不影响此处功能,参照以下帖子:
Failed to load image Python extension: libtorch_cuda_cu.so_牧羊女说的博客-CSDN博客
版本对照关系参照,可以看出torch 2.0对应torchvision版本应为:0.15而我的版本是0.13
GitHub - pytorch/vision: Datasets, Transforms and Models specific to Computer Vision
下面是原作者的运行图,好像也有类似问题:
执行以下安装命令(先卸载老的版本):
在下述网站选择好配置后生成安装命令:
Start Locally | PyTorch
conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia
重新安装再次执行,警告消失,成功。
查看版本与之对应:
Conda版本过低问题:
此处有个小问题,如果conda 版本太低不能执行以上命令,先升级conda,但可能存在执行conda update conda后,conda 版本没有变化,需要执行以下命令升级conda:
conda update -n base -c defaults conda --repodata-fn=repodata.json
I got update warning message but unable to update · Issue #12519 · conda/conda · GitHub