为什么做这个引擎
AMD Ryzen AI Max+ 395 把 Radeon 8060S GPU 和 128 GB 统一内存放进了一台桌面级设备。它有机会在本地直接运行 35B 级 BF16 模型,但通用推理框架带来的 Python 环境、PyTorch、ROCm 版本和动态库依赖,也会把部署变成一项长期维护工作。
这个项目选择了一条更窄、也更彻底的路线:不做通用框架,只把 Qwen3.6-35B-A3B 在 AMD395 Linux 上这一件事做成可交付的原生成品。
产品定位
AIMA AMD395 Qwen3.6 35B Linux Engine 是一个面向固定硬件和固定模型的 batch-1 BF16 推理引擎。它强调的不是“理论上能跑”,而是明确的产品边界、可复现的性能数据和可审计的发布包。
- 目标硬件: AMD Ryzen AI Max+ 395 / Radeon 8060S(
gfx1151) - 目标模型: Qwen3.6-35B-A3B BF16
- 目标系统: Linux x86-64
- 服务接口: OpenAI 兼容的 Chat Completions API
- 开源协议: Apache License 2.0
核心架构
可搬移的原生运行包
发布包包含静态启动器、原生推理引擎、固定版本的 ROCm、AOTriton、Composable Kernel 用户态依赖和自己的 glibc loader。部署机器不需要预装 Python、PyTorch、vLLM、Triton、Transformers,也不需要系统级 ROCm userspace。
完整运行包解压后约 366 MiB,压缩后约 101 MiB。Linux 内核驱动和 GPU 架构兼容性仍由宿主机负责,模型权重也需要用户单独取得。
模型常驻与 OpenAI 兼容接口
引擎启动时只加载一次模型,让权重、执行计划、KV/递归状态和 prefix cache 保持常驻。HTTP 服务支持:
/v1/chat/completions- 真正的逐 token SSE 流式输出
- OpenAI function
tools、tool_choice和并行工具调用 - assistant 工具调用历史与 tool 响应
- systemd 常驻服务和干净停机
262K 上下文,但边界写清楚
引擎验证了从 1K 到 131K 的固定上下文矩阵,以及总长度 262,144 token 的窗口端点。冷请求必须命中已发布的固定上下文;更长请求只有在严格延续已缓存 token 前缀时,才会使用 prefix extension。
这不是用模糊的“最高支持 262K”掩盖限制,而是把每个可用窗口和对应输出长度写进机器可读的产品契约。
实测性能
下表来自发布版原生引擎在 AMD395 目标机上的验证结果,单位为 token/s。
| 输入长度 | Prefill | Decode(输出 1,024 token) |
|---|---|---|
| 8,192 | 1,654 | 32.26 |
| 32,768 | 1,357 | 28.17 |
| 65,536 | 1,183 | 24.61 |
| 131,072 | 871.4 | 19.53 |
| 261,120 | 565.8 | 13.91 |
除了速度,发布门槛还包括:
- 9 个上下文的全词表 KLD 最大值为
0.002174,低于0.005门槛,top-1 全部一致 - 冻结测试样本的 128-token 输出逐 token 完全一致
- 8K 上下文 command-to-ready 中位数为
44.69 s - 32K 上下文 exact-prefix TTFT 加速
2612x - 流式与非流式输出的 token/text 哈希一致
完整测量记录保存在仓库的 原生发布验证结果 中。
快速启动
tar --zstd -xf aima-engine-native-portable-*.tar.zst
cd aima-engine-native-portable-*
./bin/aima-engine serve \
--model-dir /srv/models/Qwen3.6-35B-A3B \
--context-tokens 8192 \
--host 127.0.0.1 \
--port 8000服务启动后,可以直接访问:
curl -fsS http://127.0.0.1:8000/health
curl -fsS http://127.0.0.1:8000/v1/models使用边界
- 目标机需要 128 GB 内存,并按文档配置 96 GiB GTT pool
- 只验证 Radeon 8060S /
gfx1151,不是通用 AMD GPU 运行时 - 模型 checkpoint 不随仓库和发布包分发
- HTTP 服务没有内建鉴权,并提供
/shutdown,默认只应监听127.0.0.1 - 性能数字只代表仓库中写明的硬件、模型、上下文和发布版本
作者与仓库关系
项目由 关嘉伟 / Jiawei Guan(@skyguan92) 创建并维护。
- 个人原始上游: skyguan92/AIMA-AMD395-Qwen36-35B-Linux-Engine
- 组织 fork 与官网主展示版本: Approaching-AI/AIMA-AMD395-Qwen36-35B-Linux-Engine
两个仓库都保持公开;GitHub 提交记录、Python 包元数据和 CITATION.cff 使用同一个 skyguan92 作者身份。
