跳转到主内容
项目
C++HIPROCmAMD Ryzen AIWindowsLLM InferenceOpenAI API

AIMA AMD395 Qwen3.6 35B Windows Engine — Windows 原生推理引擎

在 AMD Ryzen AI Max+ 395 上原生运行 Qwen3.6-35B-A3B BF16:8K prefill 达 2,126 token/s、decode 达 30.55 token/s,131K 前缀复用场景 TTFT 为 8.59 秒。

分享:
AIMA AMD395 Qwen3.6 35B Windows Engine — Windows 原生推理引擎

为什么做 Windows 原生引擎

AMD Ryzen AI Max+ 395 的统一内存让 35B 级 BF16 模型可以留在一台 Windows 工作站里,但“能够启动”与“能够长期作为服务运行”之间还有很长一段距离:模型加载、长上下文、算子调度、流式接口、进程生命周期和过载保护都需要一起解决。

这个项目把范围收得很窄:只针对 Qwen3.6-35B-A3B BF16、AMD395 和 Windows 11,把 batch size 1 的推理路径做深、做快、做成可交付产品。

产品定位

AIMA AMD395 Qwen3.6 35B Windows Engine 是一个模型与硬件专用的原生推理引擎,而不是通用图运行时。

  • 目标硬件: AMD Ryzen AI Max+ 395 / Radeon 8060S(gfx1151
  • 目标模型: Qwen3.6-35B-A3B BF16
  • 目标系统: Windows 11 x64,ROCm HIP SDK 7.1
  • 执行模式: batch size 1,最长 512 token 确定性 greedy decode
  • 服务接口: OpenAI 兼容的 Completions、Chat Completions 与 SSE streaming
  • 开源协议: Apache License 2.0

模型权重和 AMD 运行库不随仓库分发,用户需要自行取得并满足仓库锁定的运行环境。

性能优化做了什么

把通用执行路径压成模型专用数据通路

推理核心由 C/C++/HIP 实现,并为 gfx1151 预编译 AOT kernel。运行时按模型结构组合 CK attention、Triton selected-MoE、AITER/FLA GDN 与 host BF16 辅助路径,避免让 Python 或通用框架进入计时热路径。

连续输入长度不会要求用户手工选择 benchmark shape。引擎内部把任意 prompt 分解为已优化的 q8192 tile、q1024 与 tail 路径,再在 40 层模型中执行。

模型常驻,前缀按事务复用

模型、执行计划和 cache 由常驻 provider 持有。兼容请求通过 copy-on-write 复用最长 token 前缀;只有推理成功后才提交新快照,失败请求不会污染已有 cache。

这项优化在长上下文里最明显:131,072 token 冷请求的 TTFT 为 108.563 s;复用 131,072 token 前缀、再追加 1,024 token 时,TTFT 为 8.592 s,约为前者的 1/12.6。这里的 prefix throughput 是按完整有效 prompt 计算的复用吞吐,不应当与冷 prefill 算力直接等同。

服务层不遮蔽原生性能

Rust 服务层负责 HTTP、SSE、OpenAI schema、队列和生命周期,原生 provider 持有模型内存与全部计时推理路径。硬件路径固定为 batch 1,并用有界 FIFO 队列提供明确的 429 / 503 过载语义,避免等待请求无限占用资源。

实测性能

以下数据来自 v1.0.0 在 Windows 11、AMD Ryzen AI Max+ 395、Qwen3.6-35B-A3B BF16 上的真实模型测试。TTFT 不含约 19.94 秒的模型与引擎加载时间。

场景PromptTTFTPrefillDecode
冷请求8,1923.853 s2,126.19 tok/s30.55 tok/s
冷请求32,76817.274 s1,896.92 tok/s29.47 tok/s
冷请求65,53641.382 s1,583.70 tok/s25.14 tok/s
冷请求131,072108.563 s1,207.34 tok/s23.39 tok/s
前缀复用131,072 + 1,0248.592 s15,374.02 tok/s*23.32 tok/s

* 前缀行是按完整有效 prompt 计算的复用吞吐。

在 8K 发布门槛上,最终结果相对验收边界为:

  • prefill 2,126.19 tok/s,比 1,506.41 tok/s 下限高 41.1%
  • decode 30.55 tok/s,比 28.17 tok/s 下限高 8.5%
  • TTFT 3.853 s,比 4.187 s 上限低 8.0%

完整 12 条性能记录保存在仓库的 性能说明机器可读发布矩阵 中。

正确性不是性能的附注

优化结果必须同时通过外部 BF16 参考边界:

  • 8K 首 token 与参考服务选择相同 token,logit 绝对差为 0.125
  • 131K 冷请求与长前缀请求均完成 512 / 512 token 逐 token 一致性验证
  • MMLU-Pro 两端均为 7,486 / 12,03262.2174%
  • 12,032 道题的 candidate/reference projection mismatch 为 0

仓库同时公开脱敏后的性能、正确性、OpenAI API 验收与 MMLU-Pro 逐题证据,让结果可以复核,而不只是一组截图里的峰值数字。

产品能力与使用边界

常驻 qrt 服务提供:

  • /v1/models/v1/completions/v1/chat/completions
  • JSON 与逐 token SSE streaming
  • 流式 function tool calling 与 tool result continuation
  • 连续、任意的输入 token 长度
  • prefix cache seed、resident hit、copy-on-write 与污染隔离
  • startstatusstop 生命周期和优雅停机

公开 HTTP profile 的总上下文上限为 262,144 token。非 loopback 监听默认必须配置 API key;模型权重、AMD runtime DLL 和目标驱动需要另行准备。安装和完整命令见仓库的 README

作者与仓库关系

项目由 关嘉伟 / Jiawei Guan(@skyguan92) 创建并维护。

标签:#C++#HIP#ROCm#AMD Ryzen AI#Windows#LLM Inference#OpenAI API