为什么做 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 秒的模型与引擎加载时间。
| 场景 | Prompt | TTFT | Prefill | Decode |
|---|---|---|---|---|
| 冷请求 | 8,192 | 3.853 s | 2,126.19 tok/s | 30.55 tok/s |
| 冷请求 | 32,768 | 17.274 s | 1,896.92 tok/s | 29.47 tok/s |
| 冷请求 | 65,536 | 41.382 s | 1,583.70 tok/s | 25.14 tok/s |
| 冷请求 | 131,072 | 108.563 s | 1,207.34 tok/s | 23.39 tok/s |
| 前缀复用 | 131,072 + 1,024 | 8.592 s | 15,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 / 512token 逐 token 一致性验证 - MMLU-Pro 两端均为
7,486 / 12,032(62.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 与污染隔离
start、status、stop生命周期和优雅停机
公开 HTTP profile 的总上下文上限为 262,144 token。非 loopback 监听默认必须配置 API key;模型权重、AMD runtime DLL 和目标驱动需要另行准备。安装和完整命令见仓库的 README。
作者与仓库关系
项目由 关嘉伟 / Jiawei Guan(@skyguan92) 创建并维护。
- 个人原始上游: skyguan92/AIMA-AMD395-Qwen36-35B-Windows-Engine
- 组织 fork 与官网主展示版本: Approaching-AI/AIMA-AMD395-Qwen36-35B-Windows-Engine
