使用llama.cpp部署Qwen2-VL-7B-Instruct模型
截止这篇笔记,llama.cpp主分支暂时不支持部署VL模型,需要切到一个分支上编译。部署流程整理自这个帖子。
部署流程如下:
1. 在modelscope上将Qwen2-VL-7B-Instruct下载下来。
2. 下载llama.cpp,需要下载这个分支。
3. 编译llama.cpp,流程和上一篇文章差不多,不过需要将cmake .. 这一步替换为下面命令:
cmake .. -DGGML_CUDA=ON -DCMAKE_CUDA_COMPILER=$(which nvcc) -DTCNN_CUDA_ARCHITECTURES=61
4. 在llama.cpp工程下找到convert_hf_to_gguf.py,执行
python convert_hf_to_gguf.py ./model_path
model_path目录下会生成Qwen2-VL-7B-Instruct-7.6B-F16.gguf文件。
5. 量化该文件:
./llama-quantize ./model_path/Qwen2-VL-7B-Instruct-7.6B-F16.gguf Qwen2-VL-7B-Instruct-7.6B-Q4_K_M.gguf Q4_K
输出为Qwen2-VL-7B-Instruct-7.6B-Q4_K_M.gguf文件。
6. 转换视觉编码器为gguf文件,在llama.cpp工程examples/llava目录下找到qwen2_vl_surgery.py文件,执行下面命令:
python qwen2_vl_surgery.py "./model-dir"
在当前目录会生成qwen2vl-vision.gguf文件。
7. 使用上面生成的两个gguf文件:
CUDA_VISIBLE_DEVICES=0 ./llama-qwen2vl-cli -m Qwen2-VL-7B-Instruct-7.6B-Q4_K_M.gguf --mmproj qwen2vl-vision.gguf -p "Describe the image" --image "PATH/TO/IMAGE"
后面根据提示词和图像,就能得到输出结果了。