2022 年 6 月 15 日 — Alan Kelly,软件工程师撰写 我们很高兴地宣布,从 TensorFlow 2.9.1 版本开始,XNNPACK 的详细 分析信息 现已可用。 XNNPACK 是一个针对 ARM、WebAssembly 和 x86 平台的高度优化的浮点神经网络推理运算符库,是浮点模型默认的 TensorFlow Lite CPU 推理引擎。最常见且成本最高的…
Alan Kelly,软件工程师撰写
我们很高兴地宣布,从 TensorFlow 2.9.1 版本开始,XNNPACK 的详细 分析信息 现已可用。 XNNPACK 是一个针对 ARM、WebAssembly 和 x86 平台的高度优化的浮点神经网络推理运算符库,是浮点模型默认的 TensorFlow Lite CPU 推理引擎。
XNNPACK 执行最常见且成本最高的神经网络运算符,例如全连接层和卷积,以使模型获得最佳性能。以往,分析器会测量委托图的整个部分的运行时间,这意味着所有委托运算符的运行时间会累积在一个结果中,这使得难以识别运行速度缓慢的单个运算符。
使用 XNNPACK 时,之前的 TFLite 分析结果。所有委托运算符的运行时间累积在一行中。 |
如果您使用的是 TensorFlow Lite 2.9.1 或更高版本,它会为委托给 XNNPACK 的部分提供每个运算符的分析信息,因此您不再需要在快速推理和详细性能信息之间做出选择。运算符名称、数据布局(例如 NHWC)、数据类型 (FP32) 和微内核类型(如果适用)都会显示出来。
现在显示了新的详细的每个运算符的分析信息。运算符名称、数据布局、数据类型和微内核类型都可见。 |
列出了最昂贵的运算符。在本例中,您可以看到反卷积占总运行时间的 33.91%。 |
如果硬件原生支持半精度(16 位)浮点格式,XNNPACK 也可以执行半精度浮点格式的推理,并且 IEEE16 推理支持模型中的每个浮点运算符,并且模型的 `reduced_precision_support` 元数据表明它与 FP16 推理兼容。FP16 推理也可以强制执行。有关更多信息,请访问 这里。如果使用了半精度,则 Name 列中将显示 F16。
使用了 FP16 推理。 |
这里使用了无符号量化推理 (QU8)。
QU8 表明使用了无符号量化推理。 |
最后,使用了稀疏推理。稀疏运算符要求数据布局从 NHWC 更改为 NCHW,因为这更高效。这可以在运算符名称中看到。
SPMM 微内核表明运算符是通过 SParse 矩阵 - 稠密矩阵乘法进行评估的。请注意,稀疏推理对运算符使用 NCHW 布局(而不是典型的 NHWC)。 |
请注意,当某些运算符委托给 XNNPACK,而其他运算符没有委托时,将显示两组分析信息。当模型中并非所有运算符都受 XNNPACK 支持时,就会发生这种情况。该项目接下来的步骤是将 XNNPACK 运算符和 TensorFlow Lite 的分析信息合并到一个分析信息中。
您可以通过访问此 指南,了解有关 TensorFlow Lite 中的性能测量和分析的更多信息。感谢您的阅读!