技术编程|快 2 倍,TFLite 推出基于 OpenCL 的 Android 移动 GPU 推理引擎
TensorFlow Lite(TFLite)现在支持在 Android 设备上使用 OpenCL 进行 GPU 推理 , 这一改进使得 TFLite 性能比使用现有 OpenGL 后端提高了约 2 倍 。
本文插图
TensorFlow Lite 团队介绍了目前其使用 OpenCL 在移动 GPU 推理上所取得的进展 , 并宣布正式推出基于 OpenCL 的 Android 移动 GPU 推理引擎 , 该引擎在大小合理的神经网络上可比现有的 OpenGL 后端提供高达 2 倍的性能提升 。
OpenGL ES 3.1 中添加了计算着色器 , 但其向后兼容的 API 设计决策限制了发挥 GPU 的全部潜能 。 另一方面 , OpenCL 从一开始就是为使用各种加速器进行计算而设计的 , 因此与移动 GPU 推理领域更加相关 。 因此 , TFLite 团队研究了基于 OpenCL 的推理引擎 , 引入了一些功能 , 使得能够优化移动 GPU 推理引擎 。
相比之下 , 新的移动 GPU 推理引擎有以下要点:
性能分析:与 OpenGL 相比 , 优化 OpenCL 后端要容易得多 , 因为 OpenCL 提供了良好的分析功能与高通 Adreno 很好的支持 。 使用这些概要分析 API , 能够非常精确地测量每个内核调度的性能 。
优化工作组大小:高通 Adreno GPU 上的 TFLite GPU 性能对工作组大小非常敏感 , 选择正确的工作组大小可以提高性能 , 反之亦然 。 借助上述 OpenCL 中的性能分析功能 , 能够实现针对工作组大小的优化器 , 这使平均速度提高了 50% 。
原生 16 位精度浮点(FP16):OpenCL 原生支持 FP16 , 并要求加速器指定数据类型的可用性 。 作为正式规范的一部分 , 即使是某些较旧的 GPU , 例如 2012 年推出的 Adreno 305 , 也可以发挥其全部功能 。
恒定内存(constant memory):OpenCL 具有恒定内存的概念 。 高通增加了一个物理内存能力 , 使其非常适合与 OpenCL 的恒定内存一起使用 。 对于某些特殊情况 , 例如在神经网络开始或末尾非常薄的层 , 这被证明是非常有效的 。
Adreno 上的 OpenCL 通过与该物理恒定内存和上述原生 FP16 支持的协同作用 , 能够大大超越 OpenGL 的性能 。
TFLite 具体展示了在 CPU(大内核上的单线程)使用现有 OpenGL 后端的 GPU 以及使用新的 OpenCL 后端的 GPU 上的性能对比 。
本文插图
本文插图
上图分别说明了在两个著名的神经网络 MNASNet 1.3 和 SSD MobileNet v3(大型)上使用 OpenCL 的特定 Android 设备上推理引擎的性能 。 可以看到 , 新的 OpenCL 后端的速度大约是 OpenGL 后端的两倍 , 并且 OpenCL 在较大的网络上的性能甚至更好 。
此外 , 因为 OpenCL 本身不属于 Android 的一部分 , 某些用户可能无法使用 。 为了简化开发 , TFLite GPU 委托添加了一些修改 , 首先在运行时检查 OpenCL 的可用性 , 如果可用 , 将使用新的 OpenCL 后端 , 否则将退回到现有的 OpenGL 后端 。
【技术编程|快 2 倍,TFLite 推出基于 OpenCL 的 Android 移动 GPU 推理引擎】实际上 , OpenCL 后端自 2019 年中期以来一直存在于 TensorFlow 存储库中 , 并且通过 TFLite GPU delegate v2 无缝集成 。
推荐阅读
- 小龙虾|三农探析:池塘养殖小龙虾如何高产?高产养殖技术全解析
- 春分,快手艾草青团的用料,没有一点难度,软糯可口,超简单又好吃的艾草青团
- 芝士白汁意粉好吃下饭的小秘诀,快快学起来
- 几道家常菜,食材健康,做法简单快捷,一年四季适合吃的
- 简单快手又下饭的芹菜肉末炒粉丝,吃起来那叫一个香
- 几道很适合晚餐吃的素菜,快点学起来吧
- 大火快炒即可,做法简单,春天的韭菜鲜嫩有味儿,还不容易长胖哦
- 韭菜|韭菜高产栽培要点有哪些?巧用2个方法,芽都长得快根扎得深
- 健康又快捷的早餐首选,中式汉堡,自己做也很好吃
- 派大星|派大星入侵青岛海域几天后,快被吃光了…
