XNNPACK: 一个为跨平台推理提供优化神经网络原语的底层加速库

XNNPACK: 一个为跨平台推理提供优化神经网络原语的底层加速库

它解决了什么问题

XNNPACK 解决了在各种硬件平台(特别是移动端和边缘设备)上进行高性能神经网络推理的需求。它提供了运行 AI 模型所需的高效底层数学原语,而无需用户编写特定于架构的汇编代码。

它是如何工作的

它作为一个底层加速库运行,实现了一套全面的神经网络算子(例如 2D 卷积、池化和各种激活函数)。这些算子针对特定的 CPU 架构进行了高度优化,包括 ARM、x86、RISC-V 和 WebAssembly。它不是直接被研究人员使用,而是集成到 TensorFlow Lite 和 PyTorch 等高级框架中,以加速它们的执行。

它是面向谁的

它是为机器学习框架和运行时引擎的开发者设计的,这些开发者需要在不同的硬件目标上优化推理性能。

亮点

  • 广泛的硬件支持:针对 ARM64、ARMv7、ARMv6、x86/x86-64(最高支持 AVX512)、RISC-V、WebAssembly 和 Hexagon 进行了优化。
  • 丰富的算子库:支持大量操作,包括分组/深度卷积(grouped/depthwise convolutions)、双线性缩放(bilinear resize)以及各种量化/反量化转换。
  • 灵活的内存布局:支持 NHWC 布局,并可在通道维度上使用自定义步长(strides),以实现零成本的通道拆分和拼接。
  • 框架集成:为 TensorFlow Lite、PyTorch Mobile、ONNX Runtime 和 MediaPipe 等主流工具提供推理动力。

Sources