Unsloth Docs / Qwen 3.6

Qwen 3.6 + MTP
完全指南

阿里巴巴新一代多模态混合推理模型 — 从硬件选型到 MTP 加速部署的通俗实战手册

27B / 35B-A3B 256K 上下文 201 种语言
SCROLL

00Qwen 3.6 是什么?

Qwen 3.6 是阿里巴巴推出的新一代多模态混合推理模型家族。所谓"混合推理",指的是同一个模型既能像 GPT-4 一样快速直接回答(Instruct 模式),也能像 o1 一样先"思考"再回答(Thinking 模式)。你可以把它理解为"一个模型,两种性格"。

🧠

混合推理(Hybrid Thinking)

同一个模型支持 Thinking(先思考后回答,适合复杂任务)和 Instruct(直接回答,适合简单任务)两种模式,按需切换。

📷

多模态(Multimodal)

支持文本 + 视觉理解,能看懂图片并基于图片内容回答问题、写代码。

🌐

超宽上下文(256K)

原生支持 256K token 上下文,通过 YaRN 技术可扩展到 100万 token,相当于能一次性读完一整本书。

💬

多语言(201 种)

覆盖 201 种语言,包括中文、英文、日文、法文等,跨语言能力在同尺寸模型中处于顶尖水平。

01两个版本,怎么选?

Qwen 3.6 目前提供两个版本,核心区别在于模型架构:

Qwen3.6-27B(Dense)

传统密集模型,参数量 270 亿。每次推理时所有参数都会参与计算。性能均衡,适合大多数场景。

⚡ 140 tokens/s(MTP)

推荐显存:18GB(4-bit 量化)

Qwen3.6-35B-A3B(MoE)

混合专家模型,总参数量 350 亿,但每次推理只激活约 30 亿参数。用更少的计算量获得更强的性能。

⚡ 220 tokens/s(MTP)

推荐显存:22GB(4-bit 量化)

显存需求对照表

以下是在不同量化精度下的显存需求。量化可以理解为"模型压缩"——用更少的位数存储权重,换取更小的体积和更快的速度,代价是极轻微的精度损失。

模型 3-bit 4-bit 6-bit 8-bit BF16(无损)
27B 15 GB 18 GB 24 GB 30 GB 55 GB
35B-A3B 17 GB 23 GB 30 GB 38 GB 70 GB
💡

选购建议

如果你有 RTX 3090/4090(24GB)或更高级别的显卡,推荐 27B 的 4-bit 量化版,性价比最高。如果显存更充裕,35B-A3B 的 MoE 架构在同等速度下性能更强。

02开始前:重要警告

CUDA 13.2 问题

不要使用 CUDA 13.2,否则模型输出会变成乱码(gibberish)。NVIDIA 正在修复中。建议使用 CUDA 12.x 版本。

💡

Ollama 暂不支持

目前 Qwen 3.6 的 GGUF 格式无法在 Ollama 中使用,原因是视觉模块(mmproj)使用了单独的文件。请使用 llama.cpp 兼容的后端。

03MTP:让生成速度翻倍的黑科技

MTP 是什么?

MTP(Multi-Token Prediction,多 Token 预测)是 Qwen 3.6 引入的一项加速技术。传统的大模型每次只能预测一个token(大约半个汉字),而 MTP 让模型每次能同时预测多个token。

通俗比喻:传统生成就像一个人一个字一个字地写文章;MTP 就像一个人能同时想好接下来两三句话,然后一口气写下来。

MTP 效果

Dense 模型(27B):约 1.4 倍加速,draft tokens = 2 时效果最佳

MoE 模型(35B-A3B):约 1.15~1.25 倍加速

实测:27B 可达 140 tokens/s,35B-A3B 可达 220 tokens/s

🔧

为什么不建议 draft tokens > 2?

当 draft tokens 从 2 增加到 4 时,接受率会从 83% 暴跌到 50%。这意味着模型"猜错"的概率大幅上升,反而拖慢整体速度。因此推荐始终设置为 --spec-draft-n-max 2

第一步:编译支持 MTP 的 llama.cpp

MTP 需要特殊的 llama.cpp 分支,官方主线尚未合并。以下是编译步骤:

# 安装依赖
apt-get install pciutils build-essential cmake curl libcurl4-openssl-dev -y

# 克隆 MTP 分支
git clone -b mtp-clean https://github.com/am17an/llama.cpp.git

# 编译(NVIDIA GPU)
cmake llama.cpp -B llama.cpp/build \
    -DBUILD_SHARED_LIBS=OFF \
    -DGGML_CUDA=ON
cmake --build llama.cpp/build --config Release \
    -j --clean-first \
    --target llama-cli llama-server

# 复制编译好的二进制文件
cp llama.cpp/build/bin/llama-* llama.cpp

如果是 Apple Mac(Metal),将 -DGGML_CUDA=ON 改为 -DGGML_CUDA=OFF,Metal 支持默认开启。

第二步:运行 MTP 加速版 27B(Thinking 模式)

# 设置模型缓存路径
export LLAMA_CACHE="unsloth/Qwen3.6-27B-MTP-GGUF"

# 启动命令行对话(Thinking 模式,适合通用任务)
./llama.cpp/llama-cli \
    -hf unsloth/Qwen3.6-27B-GGUF:UD-Q4_K_XL \
    --temp 1.0 \
    --top-p 0.95 \
    --top-k 20 \
    --presence-penalty 1.5 \
    --min-p 0.00 \
    --spec-type mtp \
    --spec-draft-n-max 2

运行 MTP 加速版 27B(Instruct 模式)

export LLAMA_CACHE="unsloth/Qwen3.6-27B-MTP-GGUF"

./llama.cpp/llama-server \
    -hf unsloth/Qwen3.6-27B-MTP-GGUF:UD-Q4_K_XL \
    --temp 0.7 \
    --top-p 0.8 \
    --top-k 20 \
    --presence-penalty 1.5 \
    --min-p 0.00 \
    --spec-type mtp \
    --spec-draft-n-max 2 \
    --chat-template-kwargs '{"enable_thinking":false}'

关键区别:Instruct 模式下添加了 --chat-template-kwargs '{"enable_thinking":false}',这会关闭模型的"思考"过程,直接输出答案,速度更快、风格更简洁。

运行 MTP 加速版 35B-A3B

export LLAMA_CACHE="unsloth/Qwen3.6-35B-A3B-MTP-GGUF"

./llama.cpp/llama-cli \
    -hf unsloth/Qwen3.6-35B-A3B-MTP-GGUF:UD-Q4_K_XL \
    --temp 1.0 \
    --top-p 0.95 \
    --top-k 20 \
    --presence-penalty 1.5 \
    --min-p 0.00 \
    --spec-type mtp \
    --spec-draft-n-max 2

从 Hugging Face 下载模型

hf download unsloth/Qwen3.6-35B-A3B-MTP-GGUF \
    --local-dir unsloth/Qwen3.6-35B-A3B-MTP-GGUF \
    --include "*mmproj-F16*" \
    --include "*UD-Q4_K_XL*"

04参数调优:Thinking vs Instruct

Qwen 3.6 的核心魅力在于"一个模型,两种性格"。以下是官方推荐的参数配置:

Thinking 模式(先思考,再回答)

场景 temperature top_p top_k presence_penalty
通用任务 1.0 0.95 20 1.5
精确编程 0.6 0.95 20 0.0

Instruct 模式(直接回答)

场景 temperature top_p top_k presence_penalty
通用任务 0.7 0.8 20 1.5
推理任务 1.0 0.95 20 1.5
💡

参数通俗解释

temperature:创意温度。越高越有创意但越容易胡说,越低越保守但越准确。

presence_penalty:重复惩罚。设为 1.5 可以减少模型"车轱辘话"来回说的问题。

top_p / top_k:采样范围。限制模型只从最有希望的候选词中选择。

05Preserve Thinking:保留思考痕迹

Qwen 3.6 有一个独特的功能叫 Preserve Thinking(保留思考)。在多轮对话中,模型会把上一轮"思考"的过程也保留下来,作为下一轮对话的上下文。

好处:对话连贯性更强,模型"记得"自己是怎么思考的。

代价:消耗的 token 数量显著增加。

# 启用 Preserve Thinking
--chat-template-kwargs '{"preserve_thinking":true}'

在 Python 中读取思考内容:

print(completion.choices[0].message.content)          # 正式回答
print(completion.choices[0].message.reasoning_content) # 思考过程

06生产部署:OpenAI 兼容 API

llama-server 启动后,会提供一个与 OpenAI API 完全兼容的接口。这意味着你可以用任何支持 OpenAI 的客户端或框架来调用本地部署的 Qwen 3.6。

启动生产服务器

./llama.cpp/llama-server \
    --model unsloth/Qwen3.6-35B-A3B-GGUF/Qwen3.6-35B-A3B-UD-Q4_K_XL.gguf \
    --mmproj unsloth/Qwen3.6-35B-A3B-GGUF/mmproj-F16.gguf \
    --alias "unsloth/Qwen3.6-35B-A3B" \
    --temp 0.6 \
    --top-p 0.95 \
    --ctx-size 16384 \
    --top-k 20 \
    --min-p 0.00 \
    --port 8001

Python 客户端调用

from openai import OpenAI

client = OpenAI(
    base_url="http://127.0.0.1:8001/v1",
    api_key="sk-no-key-required",
)

completion = client.chat.completions.create(
    model="unsloth/Qwen3.6-35B-A3B",
    messages=[{"role": "user", "content": "用 Python 写一个贪吃蛇游戏。"}],
)

print(completion.choices[0].message.content)

07Mac 用户:MLX 动态量化

Apple Silicon Mac 用户可以通过 MLX 框架运行 Qwen 3.6,利用统一内存架构获得不错的性能。

一键安装与运行

# 一键安装
curl -fsSL https://raw.githubusercontent.com/unslothai/unsloth/refs/heads/main/scripts/install_qwen3_6_mlx.sh | sh

# 激活环境
source ~/.unsloth/unsloth_qwen3_6_mlx/bin/activate

# 启动对话
python -m mlx_vlm.chat --model unsloth/Qwen3.6-27B-UD-MLX-4bit

MLX 量化版本对照

量化 Hugging Face 链接 大小
3-bitunsloth/Qwen3.6-27B-UD-MLX-3bit~24 GB
4-bitunsloth/Qwen3.6-27B-UD-MLX-4bit~26 GB
6-bitunsloth/Qwen3.6-27B-UD-MLX-6bit~30 GB
8-bitunsloth/Qwen3.6-27B-MLX-8bit~35 GB
MXFP4unsloth/Qwen3.6-27B-UD-MLX-MXFP4~26 GB
NVFP4unsloth/Qwen3.6-27B-UD-MLX-NVFP4~26 GB

精度 benchmark

量化 Mean KLD Median KLD PPL Size
8-bit0.00280.00034.81234.7 GB
6-bit0.00370.00074.80930.5 GB
4-bit0.02270.00534.82126.2 GB
3-bit0.07340.02234.97624.1 GB
💡

Mac 选购建议

KLD(KL散度)越低,表示量化后的模型与原始模型越接近。4-bit 是性价比最佳点 — 体积比 8-bit 小 25%,精度损失仅 0.02,几乎感知不到。

08常见问题排查

🔧

输出乱码(Gibberish)

1. 检查上下文长度是否设置过低,尝试增大 --ctx-size

2. 添加 --cache-type-k bf16 --cache-type-v bf16 可能解决问题

3. 确认未使用 CUDA 13.2

🔧

显存不足

llama.cpp 支持通过 SSD/HDD 卸载(offloading)运行,但推理速度会显著下降。建议显存 + 系统内存总量大于模型文件大小。

🔧

Windows PowerShell 引号问题

Windows 用户注意:JSON 参数中的引号需要转义。

Linux/Mac: '{"enable_thinking":false}'

Windows PowerShell: "{\"enable_thinking\":false}"

09快速命令索引

最常用命令速查

MTP 加速 + Thinking(27B)

./llama.cpp/llama-cli -hf unsloth/Qwen3.6-27B-GGUF:UD-Q4_K_XL --temp 1.0 --top-p 0.95 --top-k 20 --presence-penalty 1.5 --min-p 0.00 --spec-type mtp --spec-draft-n-max 2

MTP 加速 + Instruct(27B)

./llama.cpp/llama-server -hf unsloth/Qwen3.6-27B-MTP-GGUF:UD-Q4_K_XL --temp 0.7 --top-p 0.8 --top-k 20 --presence-penalty 1.5 --min-p 0.00 --spec-type mtp --spec-draft-n-max 2 --chat-template-kwargs '{"enable_thinking":false}'

标准模式(非 MTP,27B)

./llama.cpp/llama-cli -hf unsloth/Qwen3.6-27B-GGUF:UD-Q4_K_XL --temp 1.0 --top-p 0.95 --top-k 20 --presence-penalty 1.5 --min-p 0.00

参考来源

Unsloth Docs: Qwen 3.6 + MTP Guide(原文) Qwen3.6-27B-GGUF @ Hugging Face Qwen3.6-35B-A3B-GGUF @ Hugging Face llama.cpp MTP 分支(am17an/mtp-clean)