AMD与Intel把x 86的PyTorch优化合并进oneDNN:一条代码路径覆盖两家CPU
10 月 20 日, AMD 与 Intel 宣布把各自在 x86 CPU 上的 PyTorch 优化合并到 oneDNN 。 oneDNN 是由 Unified Acceleration Foundation ( UXL 基金会)治理的开源深度学习库,双方已就把它作为 PyTorch 在 x86 上默认的开源加速库达成一致。这项合作由 x86 生态系统咨询小组( x86 Ecosystem Advisory Group )提出建议。
AMD 新闻稿配图:开发者与 AI 软件栈 图片来源: AMD
具体动作有两项:AMD 把自家的 ZenDNN 优化并入 oneDNN 主干;同时以指导委员会成员(steering member)身份加入 UXL 基金会,从一般贡献者转为治理层参与者。
要理解这件事的分量,得看整合前的格局。oneDNN 最初由 Intel 开发,提供卷积、矩阵乘、激活函数等深度学习原语, PyTorch 、TensorFlow、ONNX Runtime、OpenVINO 在 CPU 上都会调用它;早期内核针对 Intel 处理器调优。AMD 的应对是维护 ZenDNN 这条下游分支——保留 oneDNN 的接口,换成为 Zen 架构编写的内核。效果不差,EPYC 上的实测性能可观,代价是同一个集群里混装两家 CPU 时,部署方要按底层硬件选择不同的库构建。两套几乎相同的代码路径并行维护,隐性适配成本长期存在。
整合之后,Zen 专属优化向上游进入 oneDNN,开发者安装一套库,运行时按当前 CPU 的特性分派到对应内核。AMD 表示会继续针对自家处理器做优化,只是把优化成果放进共享库中——同一套库并不意味着两家硬件上跑出同样的性能。
「AMD 正在推进一个开放的软件生态,让开发者有更多选择,也更容易构建高性能 AI 应用。通过与 x86 生态系统咨询小组合作,我们让产业围绕通用技术聚拢,简化跨 x86 处理器的开发。」AMD 架构与战略企业副总裁 Robert Hormuth 表示。
Intel 数据中心战略项目副总裁兼总经理 Jeff McVeigh 的说法是:「开发者不应该为了发挥 x86 CPU 的最佳性能,被迫去考虑各自独立的软件路径。通过 oneDNN 与 AMD 合作,为 PyTorch 社区提供了面向现代处理器的统一做法,也为未来包括 AI Compute Extensions 在内的能力进入框架留出了通道。」
Red Hat 首席技术官办公室副总裁、杰出工程师 Stephen Watt 也从 PyTorch 社区角度给出了评价,认为这是消除生态碎片化的一步。
合作范围还包括指令集。两家公司正在共同推进 AI Compute Extensions(ACE),这是一套面向矩阵乘法的 x86 指令集扩展。矩阵乘是 AI 负载的核心运算,ACE 在 PyTorch 中的支持将通过后续的 oneDNN 更新进入。走统一库之后,这类新指令的适配只需在 oneDNN 里做一次,而不是在两条代码路径上各排一次期。
需要分清这项合作覆盖的边界:它处理的是 CPU。AMD 的 GPU 软件栈仍是 ROCm,Instinct 加速卡上的 PyTorch 支持也仍走 ROCm;oneDNN 通过 SYCL 带有实验性的 AMD GPU 支持,但这不是这次公告的内容。
ZenDNN 合并与 ACE 支持的版本节奏,需要跟着 oneDNN 的发布记录看。对部署方来说,接下来要盯的是三件具体的事:内核覆盖度——哪些算子在哪家架构上走优化路径,未覆盖的算子会回落到通用实现;打包方式——wheel 里带哪些 ISA 变体、安装包体积与运行时分派的策略如何取舍;以及版本对齐——混合集群里同一份环境如何在两家的机器上都达到目标性能。这三项决定统一库能省下多少维护工作。
主题:矩阵乘