August 25, 2023
客户
客户是业内领先的芯片制造商之一。他们正试图在高内核 CPU 上对多线程机器学习 (ML) 推理性能进行基准测试和改进。客户认识到最大限度地提高 CPU 利用率对于提高 ML 推理吞吐量和整体系统效率的重要性。
项目
该项目围绕优化 ONNX 运行时开源软件库的性能展开,ONNX 运行时是一种广泛使用的 ML 推断框架。主要目标是充分发挥高核数 CPU 的潜力,并解决 ONNX 运行时只能利用单处理器组的限制。这一限制导致拥有超过 64 个线程的 CPU 的利用率不尽人意。
挑战
- 处理器组限制: ONNX 运行时无法在 Windows 中使用一个以上的处理器组,导致拥有超过 64 个线程的 CPU 效率低下。
- 推理性能: 由于 ONNX 运行时对可用硬件资源利用的限制,客户在高内核 CPU 上实现最佳推理性能时面临挑战。
- 依赖性集成: 要实现处理器组支持,不仅需要修改 ONNX 运行时,还需要修改其依赖项–Eigen 资源库。
- CPU 使用率分析: 要找出性能问题的根本原因,剖析推理过程和分析 CPU 利用率至关重要。
MulticoreWare 的优势和方法
MulticoreWare 团队在 ML 软件堆栈优化方面拥有深厚的专业知识,在应对客户面临的挑战方面表现出了卓越的能力。我们的方法包括:
- 剖析和分析: 对推理过程进行彻底的剖析和分析,确定缺乏处理器组支持是一个关键瓶颈。
- 代码库分析: 深入研究 ONNX 运行时和 Eigen 的代码库,了解其中的复杂性和依赖性。
- 添加处理器组支持:为 ONNX 运行时添加处理器组支持,并将其集成到 Eigen 资源库中,确保兼容性和最佳性能。
- 参数优化: 通过微调参数优化推理基准,使 ML 模型有效利用可用硬件资源。
- 并行推理功能: 在 ONNX Runtime 的性能测试套件中引入并行推理功能,以进一步最大限度地发挥高核数 CPU 的潜力,从而提取每一丝性能。
成果
通过 MulticoreWare 的专家干预,客户取得了显著的成果:
- 提高了 CPU 利用率: 通过实施处理器组支持和参数优化,提高了高内核数 CPU 的 CPU 利用率,解决了 64 线程限制问题。
- 提高推理吞吐量: 通过优化,推理吞吐量大幅提高,使客户能够从硬件中获取更多价值。
- 系统效率: 该项目的成功提高了系统效率,最大限度地利用了可用硬件资源。
- 更深入的合作: MulticoreWare 对 ML 软件堆栈和依赖关系的深入了解促进了客户与 MulticoreWare 之间的深入合作,为潜在的未来项目奠定了基础。
结论
本案例研究强调了 MulticoreWare 在根据硬件架构优化 ML 软件堆栈方面的专业知识,以及我们的创新方法如何帮助一家主要芯片制造商克服限制、优化性能并最大限度地发挥高核数 CPU 的潜力。
