Hotdry Blog

Article

Lemonade 异构调度解析:AMD ROCm 下的 GPU 与 NPU 动态算力分配

深度剖析 Lemonade 基于 AMD ROCm 实现 GPU 与 NPU 动态算力分配与异构调度的技术细节,支撑本地 LLM 低延迟推理。

2026-04-03ai-systems

在本地大语言模型推理场景中,计算资源的异构化部署正成为提升能效比的关键路径。AMD 推出的 Lemonade 项目通过整合 Ryzen AI NPU 与集成 GPU,构建了一套面向本地 LLM 的异构计算调度框架。与传统单一计算单元的推理方案不同,Lemonade 实现了基于任务特性的动态算力分配机制,在降低端侧设备功耗的同时优化推理吞吐量。本文将从调度架构、任务划分策略和 ROCm 软件栈的角色三个维度,系统解析这一异构调度方案的实现细节。

异构计算的端侧机遇与挑战

端侧设备部署 LLM 的核心约束在于功耗与延迟的双重压力。传统上,CPU 负责推理会面临算力不足的问题,而独立 GPU 虽然能够提供足够的吞吐量,但其功耗对于笔记本电脑等移动设备而言往往过高。AMD Ryzen AI 300 系列处理器的出现改变了这一格局,其内置的神经网络处理单元(NPU)专门针对矩阵运算进行了架构优化,能够以极低的功耗完成特定 AI 工作负载。与集成显卡配合使用时,两者形成了天然的异构计算组合:NPU 擅长处理高并行度的预处理任务,集成 GPU 则在解码阶段提供更灵活的通用计算能力。

Lemonade 项目正是基于这一硬件特性设计了自己的调度层。其核心思路是将 LLM 推理的 prefill 阶段(处理输入提示的阶段)与 decode 阶段(逐词生成输出的阶段)进行解耦,分别分配给最适合的计算单元。Prefill 阶段涉及大量的矩阵乘法运算,NPU 的专用计算单元能够以极高的能效比完成处理;而 decode 阶段由于需要频繁访问模型权重和动态更新隐藏状态,集成 GPU 的大带宽内存访问优势得以充分发挥。这种基于阶段特征的调度策略,是 Lemonade 异构计算架构的核心设计理念。

任务划分与动态分配机制

Lemonade 的调度实现依托于 ONNX Runtime-GenAI 提供的混合执行路径。在运行时层面,系统会根据当前推理任务的特性自动选择执行后端。当用户输入提示词时,调度器首先评估输入序列的长度、模型规模以及硬件当前的负载状态,然后决定是否启用 NPU 加速。对于较短的提示词,调度策略可能倾向于直接使用集成 GPU 处理整个推理流程,以避免跨设备数据传输带来的延迟开销;而对于较长的输入,NPU 则会接管 prefill 阶段,随后将中间结果无缝传递给 GPU 完成后续解码。

这种动态分配机制的实现需要解决两个关键技术问题。其一是跨设备的数据一致性。当 NPU 完成 prefill 处理后,产生的 Key-Value 缓存需要高效地传输至 GPU 的显存空间。Lemonade 利用 AMD ROCm 提供的统一内存管理能力,实现了 NPU 与 GPU 之间的零拷贝数据传输,避免了传统方案中需要通过 CPU 中转的性能损耗。其二是调度策略的自适应性。系统会持续监控各计算单元的利用率和任务队列状态,当检测到 NPU 负载过高时,会动态将后续请求切换至纯 GPU 或 CPU 路径,确保整体服务的响应延迟保持在可接受范围内。

从工程实现的角度看,Lemonade 暴露了多个可配置参数供开发者调优。批处理大小(batch_size)直接影响 NPU 与 GPU 的计算密度平衡,较小的批处理大小有利于降低首词延迟(Time To First Token),而较大的值则能提升长上下文场景下的吞吐量。设备优先级配置(device_preference)允许用户指定 NPU 优先、GPU 优先或混合模式,以适应不同的工作负载特征。此外,针对特定模型(如 Phi-3、LLaMA-3-8B 等),Lemonade 提供了经过验证的配置文件,包含推荐的张量分片策略和内存分配阈值,这些预设值基于 AMD 官方的性能测试结果得出。

ROCm 软件栈在异构调度中的角色

AMD ROCm 生态系统为 Lemonade 的异构调度提供了底层的软件基础设施。在传统认知中,ROCm 主要服务于数据中心级别的独立显卡加速,但其在 Ryzen AI 平台上的适配版本同样支持 NPU 与 GPU 的协同工作。ROCm 的异构运行时(Heterogeneous Runtime)负责管理不同计算设备之间的任务排队、同步和数据传输,这是 Lemonade 实现无缝调度的基础。

具体而言,ROCm 提供的 HIP API 抽象层允许开发者以统一的方式调用 NPU 和 GPU 的计算资源。在 Lemonade 的实现中,针对 NPU 的内核调度通过 ONNX Runtime 的 EP(Execution Provider)机制完成,该 EP 会将算子映射至 Ryzen AI 专用的推理加速库;而针对集成 GPU 的部分则通过 ROCm 的 HIP 引擎执行,利用 GCN 架构的计算单元处理矩阵运算和向量操作。两种执行路径在调度器的协调下并行工作,形成了一套完整的端侧异构推理流水线。

ROCm 还为 Lemonade 提供了重要的性能分析能力。通过 ROCm 的 Profiler 工具,开发者可以精确测量 NPU 与 GPU 各自的计算占比、内存带宽利用率以及跨设备数据传输的延迟等关键指标。这些数据对于调优调度策略至关重要,例如当发现 NPU 到 GPU 的数据传输成为瓶颈时,可以考虑调整缓存策略或增加批处理大小来掩盖这一延迟。

工程实践与性能考量

在实际的本地部署场景中,Lemonade 的异构调度方案展现出了显著的能效优势。根据 AMD 官方技术文档的描述,在 Ryzen AI 300 系列笔记本电脑上,混合执行模式相比纯 CPU 推理能够实现数倍的延迟降低,同时保持可观的电池续航表现。这一成果源于 NPU 处理 prefill 阶段时仅消耗约 5 瓦特的功耗水平,而集成 GPU 在 decode 阶段的峰值功耗也被控制在 15 瓦特以内,整个推理过程的平均功耗远低于调用独立显卡的方案。

对于计划采用 Lemonade 进行本地 LLM 部署的开发者,有几个实践要点值得关注。首先,确保系统已安装最新的 Ryzen AI 驱动和 ROCm 组件,否则混合执行模式可能无法正常激活。其次,根据目标模型的大小选择合适的执行路径:7B 以下的模型在 Ryzen AI 300 系列上可以完整加载至 NPU 和 GPU 的组合内存中,而更大的模型可能需要启用分片加载或回退至 CPU 辅助模式。最后,监控推理过程中的设备温度和功耗曲线,合理调整风扇策略以避免热节流影响持续性能。

从调度的演进方向来看,Lemonade 未来可能会引入更细粒度的算子级调度。当前方案以阶段(prefill/decode)为单位的划分方式已经能够覆盖大多数场景,但更理想的状态是能够根据每个神经网络算子的特性动态选择执行设备。这需要进一步深化与 ONNX Runtime 的集成,并依赖 ROCm 提供更完善的异构算子库支持。随着 AMD 在 NPU 架构上的持续迭代,异构计算在端侧 AI 推理领域的应用前景将更加广阔。


参考资料

  • AMD 官方技术文章《Unlocking a Wave of LLM Apps on Ryzen AI Through Lemonade Server》提供了 Lemonade 项目架构和混合执行模式的详细技术说明。

ai-systems