最近的研究工作需要基于LLAVA的部署,由于hugging face联网等等的原因,遇到了一些问题。因此写这篇博客记录分享完整的部署步骤。本文将面向服务器无法连接hugging face的用户,保姆级地描述完整的部署流程。
github网址:https://github.com/haotian-liu/LLaVA?tab=readme-ov-file
Step1:环境配置
1、克隆仓库
git clone git@github.com:haotian-liu/LLaVA.git
cd LLaVA
2、安装package
conda create -n llava python=3.10 -y
conda activate llava
pip install --upgrade pip # enable PEP 660 support
pip install -e .
3、安装训练所需的package(若无需进一步训练,只是部署,则可暂时跳过本步骤)
pip install -e ".[train]"
pip install flash-attn --no-build-isolation
4、升级到最新的代码库
git pull
pip install -e .
Step2:LLAVA模型下载
由于服务器联网问题,无法直接使用git clone https://huggingface.co/liuhaotian/llava-v1.5-7b下载对应的模型。因此这里先在本地下载好模型,再上传到服务器。模型下载网址:
- 7B:https://huggingface.co/liuhaotian/llava-v1.5-7b/tree/main
- 13B:https://huggingface.co/liuhaotian/llava-v1.5-13b
我主要配置的是7B的模型,后面会基于7B模型的部署进行描述,13B类似。其他的模型作者在这个链接中描述:https://github.com/haotian-liu/LLaVA/blob/main/docs/MODEL_ZOO.md 。
下载完模型后,把模型上传到服务器当中。在创建一个文件夹保存权重,命名为llava-v1.5-7b(如果是13B就是llava-v1.5-13b,注意这里的命名不要错了,后面有代码会解析这个名字)
Step3:vit模型下载
如果服务器可以正常连接hugging face,那么直接跳过本步骤即可。但如果脚本报了与openai/clip-vit-large-patch14-336相关的错误,就是连接hugging face的问题,导致代码无法自动下载vit模型,则需要按照下面的步骤执行:
1、在电脑主机下载下面链接的文件:
- https://huggingface.co/openai/clip-vit-large-patch14-336
2、在服务器中创建一个名为clip-vit-large-patch14-336的文件夹,并把刚刚下载好的文件上传到这个文件夹下。
3、修改在Step2中llava-v1.5-7b/config.json文件,把"mm_vision_tower"修改为刚刚上传的clip-vit-large-patch14-336文件夹路径。
Step4:启动demo
在做完上述准备工作,我们就可以来测试部署的LLaVA了。总共有两种测试方法:
- CLI推理
- 网页端测试
1、CLI推理
运行下面的命令:
python -m llava.serve.cli --model-path {模型权重路径} --image-file "https://llava-vl.github.io/static/images/view.jpg" --load-4bit
注意,这个–model-path要换成你在Step2中权重文件夹的路径,–image-file后面可以换成你自己想要交流的图片,–load-4bit,是使用量化位(4 位)启动模型工作线程,减少GPU内存占用的情况下运行推理。
运行效果如下(我在下面的截图中加上了CUDA_VISIBLE_DEVICES=1是因为服务器不够用了,可以忽略):
2、网页端测试
1.在第一个终端中启动控制器:
python3 -m llava.serve.controller --host 0.0.0.0 --port 20000
2.在第二个终端启动 gradio Web 服务器:
python3 -m llava.serve.gradio_web_server --controller http://localhost:20000 --model-list-mode reload --share
注意上面标红的URL,最后是在这里测试LLaVA的网页的。(注意:如果是在服务器中运行,主机上打开网页,应当用服务器网址替换0:0:0:0
,即在主机浏览器中网页输入的网址应该是:服务器ip:端口号
,端口号在图中为7861)
3.在第三个终端启动model worker
python3 -m llava.serve.model_worker --host 0.0.0.0 --controller http://localhost:20000 --port 40000 --worker http://localhost:40000 --model-path {模型权重路径} --load-4bit
最后打开前面说的测试LLaVA的网页
就能开启相关服务了。
至此,LLaVA模型部署完毕。
最后,最重要的,如果需要用到LLaVA模型,需要引用作者的文章:
@misc{liu2023improvedllava,
title={Improved Baselines with Visual Instruction Tuning},
author={Liu, Haotian and Li, Chunyuan and Li, Yuheng and Lee, Yong Jae},
publisher={arXiv:2310.03744},
year={2023},
}
@misc{liu2023llava,
title={Visual Instruction Tuning},
author={Liu, Haotian and Li, Chunyuan and Wu, Qingyang and Lee, Yong Jae},
publisher={arXiv:2304.08485},
year={2023},
}