llama.cpp 多模态模型加载指南
最近在使用 llama.cpp 处理多模态任务时,遇到了一些环境配置上的小坑。这里整理一下命令行和 Python 接口的加载方式,希望能帮大家少走弯路。
环境注意事项
目前 llama.cpp 的预编译包对 CUDA 12.6 的支持还在完善中,如果遇到编译或运行时问题,建议先回退到稳定版本测试。另外,Python 绑定库(llama-cpp-python)通常也需要本地编译才能开启 GPU 加速,别指望直接 pip install 就能跑满性能。
命令行加载
如果你只是想快速验证模型效果,直接使用官方提供的 llama-mtmd-cli 工具最方便。注意参数顺序和文件路径:
llama-mtmd-cli -m Qwen2.5-VL-3B-Instruct-q8_0.gguf --mmproj Qwen2.5-VL-3B-Instruct-mmproj-f16.gguf -p "Describe this image." --image ./car-1.jpg
这里有个关键点:模型主文件(.gguf)和投影器文件(.mmproj)必须来自同一个发布源。混用不同来源的文件极易导致兼容性问题,建议直接从 ggml 官方的 Multimodal GGUFs 集合里下载配套资源。
Python 接口集成
在项目中集成时,推荐使用 llama-cpp-python。虽然官方文档很全,但核心逻辑其实不复杂。你需要实例化 Llama 类时传入 mmproj_file_path 参数,而不是像纯文本模型那样只传 model_path。
下面是一个基于 Qwen2.5-VL 的初始化示例,实际使用时请根据项目结构调整路径:
from llama_cpp import Llama
# 初始化模型,关键是指定 mmproj 文件
llm = Llama(
model_path="./Qwen2.5-VL-3B-Instruct-q8_0.gguf",
mmproj_file_path="./Qwen2.5-VL-3B-Instruct-mmproj-f16.gguf",
n_ctx=2048,
verbose=False
)
# 生成回答
response = llm.create_chat_completion(
messages=[
{"role": "user", "content": [{"type": "text", "text": "Describe this image."}, {: , : {: }}]}
]
)
(response[][][][])

