llama.cpp载入Qwen3 30B VL模型(linux MI50下)

最近更新了下llama.cpp的版本,使用了b7710,也尝试在rocm7.1.1下编译,编译也能通过(参考之前的文章)

但是之前启动VL模型时一直没有图片选项,发现是没有加载多模态部分guff,同时尝试时也遇到一些坑。

这边一直在linux下使用LM studio,除了模型尝鲜测试外(比ollama适配更积极),还有一个用途是将其作为一个模型下载器,方便guff模型下载。

加载LM 下载VL模型命令如下:

./llama-server -m ~/.lmstudio/models/lmstudio-community/Qwen3-VL-30B-A3B-Instruct-GGUF/Qwen3-VL-30B-A3B-Instruct-Q4_K_M.gguf  --mmproj ~/.lmstudio/models/lmstudio-community/Qwen3-VL-30B-A3B-Instruct-GGUF/mmproj-Qwen3-VL-30B-A3B-Instruct-F16.gguf --no-mmproj-offload --n-gpu-layers 9999 --main-gpu 0 --split-mode none --host 0.0.0.0 --port 8080

 

其中:

--mmproj  标识加载多模态部分

 --no-mmproj-offload 标识不要加载到gpu中,默认用CPU+RAM计算。

 

--no-mmproj-offload参数在我的环境下必须加入,因为如果多模态部分加载到gpu,在使用使用图像进行对话时,llama.cpp会直接报错,预计是和显卡的解码有关(ollama不会有问题)。

 

测试比较惊讶的是llama.cpp运行该模型输出速度来到了80t/s,这个速度非常惊人了。

 

另外这边也想到目前MI50 32G尴尬的一个点,想在ollama下使用Qwen3 30B VL Q8模型(刚刚超出32G一点点),但是会爆显存,如果ollama后续支持这个参数,能很好的避免爆显存问题。

 

附上GEMINI的解答:

-------------------------------------------------

--no-mmproj-offload是什么意思?
--no-mmproj-offload
 这个命令行参数的意思是禁止将多模态投影器(Multimodal Projector,mmproj)模型的权重或计算任务从主内存(RAM)卸载(Offload)到显存(VRAM)中
 
详细解释
  • 多模态投影器 (mmproj):在像 Qwen-VL 这样的视觉语言模型 (VLM) 中,图像数据需要通过一个单独的小型神经网络(即投影器)进行预处理,将其转换成模型能够理解的向量表示。
  • Offload (卸载):在 llama.cpp 中,“卸载”通常是指将模型层从 CPU 内存移动到 GPU 显存以加速计算。
  • --no-mmproj-offload 的作用:使用这个标志后,视觉投影器相关的计算将强制在 CPU/RAM 上运行,而不会占用宝贵的 GPU 显存。 
使用场景
当你遇到以下情况时,此参数非常有用:
  • VRAM 不足:如果你的 GPU 显存非常紧张,不足以同时容纳主语言模型的大部分层和视觉投影器,使用此选项可以释放大约几 GB 的 VRAM。
  • 优化主模型性能:将 mmproj 留在 RAM 中,可以将更多的 VRAM 留给主语言模型的文本生成部分,从而可能提高文本推理速度,尽管图像处理速度会略慢(通常从几百毫秒增加到几秒钟)。 
简单来说,它是为了权衡显存占用和图像处理速度而设计的配置选项。
 
 -----------------------------------------------
这个可以用到ollama中吗?
 
 不可以
--no-mmproj-offload 这个特定的命令行参数不能直接在 Ollama 的 ollama run 命令中使用。 
Ollama 采用了一种不同的、更自动化的显存管理策略,它没有提供一个与 llama.cpp 中完全相同的 CLI 参数来手动控制视觉模块(mmproj)是否卸载到 CPU。 
 
Ollama 的显存管理机制:
  • 自动判断:Ollama 会自动检测可用的 GPU 显存,并尝试将尽可能多的模型层(包括视觉模块)加载到 GPU 上。它旨在默认提供最佳性能。
  • 环境变体:Ollama 的大部分高级配置是通过环境变量(Environment Variables)实现的,而不是命令行参数。 
 
如何实现类似效果?
虽然没有直接的等效参数,但如果您遇到显存不足的问题,可以尝试通过设置环境变量来影响 Ollama 的行为:
  1. 限制总 GPU 使用:使用 OLLAMA_MAX_VRAM 环境变量可以限制 Ollama 认为可用的总显存量,从而迫使它将更多层保留在 CPU/RAM 中。
  2. 强制 CPU 运行 (不推荐):最激进的方法是完全禁用 GPU 硬件加速(例如对于 Vulkan 后端可以设置 GGML_VK_VISIBLE_DEVICES=-1),但这会将整个模型(包括核心语言模型)都移到 CPU 上,速度会慢得多。 
截至目前,社区已向 Ollama 团队提交了添加类似 llama.cpp 中 --no-mmproj-offload 功能的请求。您可以关注 Ollama 的 GitHub 仓库以获取最新功能更新。 
您目前的目的是解决 Qwen3-VL-MoE 加载失败的问题,还是想优化显存使用

 

posted @ 2026-01-15 12:07  猿妙不可言  阅读(28)  评论(0)    收藏  举报