🌠Qwen3-Coder:如何本地运行
使用 Unsloth Dynamic 量化模型在本地运行 Qwen3-Coder-30B-A3B-Instruct 和 480B-A35B。
Qwen3-Coder 是 Qwen 全新一系列编码智能体模型,提供 30B(Qwen3-Coder-Flash)和 480B 参数版本。 Qwen3-480B-A35B-Instruct 实现了业界顶尖(SOTA)的代码性能,可与 Claude Sonnet-4、GPT-4.1 以及 Kimi K2相媲美,在 Aider Polygot 上达到 61.8%,并支持 256K(可扩展至 1M)token 上下文。
我们还上传了带原生 1M 上下文长度 的 Qwen3-Coder,使用 YaRN 扩展,并提供全精度 8bit 和 16bit 版本。 Unsloth 现在还支持 Qwen3-Coder 的微调和 RL 。
更新: 我们修复了 Qwen3-Coder 的工具调用! 现在你可以在 llama.cpp、Ollama、LMStudio、Open WebUI、Jan 等中无缝使用工具调用。这个问题是普遍存在的,影响了所有上传版本(不只是 Unsloth),我们也已经将修复方案与 Qwen 团队沟通! 阅读更多
是否 Unsloth Dynamic Quants 有效? 是的,而且效果非常好。在第三方对 Aider Polyglot 基准的测试中, UD-Q4_K_XL(276GB) 动态量化几乎与 完整 bf16(960GB) 的 Qwen3-coder 模型持平,得分分别为 60.9% 和 61.8%。 更多细节见这里。
Qwen3 Coder - Unsloth Dynamic 2.0 GGUF:
🖥️ 运行 Qwen3-Coder
下面是针对该 30B-A3B 以及 480B-A35B 模型变体
⚙️ 推荐设置
的指南。Qwen 对两个模型都推荐以下推理设置:
temperature=0.7, top_p=0.8, top_k=20, repetition_penalty=1.05
温度 0.7
Top_K 20
Min_P 0.00(可选,但 0.01 也很好,llama.cpp 默认是 0.1)
Top_P 0.8
重复惩罚 1.05
聊天模板:
<|im_start|>user 嗨!<|im_end|> <|im_start|>assistant 1+1 等于多少?<|im_end|> <|im_start|>user 2<|im_end|> <|im_start|>assistant推荐上下文输出:65,536 个 token(可增加)。详情见这里。
带换行未渲染的聊天模板/提示格式
工具调用的聊天模板 (获取旧金山当前温度)。关于如何格式化工具调用的更多细节见这里。
运行 Qwen3-Coder-30B-A3B-Instruct:
要让我们的动态 4-bit 量化达到每秒 6+ token 的推理速度,至少需要 18GB 统一内存 (VRAM 与 RAM 合计)或者 18GB 系统 RAM 。一般来说,可用内存应当与所用模型大小相当或更大。例如,UD_Q8_K_XL 量化(全精度)大小为 32.5GB,至少需要 33GB 统一内存 (VRAM + RAM)或者 33GB RAM ,才能获得最佳性能。
注意: 模型可以在小于其总大小的内存上运行,但这会降低推理速度。只有在追求最快速度时才需要最大内存。
由于这是一个非思考模型,因此无需设置 thinking=False ,模型也不会生成 <think> </think> 块。
🦙 Ollama:运行 Qwen3-Coder-30B-A3B-Instruct 教程
安装
ollama如果你还没安装的话!你只能运行最大 32B 的模型。
运行模型!注意如果失败,你可以在
ollama serve另一个终端里调用。我们将所有修复和建议参数(温度等)都包含在params中,位于我们的 Hugging Face 上传里!
✨ Llama.cpp:运行 Qwen3-Coder-30B-A3B-Instruct 教程
获取最新的
llama.cpp默认开启 GitHub 仓库。你也可以按照下面的构建说明进行。将-DGGML_CUDA=ON到-DGGML_CUDA=OFF改为适用于没有 GPU 或只想进行 CPU 推理的情况。 对于 Apple Mac / Metal 设备,设置-DGGML_CUDA=OFF然后照常继续——Metal 支持默认开启。
你可以直接通过 HuggingFace 拉取:
下载模型(安装
pip install huggingface_hub hf_transfer之后)。你可以选择 UD_Q4_K_XL 或其他量化版本。如果下载卡住,请参见 Hugging Face Hub、XET 调试
运行 Qwen3-Coder-480B-A35B-Instruct:
要让我们的 1-bit 量化达到每秒 6+ token 的推理速度,我们建议至少使用 150GB 统一内存 (VRAM 与 RAM 合计)或者 150GB 系统 RAM 。一般来说,可用内存应当与所用模型大小相当或更大。例如,Q2_K_XL 量化大小为 180GB,至少需要 180GB 统一内存 (VRAM + RAM)或者 180GB RAM ,才能获得最佳性能。
注意: 模型可以在小于其总大小的内存上运行,但这会降低推理速度。只有在追求最快速度时才需要最大内存。
📖 Llama.cpp:运行 Qwen3-Coder-480B-A35B-Instruct 教程
对于 Coder-480B-A35B,我们将专门使用 Llama.cpp 进行优化推理,并提供丰富的选项。
如果你想要 全精度未量化版本,请使用我们的 Q8_K_XL、Q8_0 或 BF16 版本!
获取最新的
llama.cpp默认开启 GitHub 仓库。你也可以按照下面的构建说明进行。将-DGGML_CUDA=ON到-DGGML_CUDA=OFF改为适用于没有 GPU 或只想进行 CPU 推理的情况。你可以直接使用 llama.cpp 下载模型,但我通常建议使用
huggingface_hub。直接使用 llama.cpp 的话,请执行:或者,通过(安装
pip install huggingface_hub hf_transfer之后)下载模型。你可以选择 UD-Q2_K_XL,或其他量化版本。以对话模式运行模型并尝试任意提示词。
编辑
--threads -1用于 CPU 线程数,--ctx-size262114 用于上下文长度,--n-gpu-layers 99用于将多少层卸载到 GPU。如果 GPU 显存不足,请尝试调整它。如果你只做 CPU 推理,也请将其移除。
使用 -ot ".ffn_.*_exps.=CPU" 可将所有 MoE 层卸载到 CPU!这实际上可以让你把所有非 MoE 层放入 1 张 GPU,从而提升生成速度。如果你有更多 GPU 容量,可以自定义正则表达式以适配更多层。更多选项见 这里.
另外也别忘了新的 Qwen3 更新。运行 Qwen3-235B-A22B-Instruct-2507 并使用 llama.cpp 在本地运行。
🛠️ 提升生成速度
如果你有更多 VRAM,可以尝试卸载更多 MoE 层,或者直接卸载整个层。
通常, -ot ".ffn_.*_exps.=CPU" 会将所有 MoE 层卸载到 CPU!这实际上可以让你把所有非 MoE 层放入 1 张 GPU,从而提升生成速度。如果你有更多 GPU 容量,可以自定义正则表达式以适配更多层。
如果你有更多一点 GPU 内存,可以尝试 -ot ".ffn_(up|down)_exps.=CPU" 这会卸载上投影和下投影 MoE 层。
尝试 -ot ".ffn_(up)_exps.=CPU" 如果你有更多 GPU 内存。这只会卸载上投影 MoE 层。
你也可以自定义正则,例如 -ot "\.(6|7|8|9|[0-9][0-9]|[0-9][0-9][0-9])\.ffn_(gate|up|down)_exps.=CPU" 表示仅从第 6 层开始卸载 gate、up 和 down MoE 层。
这个 最新版 llama.cpp 还引入了高吞吐模式。使用 llama-parallel。阅读更多关于它的内容 这里。你也可以 将 KV cache 量化为 4bit ,例如减少 VRAM/RAM 之间的数据移动,这也能让生成过程更快。
📐如何适配长上下文(256K 到 1M)
要适配更长上下文,你可以使用 KV 缓存量化 将 K 和 V cache 量化到更低比特。这也能因为减少 RAM/VRAM 数据移动而提高生成速度。K 量化允许的选项(默认是 f16)如下。
--cache-type-k f32, f16, bf16, q8_0, q4_0, q4_1, iq4_nl, q5_0, q5_1
你应当使用 _1 这些变体可略微提高准确性,尽管速度稍慢。例如 q4_1, q5_1
你也可以量化 V cache,但你需要 使用 Flash Attention 编译 llama.cpp ,通过 -DGGML_CUDA_FA_ALL_QUANTS=ON,并使用 --flash-attn 来启用它。
我们还通过 YaRN scaling 上传了 100 万上下文长度的 GGUF 这里.
🧰 工具调用修复
我们已经成功通过 llama.cpp --jinja 修复了工具调用,专门用于通过 llama-server提供服务!如果你下载的是我们的 30B-A3B 量化版本,无需担心,因为这些版本已经包含我们的修复。对于 480B-A35B 模型,请:
从 https://huggingface.co/unsloth/Qwen3-Coder-480B-A35B-Instruct-GGUF/tree/main/UD-Q2_K_XL 下载第一个文件(UD-Q2_K_XL),并替换你当前的文件
使用
snapshot_download,就像 https://docs.unsloth.ai/basics/qwen3-coder-how-to-run-locally#llama.cpp-run-qwen3-tutorial 中所示,它会自动覆盖旧文件通过以下方式使用新的聊天模板
--chat-template-file。见 GGUF 聊天模板 或 chat_template.jinja另外,我们还在 https://huggingface.co/unsloth/Qwen3-Coder-480B-A35B-Instruct-GGUF/blob/main/Qwen3-Coder-480B-A35B-Instruct-UD-IQ1_M.gguf 提供了一个单独的 150GB UD-IQ1_M 文件(这样 Ollama 也能工作)
这应该能解决诸如以下问题:https://github.com/ggml-org/llama.cpp/issues/14915
使用工具调用
为了格式化用于工具调用的提示词,我们用一个示例来展示。
我创建了一个名为 get_current_temperature 的 Python 函数,它应该获取某个地点的当前温度。现在我们创建了一个占位函数,它总是返回 21.6 摄氏度。你应该把它改成真正的函数!!
然后使用 tokenizer 创建完整提示词:
💡性能基准
以下是 480B 模型的基准结果:
智能体编程
Terminal‑Bench
37.5
30.0
2.5
35.5
25.3
SWE‑bench Verified 配合 OpenHands (500 轮)
69.6
–
–
70.4
–
SWE‑bench Verified 配合 OpenHands (100 轮)
67.0
65.4
38.8
68.0
48.6
SWE‑bench Verified 配合 Private Scaffolding
–
65.8
–
72.7
63.8
SWE‑bench Live
26.3
22.3
13.0
27.7
–
SWE‑bench Multilingual
54.7
47.3
13.0
53.3
31.5
Multi‑SWE‑bench mini
25.8
19.8
7.5
24.8
–
Multi‑SWE‑bench flash
27.0
20.7
–
25.0
–
Aider‑Polyglot
61.8
60.0
56.9
56.4
52.4
Spider2
31.1
25.2
12.8
31.1
16.5
智能体浏览器使用
WebArena
49.9
47.4
40.0
51.1
44.3
Mind2Web
55.8
42.7
36.0
47.4
49.6
智能体工具使用
BFCL‑v3
68.7
65.2
56.9
73.3
62.9
TAU‑Bench 零售
77.5
70.7
59.1
80.5
–
TAU‑Bench 航空
60.0
53.5
40.0
60.0
–
最后更新于
这有帮助吗?

