XNNPACK 是针对 ARM、x86、WebAssembly 和 RISC-V 平台的 神经网络 推理的高度优化解决方案。XNNPACK 并非专门为 深度学习 从业者和研究人员直接使用的,而是为加速高级 机器学习 框架(如 TensorFlow Lite、TensorFlow.js、PyTorch、ONNX Runtime、ExecuTorch 和 MediaPipe)提供了低级别的性能原语。
- Android、iOS、macOS、Linux 和 Windows 上的 ARM64
- Android 上的 ARMv7 (带 NEON)
- Linux 上的 ARMv6 (带 VFPv2)
- 在 Windows、Linux、macOS、Android 和 iOS 模拟器上支持 x86 和 x86-64(最高支持 AVX512)
- WebAssembly MVP
- WebAssembly SIMD
- WebAssembly 放松的 SIMD (实验性)
- RISC-V (RV32GC 和 RV64GC)
- 六边形 (带 HVX)
运营商覆盖范围
XNNPACK 实现了以下 神经网络 运算符:
- 2D 卷积(包括分组和深度卷积)
- 2D 反卷积(又称转置卷积)
- 2D 平均池化
- 2D 最大池化
- 2D ArgMax 池化(最大池化 + 索引)
- 2D 反池化
- 2D 双线性缩放
- 2D 从深度到空间(又称像素混合)
- 加法(包括广播,仅限两个输入)
- 减法(包括广播)
- 除法(包括广播)
- 最大值(包括广播)
- 最小值(包括广播)
- 乘法(包括广播)
- 平方差(包括广播)
- 全局平均池化
- 通道混合
- 全连接
- 绝对值
- 银行四舍五入(四舍五入,数值相等时取偶数)
- 向上取整(向上取整,即向上舍入到整数)
- 截断(向零舍入,即向下舍入到整数)
- 硬件混合
- 漏洞 ReLU
- 反转
- sigmoid
- 逻辑函数
- 平方
- Tanh
- 反转
- 截断(向零舍入,即向下舍入到整数)
- PReLU
XNNPACK 中的所有运算符都支持 NHWC 布局,但还允许自定义沿 C 维的步长