Qwen3.6-27B-MTP-GGUF:基于 llama.cpp 的多模态大模型部署项目

可在本地快速部署具备视觉、思考及工具使用能力的大模型,支持 OpenAI 和 Anthropic 双 API,实现 2.5 倍生成速度与 262K 上下文,适配多种硬件配置,优化 KV 缓存降低内存占用。【此简介由AI生成】

分支1Tags0

language:

  • en
  • zh
  • multilingual license: apache-2.0 library_name: llama.cpp tags:
  • gguf
  • qwen3.6
  • qwen3_5
  • conversational
  • vision
  • multimodal
  • speculative-decoding
  • mtp base_model:
  • Qwen/Qwen3.6-27B pipeline_tag: image-text-to-text quantization:
  • F16
  • Q8_0
  • Q6_K
  • Q5_K_M
  • Q4_K_M
  • IQ4_XS
  • IQ3_M
  • IQ2_M

Qwen3.6-27B with MTP

借助 MTP 提速 2.5 倍 · 48 GB 显存支持 262K 上下文 · 修复聊天模板

具备视觉、思维与工具调用能力的 270 亿参数密集型模型——支持自推测解码,
可配置 KV 缓存(f16 精度优先,q8_0/q4_0 适合更长上下文),修复 Jinja 模板(工具调用与思维链在 C++ 运行时可正常工作),
并提供兼容 OpenAI 和 Anthropic API 的服务端。

一行命令。双 API 支持。无需云端。


警告: 当视觉功能(图像输入)与 MTP 推测解码一同使用时,会导致 llama.cpp 崩溃(PR #22673 缺陷,全平台)。纯文本 MTP 可实现 2.5 倍速度提升。如需使用视觉功能,请启动服务端时不带 --spec-type mtp 参数——详见视觉功能章节。


启动服务端

您需要基于 PR #22673 或更新版本构建的 llama.cpp。Homebrew 及稳定版均支持 MTP GGUF 格式。

构建支持 MTP 的 llama.cpp
git clone --depth 1 https://github.com/ggml-org/llama.cpp.git
cd llama.cpp
git fetch origin pull/22673/head:mtp-pr && git checkout mtp-pr

cmake -B build -DGGML_METAL=ON -DCMAKE_BUILD_TYPE=Release
cmake --build build --target llama-cli llama-server
llama-server -m Qwen3.6-27B-Q5_K_M-mtp.gguf \
  --spec-type mtp --spec-draft-n-max 3 \
  --cache-type-k q8_0 --cache-type-v q8_0 \
  -np 1 -c 262144 --temp 0.7 --top-k 20 -ngl 99 --port 8081

就是这样。一条命令实现三项优化:

标志 功能说明 效果
--spec-type mtp --spec-draft-n-max 3 多令牌预测(模型内置) 生成速度提升 2.5 倍
--cache-type-k q8_0 --cache-type-v q8_0 8 位 KV 缓存(替代 16 位) KV 内存减半,质量损失可忽略不计
-c 262144 262K 上下文窗口 在配备 q8_0 KV 的 48 GB Mac 上实现完整原生上下文

根据您的硬件调整 -m-c--cache-type-k/v 参数 — 详见下方的我应该下载哪个量化版本?表格。


我应该下载哪个量化版本?

在下方找到您的硬件 — 每行提供了最适合的量化版本、KV 缓存类型以及可容纳的最大上下文长度。

Apple Silicon

Qwen3.6-27B 是一个混合模型 — 只有65 层中的 16 层使用 KV 缓存(已验证)。其余 48 层为线性注意力(固定 898 MiB 循环状态)。KV 内存比标准密集型模型少约 4 倍。不支持此特性的运行时(如 vllm)会为所有 65 层分配 KV,导致内存占用显著增加。

以下数值为总内存使用量(模型 + KV 缓存 + 0.9 GB 循环状态)。必须为 macOS 预留 ≥ 8 GB(16 GB Mac 除外)。

内存 量化版本 KV 缓存 最大上下文 总使用量 视觉功能
16 GB IQ2_M q8_0 42K 12.0 GB
24 GB IQ3_M 46K 16.0 GB
24 GB IQ3_M q8_0 91K 16.0 GB
32 GB Q5_K_M 74K 24.0 GB
32 GB Q5_K_M q8_0 147K 24.0 GB
32 GB Q4_K_M 99K 24.0 GB
48 GB Q6_K 262K 39.7 GB
48 GB Q8_0 173K 40.0 GB
48 GB Q8_0 q8_0 262K 37.3 GB
64 GB Q8_0 262K 45.8 GB
96 GB Q8_0 262K 45.8 GB

NVIDIA GPU

模型内存与 Apple Silicon 相同,另加约 1 GB CUDA 开销。

显存 量化版本 KV 缓存 最大上下文 总显存使用量 视觉功能
12 GB IQ2_M q8_0 11K 12.0 GB
16 GB IQ3_M 30K 16.0 GB
16 GB IQ3_M q8_0 60K 16.0 GB
24 GB Q4_K_M 83K 24.0 GB
24 GB Q4_K_M q8_0 167K 24.0 GB
24 GB Q5_K_M 58K 24.0 GB
48 GB Q6_K 262K 40.7 GB
48 GB Q8_0 262K 46.8 GB
80 GB Q8_0 262K 46.8 GB

16 GB Mac: IQ2_M/q8_0 — 42K 纯文本。无视觉功能。

24 GB Mac: IQ3_M — 46K(f16 KV)或 91K(q8_0)。在 32–65K 上下文时支持视觉功能。

32 GB Mac: Q5_K_M — 74K 纯文本(f16 KV),147K(q8_0)。Q4_K_M 支持 99K 上下文的视觉功能。

48 GB Mac: Q6_K/f16 KV — 262K 上下文并支持视觉功能。Q8_0/q8_0 KV 可在更高模型质量下实现 262K 上下文。

64 GB+ Mac: Q8_0/f16 KV — 262K 上下文并支持视觉功能。在实际速度下实现最高质量。

12 GB GPU: IQ2_M/q8_0 — 11K。非常有限,无视觉功能。

16 GB GPU: IQ3_M — 30K(f16 KV)或 60K(q8_0)。无视觉功能。

24 GB GPU: Q4_K_M — 83K 上下文并支持视觉功能(f16 KV)。Q5_K_M — 58K 纯文本(f16 KV),116K(q8_0)。

48 GB+ GPU: Q6_K/f16 KV — 262K 上下文并支持视觉功能。Q8_0 可获得最高质量。

为获得最佳质量,请将 KV 缓存保留为 f16(表格中对应列为空)。仅当 f16 无法提供足够上下文时才使用 q8_0 KV。q4_0 KV 的上下文不应超过 64K。

视觉功能会为 mmproj 额外增加约 0.9 GB 内存。macOS 需要**≥ 8 GB** 内存供自身使用(16 GB Mac 除外 — 约使用 4 GB)。您可以通过提高有线内存限制来增加可用内存,例如对于 96 GB Mac:sudo sysctl iogpu.wired_limit_mb=90112(88 GB)。NVIDIA 会为 CUDA 预留约 1 GB 内存。


API 使用方法

兼容 OpenAI(/v1/chat/completions

curl http://localhost:8081/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"model":"qwen","messages":[{"role":"user","content":"Hello"}]}'

可与任何 OpenAI 客户端配合使用 — 只需将其指向 http://localhost:8081/v1 即可。

兼容 Anthropic(/v1/messages

curl http://localhost:8081/v1/messages \
  -H "Content-Type: application/json" \
  -d '{"model":"qwen","max_tokens":1024,"messages":[{"role":"user","content":"Hello"}]}'

可与任何 Anthropic 客户端配合使用——服务器原生支持 Messages API,包括流式传输、工具调用和视觉功能。

Claude 代码

ANTHROPIC_BASE_URL=http://127.0.0.1:8081 claude

Claude Code 使用 Anthropic Messages API。只需设置这个环境变量,它就会与您本地的 Qwen3.6-27B 对话,而非云端。

工具使用(两个 API 均适用)

curl http://localhost:8081/v1/messages \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen",
    "max_tokens": 1024,
    "tools": [{
      "name": "get_weather",
      "description": "Get current weather for a location",
      "input_schema": {
        "type": "object",
        "properties": {"location": {"type": "string"}},
        "required": ["location"]
      }
    }],
    "messages": [{"role": "user", "content": "What is the weather in Paris?"}]
  }'

愿景

MTP + 视觉功能在 PR #22673 上崩溃(所有平台,已确认的 bug)。对于图像输入,请不要使用 --spec-type mtp 启动服务器:

llama-server -m Qwen3.6-27B-Q5_K_M-mtp.gguf \
  --mmproj mmproj-Qwen3.6-27B-f16.gguf \
  --cache-type-k q8_0 --cache-type-v q8_0 \
  -c 262144 --temp 0.7 --top-k 20 -ngl 99 --port 8081
curl http://localhost:8081/v1/messages \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen",
    "max_tokens": 1024,
    "messages": [{"role": "user", "content": [
      {"type": "image", "source": {"type": "base64", "media_type": "image/jpeg", "data": "'$(base64 < photo.jpg)'"}},
      {"type": "text", "text": "Describe this image"}
    ]}]
  }'

直接命令行界面使用

# Text generation
llama-cli -m Qwen3.6-27B-Q5_K_M-mtp.gguf \
  --spec-type mtp --spec-draft-n-max 3 \
  --cache-type-k q8_0 --cache-type-v q8_0 \
  -np 1 -c 4096 -n 2048 --temp 0.7 -ngl 99 \
  -p "Your prompt here"

# Vision (MTP does not work with images — omit --spec-type mtp)
llama-cli -m Qwen3.6-27B-Q5_K_M-mtp.gguf \
  --mmproj mmproj-Qwen3.6-27B-f16.gguf \
  --cache-type-k q8_0 --cache-type-v q8_0 \
  -c 4096 -n 2048 --temp 0.7 -ngl 99 \
  --image photo.jpg \
  -p "Describe this image"

KV 缓存选项

--cache-type-k--cache-type-v 标志用于控制 KV 缓存精度。精度越低,占用内存越少,相同硬件可支持的上下文越长。

类型 每值位数 KV 大小(80K 上下文) 质量 速度 使用场景
f16 16 5.3 GB 完整 基准 最佳质量——在内存允许时使用
q8_0 8 2.8 GB 损失可忽略 比 f16 更快 当 f16 KV 无法提供足够上下文时
q4_0 4 1.5 GB 轻微损失 略慢 内存有限时最大化上下文(仅支持 ≤64K)

建议:保持 KV 为 f16 以获得最佳质量。当 f16 无法提供足够上下文时,使用 q8_0。仅在内存紧张时保留 q4_0 使用,且上下文最多为 64K。

对硬件要求的影响(Q5_K_M,80K 上下文):

KV 类型 模型 + 循环 + KV 硬件
f16 24 GB 48 GB Mac
q8_0 22 GB 32 GB Mac

推测解码模式

MTP(推荐 — 快 2.5 倍)

该模型通过自身的 MTP 头在每步预测额外 5 个 token,然后通过一次验证完成。无需额外模型。

--spec-type mtp --spec-draft-n-max 3 -np 1

MTP 当前需要使用 -np 1(单序列模式)。如果不使用该参数,你将收到以下提示:MTP currently supports only n_parallel=1

调整 --spec-draft-n-max3 是通用场景下的最佳值(接受率为 83%)。1–2 的值更为保守;4–5 的值会在被拒绝的 token 上浪费计算资源。

草稿模型(速度提升约 2.3 倍)

搭配使用更小的、共享相同分词器的 Qwen 3.5/3.6 模型。

llama-cli -m Qwen3.6-27B-Q5_K_M-mtp.gguf \
  -md Qwen3.5-0.8B-Q8_0.gguf \
  --spec-draft-n-max 10 -ngl 99 -ngld 99 \
  -c 4096 -n 2048 --temp 0.7 \
  -p "Your prompt"

ngram-mod(无需额外模型,有利于重复提示)

使用来自先前提示的缓存 n-gram。

--spec-type ngram-mod \
--spec-ngram-mod-n-match 24 \
--spec-ngram-mod-n-min 48 \
--spec-ngram-mod-n-max 64 \
--repeat-penalty 1.0

下载

文件 大小 最低配置(4K 上下文) 推荐配置(80K 上下文) 最高配置(262K 上下文)
Qwen3.6-27B-F16-mtp.gguf 51 GB 64 GB Mac · 80 GB GPU 64 GB Mac · 80 GB GPU 96 GB Mac · 80 GB GPU
Qwen3.6-27B-Q8_0-mtp.gguf 27 GB 48 GB Mac · 48 GB GPU 48 GB Mac · 48 GB GPU 48 GB Mac · 48 GB GPU
Qwen3.6-27B-Q6_K-mtp.gguf 21 GB 32 GB Mac · 24 GB GPU 48 GB Mac · 48 GB GPU 48 GB Mac · 48 GB GPU
Qwen3.6-27B-Q5_K_M-mtp.gguf 18 GB 32 GB Mac · 24 GB GPU 32 GB Mac · 24 GB GPU 48 GB Mac · 48 GB GPU
Qwen3.6-27B-Q4_K_M-mtp.gguf 16 GB 32 GB Mac · 24 GB GPU 32 GB Mac · 24 GB GPU 48 GB Mac · 48 GB GPU
Qwen3.6-27B-IQ4_XS-mtp.gguf 14 GB 24 GB Mac · 24 GB GPU 32 GB Mac · 24 GB GPU 32 GB Mac · 48 GB GPU
Qwen3.6-27B-IQ3_M-mtp.gguf 12 GB 24 GB Mac · 16 GB GPU 24 GB Mac · 24 GB GPU 32 GB Mac · 24 GB GPU
Qwen3.6-27B-IQ2_M-mtp.gguf 10 GB 16 GB Mac · 16 GB GPU 24 GB Mac · 16 GB GPU 32 GB Mac · 24 GB GPU
mmproj-Qwen3.6-27B-f16.gguf 885 MB 视觉编码器(可选,任何层级)

所有层级均包含 MTP 头。F16 和 Q8_0 为直接转换版本;其他所有层级均基于 Q8_0 并使用重要性矩阵进行量化。Q5_K_M 是性价比之选——若内存紧张,可使用 Q4_K_M;若追求最高质量,可选择 Q8_0。F16 版本可供实验使用,但速度明显慢于 Q8_0。GPU 指 NVIDIA 显卡(RTX 3060 = 12 GB,RTX 3090/4090 = 24 GB,A6000 = 48 GB,A100 = 80 GB)。

硬件数据假设“最低配置”(4K)使用 f16 KV 缓存,“推荐配置”(80K)和“最高配置”(262K)使用 q8_0 KV 缓存。若要在较低配置硬件上达到推荐或最大上下文,可添加参数 --cache-type-k q8_0 --cache-type-v q8_0


内存要求

基于 Apple Silicon(统一内存)的近似显存需求,以 Q5_K_M 为参考。包含 0.9 GB 循环状态(固定大小,不随上下文长度变化)。65 层中仅 16 层使用 KV 缓存,其余 48 层使用线性注意力。

上下文 模型 KV(f16) KV(q8_0) 总计(f16) 总计(q8_0) 最低 Mac 配置
4K 18 GB 0.3 GB 0.1 GB 19 GB 19 GB 32 GB
8K 18 GB 0.5 GB 0.3 GB 19 GB 19 GB 32 GB
32K 18 GB 2.1 GB 1.0 GB 20 GB 20 GB 32 GB
64K 18 GB 4.1 GB 2.1 GB 21 GB 21 GB 32 GB
80K(推荐) 18 GB 5.2 GB 2.6 GB 22 GB 22 GB 32 GB
128K 18 GB 8.3 GB 4.1 GB 25 GB 23 GB 32 GB
262K(原生最大) 18 GB 17.0 GB 8.5 GB 34 GB 27 GB 48 GB

“总计”= 模型 + 循环状态 + KV 缓存。macOS 需至少 8 GB(16 GB Mac 除外)。若启用视觉功能:需额外添加 0.9 GB 用于 mmproj。

所有量化层级的内存需求(4K 上下文,q8_0 KV)
量化版本 模型 KV + 循环状态 总计 最低 Mac 配置
Q8_0 27 GB 1.0 GB 28 GB 48 GB
Q6_K 21 GB 1.0 GB 22 GB 32 GB
Q5_K_M 18 GB 1.0 GB 19 GB 32 GB
Q4_K_M 16 GB 1.0 GB 17 GB 32 GB
IQ4_XS 14 GB 1.0 GB 15 GB 24 GB
IQ3_M 12 GB 1.0 GB 13 GB 24 GB
IQ2_M 10 GB 1.0 GB 11 GB 16 GB

系统提示词

第一行必须是:

You are Qwen, created by Alibaba Cloud. You are a helpful assistant.

没有它,模型的表现会不佳。在该行之后附加任何内容。


思考切换

在任何消息中加入 <|think_on|><|think_off|> 即可切换思考模式。模板会剥离该标签,因此模型永远不会看到它。

System: You are a coding assistant. <|think_off|>
User: What's 2+2?

快速回答,无需内部推理。

System: You are a coding assistant. <|think_on|>
User: Implement a red-black tree in Rust.

模型会逐步思考,然后给出答案。


采样

来自Qwen官方作者。为思考模式预留128K+上下文。

模式 temp top_p top_k repeat_penalty
思考(编码) 0.6 0.95 20 1.0
思考(通用) 1.0 0.95 20 1.0
非思考(通用) 0.7 0.8 20 1.0

兼容性

运行时 状态 原因
llama.cpp(PR #22673+) 完全可用 这是目标运行时
llama.cpp(稳定版/ homebrew) 无法加载 missing tensor — MTP头未被识别
LM Studio 无法加载 相同问题 — 捆绑的llama.cpp拒绝MTP GGUF文件
Ollama 无法加载 暂不支持推测解码
koboldcpp 未知 取决于捆绑的llama.cpp版本

LM Studio用户: 请改用 MLX 8-bitMLX 4-bit — 完整的视觉+工具+思考能力,无MTP。


聊天模板修复

捆绑的Jinja模板修复了官方Qwen 3.6模板中的几个bug:

  • C++引擎上工具调用崩溃。 官方模板使用Python的|items过滤器和|safe,这些在C++ Jinja运行时(llama.cpp、LM Studio)中不存在。此模板使用直接字典键查找。
  • developer角色崩溃。 现代API发送message.role == "developer"。官方模板会抛出异常。此模板将其映射为system
  • preserve_thinking垃圾信息。 官方模板在每个过往对话轮次都包裹空的<think/>块,浪费上下文 tokens。此模板仅在有实际内容时才会生成思考块。
  • </thinking>幻觉处理。 模型有时会生成</thinking>而非预期的闭合标签。两种情况均能被优雅处理。

独立模板仓库请参见 Qwen-Fixed-Chat-Templates


架构详情
规格
总参数 27.8B(密集型,全部激活)
层数 64层(3层线性注意力 + 1层全注意力,重复16次) + 1层MTP层
注意力 24个Q头,4个KV头(GQA),头维度256
线性注意力 16个QK头,48个V头,头维度128
FFN 中间层大小17408
上下文 原生262K,使用YaRN可达1M+
RoPE theta 10M,partial_rotary_factor 0.25,mrope_interleaved
词表 248K tokens
多token预测 1个MTP draft层(15个张量)
model_type qwen3_5
转换详情

使用 llama.cpp PR #22673 中修改后的convert_hf_to_gguf.py从官方Qwen3.6-27B safetensors转换而来。标准转换器会跳过MTP张量 — 此PR包含了这些张量。Q8_0是直接转换结果;所有更低等级均由此量化而来。

使用llama-quantize和unsloth的重要性矩阵进行量化(使用聊天模板在6K–12K上下文、76个块、496个条目下校准)。I-quant等级将MTP张量保持在Q8_0以确保稳定性。

转换前,聊天模板已替换为 Qwen-Fixed-Chat-Templates 中的修复版本。


链接


作者信息

角色 作者
原始模型 阿里云(Qwen团队)
GGUF转换 + MTP + 视觉 + 固定聊天模板 + 量化 froggeric
重要性矩阵 unsloth

许可证

Apache-2.0,继承自Qwen3.6。