Qwen3 Coder Next llama.cpp图级优化 — 最高38%推理加速

Qwen3 Coder Next llama.cpp图级优化 — 最高38%推理加速

ggerganov重构llama.cpp计算图,使Qwen3 Coder Next 80B模型推理速度提升最高38%。详细解析优化技术与基准测试结果。

概述

llama.cpp核心开发者ggerganov发布了PR #19375,对Qwen3 Coder Next模型的计算图进行了优化。通过消除不必要的张量复制操作并在图级别重构推理路径,实现了M2 Ultra上最高38%DGX Spark上最高38%的速度提升。该优化在Reddit r/LocalLLaMA上获得了177分以上的高度关注,让我们深入了解其核心内容。

核心思想:图级优化

本次优化的核心思想很简单:从ggml计算图中移除不必要的张量复制操作

Qwen3 Coder Next采用MoE(混合专家)架构,路由器选择要激活的专家并组合各专家的输出,这个过程中会产生大量中间张量复制。原有实现为了安全性过度插入了这些复制操作,而ggerganov仅保留了真正必要的复制,移除了其余部分。

graph LR
    A[输入张量] --> B[路由器]
    B --> C[Expert 1]
    B --> D[Expert 2]
    B --> E[Expert 3]
    C --> F[输出合并]
    D --> F
    E --> F
    F --> G[下一层]

    style A fill:#00B4D8,color:#fff
    style F fill:#FFB703,color:#000
    style G fill:#00B4D8,color:#fff

基准测试结果

M2 Ultra性能对比

Qwen3 Coder Next 80B.A3B模型在不同量化级别下的测试结果。

Q4_0量化

测试基线 (t/s)优化后 (t/s)加速比
pp1(单token)37.9251.991.37x
pp8(8token批处理)137.75176.361.28x
pp512(提示词)930.701125.731.21x
pp2048(长提示词)1049.911352.311.29x
tg32(生成)38.0250.391.33x

Q4_K_M量化

测试基线 (t/s)优化后 (t/s)加速比
pp134.0046.471.37x
pp2048977.301232.471.26x
tg3234.6346.431.34x

Q8_0量化

测试基线 (t/s)优化后 (t/s)加速比
pp134.3843.981.28x
pp20481047.391338.821.28x
tg3233.7543.781.30x

DGX Spark性能对比

NVIDIA DGX Spark上也确认了显著的性能提升。

量化测试基线 (t/s)优化后 (t/s)加速比
Q4_0pp5121055.581161.671.10x
Q4_0pp20481059.001324.661.25x
Q4_0tg3243.1159.581.38x
Q8_0pp20481009.431246.611.23x
Q8_0tg3231.1339.681.27x

值得注意的是,DGX Spark在tg32(token生成)中Q4_0基准下实现了38%的速度提升

技术背景:相关后端优化

这个PR并非孤立存在。图优化要发挥效果,各后端(Metal、CUDA、Vulkan)需要能够直接处理非连续(non-contiguous)张量。

Metal(Apple Silicon)

  • 自适应CPU/GPU交错#19369):根据节点数动态分配CPU/GPU工作负载
  • 二元内核整合#19390):消除重复内核代码
  • 一元运算整合#19490):改进一元运算处理
  • 非连续张量L2范数支持#19502
  • 并发性改进#19555

CUDA(NVIDIA GPU)

  • 非连续张量PAD运算扩展#19429
  • 启用CUDA图#19521):用于Qwen3 Next风格架构
  • 防止融合ADD图变异#19566

Vulkan

  • L2_NORM连续行支持#19604
  • GGML_OP_SET支持#19584

注意事项:BF16张量问题

部分GGUF文件可能错误包含一维BF16张量。这会导致Metal等后端性能下降。#19606通过将ffn_gate_inp_shexp张量存储为F32来解决了这个问题。

后续计划

ggerganov预告了进一步的优化工作:

  1. Qwen3系列代码去重#19597):共享delta-net图
  2. 利用ggml_build_forward_select():将图常量化以获取更多优化空间
  3. 引入专用delta net ggml运算#19504):更高效的内核执行

对本地LLM用户的影响

总结本次优化的实际意义:

  • Apple Silicon用户:M2 Ultra基准下80B MoE模型tg32可达约50 t/s,完全满足实时对话需求。
  • NVIDIA GPU用户:DGX Spark上20-38%的速度提升。CUDA图支持有望带来进一步优化。
  • 量化选择:Q4_0显示最大速度提升,但Q4_K_M和Q8_0也有一致的20-37%改善。
  • 无需代码更改:只需将llama.cpp更新到最新版本即可自动应用。

结论

ggerganov的图级优化大幅提升了llama.cpp的MoE模型推理性能。不是简单地优化内核,而是重构计算图本身的方法令人印象深刻。特别是与在多个后端(Metal、CUDA、Vulkan)中扩展非连续张量支持的并行工作相结合,将本地LLM推理的性能上限提升了一个台阶。

如果您在本地运行Qwen3 Coder Next等MoE模型,请更新llama.cpp到最新版本,立即体验这一性能提升。

参考资料

阅读其他语言版本

这篇文章有帮助吗?

您的支持能帮助我创作更好的内容。请我喝杯咖啡吧!☕

关于作者

JK

Kim Jangwook

AI/LLM专业全栈开发者

凭借10年以上的Web开发经验,构建AI代理系统、LLM应用程序和自动化解决方案。分享Claude Code、MCP和RAG系统的实践经验。