Ollama运行Qwen3.5

2026年初Qwen 3.5推出,作为多模态大模型,能够处理文本和图像,并且采用了最新的MoE(Mixture of Experts)架构优化。

我通过 ModelScope 从阿里的魔搭平台下载模型文件,尝试在Ollama中运行

模型下载和导入

  • 下载模型文件:

下载Qwen3.5模型
# 下载 Qwen3.5-35B-A3B: 注意Qwen3.5是多模态模型,需要下载 .guff 文件配套的 mmproj 文件
# 视觉投影文件,通常文件名包含 mmproj 和 q8_0 或 f16,优先选择f16或q8_0版本,精度更高
modelscope download --model unsloth/Qwen3.5-35B-A3B-GGUF \
   --include "Qwen3.5-35B-A3B-Q4_K_M.gguf mmproj-F16.guff" \
   --local_dir ./Qwen3.5-35B-A3B

需要注意 :

  • Qwen3.5 这种多模态模型在 GGUF 格式下,通常是分体式的:

    • .gguf` 文件:包含 LLM 的语言模型权重

    • mmproj 文件: 即 Multi-Model Projector ,专门负责将图片像素转为LLM能理解的Token

Modelfile 中必须同时导入 .gguf 文件和配套的 mmproj 文件(推荐采用fp16),这样才能让Ollama能够处理图片,否则就会报错 500: Failed to create new sequence: failed to process inputs: this model is missing data required for image input

  • 编辑 Qwen3.5-35B-A3B.Modelfile

用于导入模型的 Modelfile
# 指向你下载的 GGUF 文件路径
FROM ./Qwen3.5-35B-A3B/Qwen3.5-35B-A3B-Q4_K_M.gguf

# 包含视觉投影文件
ADAPTER ./Qwen3.5-35B-A3B/mmproj-F16.gguf

# --- 硬件与资源优化参数 ---

# 强制所有模型层进入 GPU (双 A2 会自动平摊)
PARAMETER num_gpu 99

# 设置上下文窗口:针对 32GB 显存,建议初始设为 16384 (16k)
# 若后续处理长视频或大文档需更多空间,可调至 32768
PARAMETER num_ctx 16384

# 针对 A2 显存带宽优化的推理参数
PARAMETER temperature 0.7
PARAMETER top_p 0.8
PARAMETER repeat_penalty 1.1

# --- 多模态与对话模板 ---

# Qwen3.5 专用的 ChatML 模板
TEMPLATE """{{ if .System }}<|im_start|>system
{{ .System }}<|im_end|>
{{ end }}{{ if .Prompt }}<|im_start|>user
{{ .Prompt }}<|im_end|>
{{ end }}<|im_start|>assistant
{{ .Response }}<|im_end|>"""

# 停止词配置
PARAMETER stop "<|im_start|>"
PARAMETER stop "<|im_end|>"

# --- SRE 专家系统提示词 ---
SYSTEM """你是一个部署在私有云环境(双 Tesla A2)中的全能 AI 助手。
你不仅精通 Linux 服务器运维、Kubernetes 架构和 Rust/Go 开发,
还具备强大的多模态理解能力,能够分析用户提供的图片和视频文件。
在提供代码建议时,优先考虑性能优化和安全性。"""
  • 执行导入:

导入Qwen3.5
# 导入 Qwen 3.5
docker exec -it ollama ollama create qwen3.5-35b-a3b-q4_k_m -f /root/.ollama/guff/Qwen3.5-35B-A3B.Modelfile

异常排查

当通过

Ollama加载 qwen35moe 模型架构失败
llama_model_load: error loading model: error loading model architecture: unknown model architecture: 'qwen35moe' 
llama_model_load_from_file_impl: failed to load model                                                            
time=2026-03-19T11:51:03.469Z level=INFO source=sched.go:471 msg="NewLlamaServer failed" model=/root/.ollama/mode
ls/blobs/sha256-3b46d1066bc91cc2d613e3bc22ce691dd77e6f0d33c9060690d24ce6de494375 error="unable to load model: /ro
ot/.ollama/models/blobs/sha256-3b46d1066bc91cc2d613e3bc22ce691dd77e6f0d33c9060690d24ce6de494375"

从错误日志可以看到 Ollama 不能处理 qwen35moe 模型架构,这是因为我当前使用的Ollama镜像不是最新版本,无法识别 Qwen3.5 最新的 MoE (Mixture of Experts) 架构优化。

参考 qwen35/qwen35moe models downloaded from HuggingFace are unsupported. #14503 可以看到目前Ollama只支持 f32/f16/bf16/q8/q6/q4 tensors,而 llama.cpp 则支持更广泛的tensor量化类型。当在Ollama引擎上运行多模态,目前只支持safetensors导入并量化为包含上述量化类型的 单个GGUF文件 。而llama.cpp引擎运行多模态模型,从safetensors导入并量化为更多数据类型是, 权重会被拆分为两个文件 : 文本文件和视觉文件。此时拆分后的模型只能在 llama.cpp 引擎上运行。

需要等 Revert revert vendor update (Vendor Update to b8353)#14134 合并以后,Ollama才会同时支持融合模型(由Ollama从safetensors量化的模型)和 拆分模型 (由 llama.cpp 从safetensors量化的模型)

当前在 ollama Docker官方镜像 latest 刚推送的版本是 0.18.2 ,是大约16小时前更新的,所以通过以下方法尝试更新到最新版本:

更新最新的ollama镜像
docker stop ollama
docker rm ollama

# 更新最新版本
docker pull ollama/ollama:latest

然后再次以最新镜像再次创建ollama容器(见 在Docker中Ollama使用NVIDIA A2 GPU运行大模型 ):

再次重建运行Ollama
export data_dir=/home/admin/docker

docker run -d --gpus=all \
  --network ai-network \
  -v $data_dir/ollama_data:/root/.ollama \
  -p 11434:11434 \
  --name ollama \
  -e OLLAMA_HOST=0.0.0.0 \
  -e OLLAMA_FLASH_ATTENTION=1 \
  -e OLLAMA_KEEP_ALIVE=24h \
  --restart always \
  ollama/ollama

不过,实践发现这个问题尚未解决。目前还需要等待官方合并补丁以后更新镜像,待解决...