oneDNN在ARM架构上的卷积性能回归问题分析与解决
问题背景
在深度学习推理框架oneDNN中,开发人员发现当使用ARM Compute Library(ACL)作为后端时,在Apple M2 Pro处理器上出现了卷积操作的性能退化现象。具体表现为某些特定卷积配置在ACL版本升级后执行时间显著增加。
性能退化现象
通过benchdnn测试工具,开发人员复现了以下典型性能退化案例:
-
对于输入形状为mb1_ic16oc96_ih112oh112kh1的卷积操作:
- ACL 24.09版本耗时:0.135毫秒
- ACL 24.11版本耗时:0.4毫秒
-
对于输入形状为mb1_ic144oc24_ih56oh56kh1的卷积操作:
- ACL 24.09版本耗时:0.1毫秒
- ACL 24.11版本耗时:0.22毫秒
-
对于输入形状为mb1_ic24oc144_ih56oh56kh1的卷积操作:
- ACL 24.09版本耗时:0.099毫秒
- ACL 24.11版本耗时:0.196毫秒
问题分析
经过技术团队调查,发现性能退化主要源于以下几个方面:
-
ACL版本兼容性问题:oneDNN 3.6.2版本要求最低ACL版本为24.11.1,而早期测试中使用了不兼容的ACL 24.09版本,导致性能基准不一致。
-
特定卷积配置敏感:某些特定形状的卷积操作(如1x1卷积)对底层实现的变化特别敏感,微小的算法调整可能导致显著的性能差异。
-
内存布局影响:测试中使用的"acdb"内存布局(一种特殊的NHWC变体)对性能有较大影响,当切换为"any"布局时性能表现会有所不同。
解决方案与验证
技术团队采取了以下措施解决该问题:
-
版本控制:确保使用兼容的ACL版本组合,避免因版本不匹配导致的性能问题。
-
问题定位:通过分析发现,导致性能退化的补丁已被回滚,后续版本中性能退化程度有所减轻。
-
持续监控:建立更完善的性能基准测试体系,对关键卷积操作进行定期性能监控。
-
版本升级验证:在ACL v52.1.0版本上验证,确认性能已恢复到合理水平:
- 原始测试案例在ACL v52.1.0上分别耗时0.15毫秒、0.11毫秒和0.11毫秒
技术建议
对于使用oneDNN和ACL的开发者,建议:
-
始终使用官方推荐的版本组合,避免兼容性问题。
-
对于性能关键的应用,建议进行全面的基准测试,覆盖各种可能的输入形状和内存布局。
-
关注oneDNN的verbose输出(使用ONEDNN_VERBOSE=dispatch),了解实际调用的内核实现。
-
对于Apple Silicon等ARM架构处理器,特别注意内存布局对性能的影响,必要时进行布局优化。
结论
本次性能回归问题展示了深度学习框架底层优化的重要性。通过技术团队的及时响应和深入分析,不仅解决了特定版本下的性能退化问题,还建立了更完善的性能监控机制。这为oneDNN在ARM架构上的持续优化奠定了坚实基础,也为开发者提供了宝贵的性能调优经验。
kernelopenEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。C037
Kimi-K2-ThinkingKimi K2 Thinking 是最新、性能最强的开源思维模型。从 Kimi K2 开始,我们将其打造为能够逐步推理并动态调用工具的思维智能体。通过显著提升多步推理深度,并在 200–300 次连续调用中保持稳定的工具使用能力,它在 Humanity's Last Exam (HLE)、BrowseComp 等基准测试中树立了新的技术标杆。同时,K2 Thinking 是原生 INT4 量化模型,具备 256k 上下文窗口,实现了推理延迟和 GPU 内存占用的无损降低。Python00
kylin-wayland-compositorkylin-wayland-compositor或kylin-wlcom(以下简称kywc)是一个基于wlroots编写的wayland合成器。 目前积极开发中,并作为默认显示服务器随openKylin系统发布。 该项目使用开源协议GPL-1.0-or-later,项目中来源于其他开源项目的文件或代码片段遵守原开源协议要求。C00
PaddleOCR-VLPaddleOCR-VL 是一款顶尖且资源高效的文档解析专用模型。其核心组件为 PaddleOCR-VL-0.9B,这是一款精简却功能强大的视觉语言模型(VLM)。该模型融合了 NaViT 风格的动态分辨率视觉编码器与 ERNIE-4.5-0.3B 语言模型,可实现精准的元素识别。Python00
GLM-4.7GLM-4.7上线并开源。新版本面向Coding场景强化了编码能力、长程任务规划与工具协同,并在多项主流公开基准测试中取得开源模型中的领先表现。 目前,GLM-4.7已通过BigModel.cn提供API,并在z.ai全栈开发模式中上线Skills模块,支持多模态任务的统一规划与协作。Jinja00
agent-studioopenJiuwen agent-studio提供零码、低码可视化开发和工作流编排,模型、知识库、插件等各资源管理能力TSX0115
Spark-Formalizer-X1-7BSpark-Formalizer 是由科大讯飞团队开发的专用大型语言模型,专注于数学自动形式化任务。该模型擅长将自然语言数学问题转化为精确的 Lean4 形式化语句,在形式化语句生成方面达到了业界领先水平。Python00