发生了什么
社区在 r/LocalLLaMA 发布的一项基准测试,对比了在 AMD Ryzen AI MAX+ 395 硬件(Strix Halo)上通过 LocalAI 运行 Qwen 3.5 35B MoE 模型时,Vulkan 和 ROCm 后端的性能。测试了两个 GGUF 变体:mudler/Qwen3.5-35B-A3B-APEX-I-Quality.gguf 和 unsloth/Qwen3.5-35B-A3B-UD-Q4_K_XL.gguf。尽管总参数量为 35B,但这两个模型均为混合专家(MoE)架构,仅激活 3B 参数。
测试工具为 llama-benchy(通过 uvx llama-benchy 运行),启用了前缀缓存、生成延迟模式和自适应提示。测试的上下文深度涵盖 0、4K、8K、16K、32K、65K、100K 和 200K 个令牌。系统运行 Ubuntu 25.10(内核 6.19.10),配备 118.1 GB 共享显存,TDP 为 85W——这是 Strix Halo APU 独有的配置,它实现了 CPU 和 GPU 内存的池化。
后端构建标识符:Vulkan 为 b8681,ROCm 为 b1232,CPU 为 b8681——均通过 Lemonade 10.1.0 构建。ROCm 与其他后端之间构建编号的差异,可能部分解释了除纯后端架构之外的性能差异。
技术深度解析
结果按工作负载类型清晰分化:
- 令牌生成(解码阶段):Vulkan 表现持续领先。在 APEX-I-Quality 模型上,Vulkan 在零上下文时约为 57.5 t/s,而 ROCm 约为 50.0 t/s。在 100K 令牌时,Vulkan 保持约 38.6 t/s,ROCm 为约 35.7 t/s——在不同上下文长度下保持了约 7-8% 的优势。
- 提示处理(预填充阶段):ROCm 占据主导地位。在 unsloth 变体上,ROCm 在 2K 上下文时达到约 1052 t/s,而 Vulkan 为约 798 t/s。对于 APEX-I-Quality 在 4K 上下文时,ROCm 达到约 885 t/s,Vulkan 为约 759 t/s——差距约为 16%。
这种模式在架构上是预期的。Vulkan 在 AMD iGPU 上的计算流水线通常针对受内存带宽限制的解码操作进行了更好的调优,其中顺序令牌生成受益于较低的驱动开销。然而,ROCm 的 HIP 内核针对主导预填充阶段的高吞吐量矩阵乘法进行了优化,在该阶段大量令牌批次被同时处理。
MoE 架构(35B 中激活 3B)是重要的背景信息:稀疏激活意味着每个令牌仅加载部分权重。在 Strix Halo 等共享内存 APU 上,这降低了解码期间的有效内存带宽压力——这可能放大了 Vulkan 在调度效率方面的优势,相对于 ROCm 通常占主导地位的端到端独立 GPU 场景。
作为对比,在独立 AMD GPU(如 RX 7900 XTX)上,由于专用的 HBM 带宽,ROCm 通常在两个阶段都获胜。Vulkan 在此处的优势似乎特定于统一内存、低 TDP 的 APU 环境。
未报告仅 CPU 的基线以供比较,这将有助于量化 GPU 后端的加速倍数。
谁应该关注
此基准测试与任何在 AMD Ryzen AI MAX 或类似具有统一内存池的 APU 级硬件上运行本地推理的人员直接相关。118 GB 共享内存使得无需卸载即可加载完整的 35B 模型——这是大多数消费级 GPU 无法适用的用例。
评估在 AMD 硬件上部署 LocalAI 后端的机器学习工程师应注意工作负载的划分:如果您的应用程序对终端用户的延迟敏感(聊天、流式响应),Vulkan 提供更好的解码吞吐量。如果您正在批量处理大型提示或文档(RAG 摄入、摘要管道),则 ROCm 的预填充速度是首要任务。
在 Windows/Linux AMD APU 上基于 Lemonade 或 llama.cpp 构建的开发者将发现此内容直接适用。在功耗受限硬件(此处为 85W TDP)边缘运行推理的团队也应注意到,这些数字代表了比仅 CPU 推理具有显著更高吞吐量的竞争性替代方案。
本周行动指南
要在您自己的 AMD 硬件上复现或扩展这些基准测试:
1. 通过 uvx 安装 llama-benchy:
uvx llama-benchy --help2. 通过 LocalAI 配合 Lemonade 10.1.0+ 拉取模型:
localai pull mudler/Qwen3.5-35B-A3B-APEX-GGUF:Qwen3.5-35B-A3B-APEX-I-Quality.gguf3. 运行后端对比:
uvx llama-benchy --backend vulkan --model qwen3.5-35b --prefix-cache --context 0,4096,8192,32768将 --backend rocm 切换以运行 ROCm 测试。请在 github.com/mudler/LocalAI 查看 Lemonade 发布版本。如果您的工作负载是混合型的,请考虑将 Vulkan 设为默认,并专门针对批量预填充任务对 ROCm 进行基准测试。