🌠Qwen3-Coder:如何本地运行

使用 Unsloth 的动态量化在本地运行 Qwen3-Coder-30B-A3B-Instruct 和 480B-A35B。

Qwen3-Coder 是 Qwen 的新系列编码代理模型,提供 30B(Qwen3-Coder-Flash)和 480B 参数。 Qwen3-480B-A35B-Instruct 在编码性能上达到了与 Claude Sonnet-4、GPT-4.1 相媲美的最先进水平,且 Kimi K2,在 Aider Polygot 上取得 61.8% 的成绩,并支持 256K(可扩展至 1M)令牌上下文。

我们还上传了原生支持的 Qwen3-Coder,具有 1M 上下文长度 由 YaRN 扩展,并提供全精度 8bit 和 16bit 版本。 Unslotharrow-up-right 现在也支持微调和 RL Qwen3-Coder 的强化学习。

circle-check

运行 30B-A3B运行 480B-A35B

circle-check

Qwen3 Coder - Unsloth 动态 2.0 GGUFs:

🖥️ 运行 Qwen3-Coder

以下是有关 30B-A3B480B-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

  • 聊天模板:

    {% code overflow="wrap" %}

    <|im_start|>user
    嗨!<|im_end|>
    <|im_start|>assistant
    1+1 等于多少?<|im_end|>
    <|im_start|>user
    2<|im_end|>
    <|im_start|>assistant

    {% endcode %}

  • 推荐上下文输出:65,536 令牌(可增加)。详情在此。

聊天模板/提示格式,换行未呈现

用于工具调用的聊天模板 (获取旧金山当前温度)。有关如何格式化工具调用的更多细节在此。

circle-info

提醒:该模型仅支持非思考模式,不会在输出中生成 <think></think> 块。同时,不再需要指定 enable_thinking=False

运行 Qwen3-Coder-30B-A3B-Instruct:

要使我们的动态 4-bit 量化达到每秒 6+ 令牌的推理速度,至少需要 18GB 的统一内存 (合并 VRAM 和 RAM)或 仅 18GB 的系统内存 。作为经验法则,可用内存应与所使用模型的大小相匹配或超过。例如,UD_Q8_K_XL 量化(全精度)为 32.5GB,将至少需要 33GB 的统一内存 (VRAM + RAM)或 33GB 的 RAM 以获得最佳性能。

注意: 模型可以在低于其总大小的内存上运行,但这会使推理变慢。最高内存仅在追求最快速度时需要。

鉴于这是一个非思考模型,无需设置 thinking=False 且模型不会生成 <think> </think> 块。

circle-info

遵循 上述最佳实践。它们与 480B 模型相同。

🦙 Ollama:运行 Qwen3-Coder-30B-A3B-Instruct 教程

  1. 安装 ollama 如果你还没有安装!你只能运行最大 32B 的模型。

  1. 运行模型!注意如果失败可以在另一个终端调用 ollama serve!我们在 Hugging Face 上传中包含了所有修复和建议的参数(如 temperature 等),位于 params

Llama.cpp:运行 Qwen3-Coder-30B-A3B-Instruct 教程

  1. 获取最新的 llama.cpp ,位于 GitHub 这里arrow-up-right。你也可以按照下面的构建说明进行构建。若没有 GPU 或仅需 CPU 推理,请将 -DGGML_CUDA=ON 改为 -DGGML_CUDA=OFF

  1. 你可以直接通过 HuggingFace 拉取:

  2. 通过(安装之后)下载模型: pip install huggingface_hub hf_transfer )。你可以选择 UD_Q4_K_XL 或其他量化版本。如果下载卡住,请参见 Hugging Face Hub、XET 调试

运行 Qwen3-Coder-480B-A35B-Instruct:

要使我们的 1-bit 量化达到每秒 6+ 令牌的推理速度,我们建议至少配备 150GB 的统一内存 (合并 VRAM 和 RAM)或 仅 150GB 的系统内存 。作为经验法则,可用内存应与所使用模型的大小相匹配或超过。例如,Q2_K_XL 量化为 180GB,将至少需要 180GB 的统一内存 (VRAM + RAM)或 180GB 的 RAM 以获得最佳性能。

注意: 模型可以在低于其总大小的内存上运行,但这会使推理变慢。最高内存仅在追求最快速度时需要。

circle-info

遵循 上述最佳实践。它们与 30B 模型相同。

📖 Llama.cpp:运行 Qwen3-Coder-480B-A35B-Instruct 教程

对于 Coder-480B-A35B,我们将专门使用 Llama.cpp 以获得优化的推理和众多选项。

circle-check
  1. 获取最新的 llama.cpp ,位于 GitHub 这里arrow-up-right。你也可以按照下面的构建说明进行构建。若没有 GPU 或仅需 CPU 推理,请将 -DGGML_CUDA=ON 改为 -DGGML_CUDA=OFF

  2. 你可以直接使用 llama.cpp 下载模型,但我通常建议使用 huggingface_hub 要直接使用 llama.cpp,请执行:

    {% code overflow="wrap" %}

    {% endcode %}

  3. 或者,通过(安装之后)下载模型: pip install huggingface_hub hf_transfer )。你可以选择 UD-Q2_K_XL 或其他量化版本。

  4. 在对话模式下运行模型并尝试任意提示。

  5. 编辑 --threads -1 以设置 CPU 线程数, --ctx-size 262114 作为上下文长度, --n-gpu-layers 99 用于设置有多少层在 GPU 上卸载。如果你的 GPU 出现内存不足,请尝试调整它。如果仅使用 CPU 推理,则移除该项。

circle-check
circle-check

🛠️ 提升生成速度

如果你有更多 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 层卸载到 CPU。

最新的 llama.cpp 发布arrow-up-right 还引入了高吞吐量模式。使用 llama-parallel。在此处阅读更多相關內容。 此处arrow-up-right你也可以 将 KV 缓存量化为 4 位, 例如以减少 VRAM / RAM 的移动,这也可以加快生成过程。

📐如何适配长上下文(256K 到 1M)

要适配更长的上下文,你可以使用 KV 缓存量化 将 K 和 V 缓存量化到更低位数。这也可以由于减少 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 缓存,但你需要 使用 Flash Attention 支持重新编译 llama.cpp, 通过 -DGGML_CUDA_FA_ALL_QUANTS=ON,并使用 --flash-attn 来启用它。

我们也通过 YaRN 扩展上传了 1 百万上下文长度的 GGUF 文件 此处.

🧰 工具调用修复

我们设法修复了通过 llama.cpp --jinja 进行的工具调用, 专门针对通过llama-server

  1. 提供服务的情况!如果你正在下载我们的 30B-A3B 量化文件,无需担心,因为这些已包含我们的修复。对于 480B-A35B 模型,请:

  2. 使用 下载 https://huggingface.co/unsloth/Qwen3-Coder-480B-A35B-Instruct-GGUF/tree/main/UD-Q2_K_XL 中的第一个文件以获得 UD-Q2_K_XL,并替换你当前的文件 snapshot_download

  3. 像 https://docs.unsloth.ai/basics/qwen3-coder-how-to-run-locally#llama.cpp-run-qwen3-tutorial 中那样照常,这将自动覆盖旧文件 使用新的聊天模板通过--chat-template-file 。参见arrow-up-rightGGUF 聊天模板arrow-up-right

  4. chat_template.jinja

此外,我们还制作了 1 个单一的 150GB UD-IQ1_M 文件(因此 Ollama 可用),位于 https://huggingface.co/unsloth/Qwen3-Coder-480B-A35B-Instruct-GGUF/blob/main/Qwen3-Coder-480B-A35B-Instruct-UD-IQ1_M.gguf

这应解决诸如:https://github.com/ggml-org/llama.cpp/issues/14915 之类的问题。

使用工具调用

要为工具调用格式化提示,下面用示例展示。 我创建了一个名为 get_current_temperature

"unit": unit,

💡prompt = tokenizer.apply_chat_template(messages, tokenize = False)

circle-info

性能基准 这些官方基准针对的是完整的 BF16 检查点。要使用它,只需使用我们上传的 Q8_K_XL,Q8_0,BF16

检查点——你仍然可以对这些版本使用诸如 MoE 卸载之类的技巧!

以下是 480B 模型的基准:

Agentic 编码
基准
Qwen3‑Coder 480B‑A35B‑Instruct
Kimi‑K2
DeepSeek‑V3-0324
Claude 4 Sonnet

GPT‑4.1

37.5

30.0

2.5

35.5

25.3

Terminal‑Bench

69.6

SWE‑bench 已通过 OpenHands 验证(500 回合)

SWE‑bench 已通过 OpenHands 验证(500 回合)

70.4

SWE‑bench 已通过 OpenHands 验证(500 回合)

67.0

65.4

38.8

68.0

48.6

SWE‑bench 已通过 OpenHands 验证(100 回合)

SWE‑bench 已通过 OpenHands 验证(500 回合)

65.8

SWE‑bench 已通过 OpenHands 验证(500 回合)

72.7

63.8

SWE‑bench 已通过 私有 支架 验证

26.3

22.3

13.0

27.7

SWE‑bench 已通过 OpenHands 验证(500 回合)

SWE‑bench 实时

54.7

47.3

13.0

53.3

31.5

SWE‑bench 多语言

25.8

19.8

7.5

24.8

SWE‑bench 已通过 OpenHands 验证(500 回合)

Multi‑SWE‑bench mini

27.0

20.7

SWE‑bench 已通过 OpenHands 验证(500 回合)

25.0

SWE‑bench 已通过 OpenHands 验证(500 回合)

Multi‑SWE‑bench flash

61.8

60.0

56.9

56.4

52.4

Aider‑Polyglot

31.1

25.2

12.8

31.1

16.5

Spider2

Agentic 编码
基准
Qwen3‑Coder 480B‑A35B‑Instruct
Agentic 浏览器 使用
DeepSeek‑V3 0324
Claude 4 Sonnet

Claude Sonnet‑4

49.9

47.4

40.0

51.1

44.3

WebArena

55.8

42.7

36.0

47.4

49.6

Mind2Web

Agentic 编码
基准
Qwen3‑Coder 480B‑A35B‑Instruct
Agentic 浏览器 使用
DeepSeek‑V3 0324
Claude 4 Sonnet

Agentic 工具 使用

68.7

65.2

56.9

73.3

62.9

BFCL‑v3

77.5

70.7

59.1

80.5

SWE‑bench 已通过 OpenHands 验证(500 回合)

TAU‑Bench 零售(Retail)

60.0

53.5

40.0

60.0

SWE‑bench 已通过 OpenHands 验证(500 回合)

最后更新于

这有帮助吗?