Tf面试问题
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,也能发挥全部功能。
常量内存):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后端。
事实上,OpenCL backend从2065438+2009年中期就已经存在于TensorFlow repository中,它通过TFLite GPU delegate v2无缝集成。
另外,眼下正是“金九银十跳槽期”,很多朋友都跃跃欲试。对于程序员来说,需要学习的知识和技术有太多的困难。要想被面试淘汰,只能提前做好复习计划,认真刷题,在学习中不断提升自己。个人建议面试前给自己一个完整的知识梳理和刷题必不可少。做知识梳理可以加深你对原理的把握,而刷题可以提高你技术面试的广度和深度。
记住,永远只是我们适应环境,而不是环境适应我们!
附上我之前收集的20套安卓面试问题(包括BAT、小米、华为、美团、滴滴)和我自己的安卓复习笔记(包括安卓基础知识点、安卓扩展知识点、安卓源代码分析、设计模式总结、Gradle知识点和常见算法问题总结* * * 732页)。
腾讯安卓面试问题(Java部分)
腾讯安卓采访真题(安卓部分)
一二线互联网公司安卓面试问题分类概述