电子说
将机器学习代码放在哪里——在云中、边缘设备上或前提上——总是需要权衡。这里有一些提示。
工程师经常需要就代码的放置位置做出重要决定:在云中、边缘设备上或本地。这个决定总是涉及权衡——考虑到适用于每组情况的软件、固件、开发工具和硬件的正确组合。在 Samsara 的机器学习和计算机视觉 (ML/CV) 团队中,我们构建模型并开发算法,帮助我们的客户提高其运营的安全性、效率和可持续性。例如,构建应用程序以实时检测和警告有风险的驾驶行为,并最终降低道路事故的频率。
在寻求构建 ML 解决方案时,运输、仓储或制造等行业的运营环境构成了独特的限制。例如,远程位置可能会因连接受限而出现瓶颈,或者拥有无法运行最新最好的模型的过时技术系统。这些限制,再加上这些应用程序的安全关键方面,需要低延迟、计算效率高的 ML 推理,因为往返网络延迟和参差不齐的蜂窝覆盖将消除在云中完全实现这些功能的可能性。因此,除了保证模型的准确性之外,模型还必须在与边缘硬件平台相关的更严格的计算、内存和延迟范围内运行。
可以想象,在为此类边缘部署选择模型时,需要分析和考虑许多权衡。以下是您可能会遇到的一些常见问题,以及如何处理它们。
首先,您必须考虑 ML 引擎的计算吞吐量和准确性之间的权衡。同样,由于蜂窝网络覆盖范围参差不齐,您无法在云中实现所有内容并相信数据可以可靠地交付。在车载高级驾驶员辅助系统 (ADAS) 的情况下,您也不能让笨重的摄像头或处理器挡住车辆的仪表板。您需要权衡这种权衡:一个更紧凑的平台(例如,类似于智能手机中使用的处理器),具有专门的片上系统硬件,可以处理图像和信号处理,同时仍然保留大量处理ML 模型有效运行的空间。
使用这个更紧凑的平台,您必须考虑您的功率预算,尤其是任何基于移动的应用程序。运行程序所消耗的功率越多,您必须消散的热能就越多,电池消耗的电量就越多。某些硬件协处理器支持某些指令集,并且每个计算单元的功率效率非常高。但是,并非所有数学运算都可以在这些指令集中准确地构建。在这些情况下,您必须回退到更通用的计算平台(如 GPU 和 CPU),这些平台支持更多的数学运算,但更耗电。
移动友好型架构旨在利用硬件加速(例如 DSP),可以减少整体模型大小和内存消耗,但仍为您使用它的产品应用程序提供足够好的精度。在这些架构中,您再次面临一系列决策,包括模型准确性/延迟权衡以及是构建自己的 AI 解决方案还是利用外部 AI 服务提供商来训练和测试您的 ML 模型。
接下来,重要的是要考虑您的模型如何集成到所选硬件中。因为所有处理器都有不同的指令集来支持特定的操作,所以查看每个硬件平台的文档以了解这些优势如何影响您的特定代码会有所帮助。每个部署环境都有自己的一组内置特性。例如,tflite、TensorRT、SNPE 等有不同的支持操作集,所有这些都略有不同。无论您最终使用哪种芯片组,您仍然必须将所有数学计算硬塞到将执行这些计算的最终硬件中。
您可能会遇到的一个问题是部署环境可能不支持网络训练时使用的所有网络操作和层。此外,某些操作没有硬件加速实现,迫使您在 CPU 上运行这些元素,这可能会造成内存和性能瓶颈。其中一些不兼容性需要在训练过程中通过修改模型架构本身来解决,而另一些则需要在将模型转换为硬件兼容格式时加以解决。
最后一步是对最终模型版本进行基准测试,并将性能特征与原始规格进行比较。你必须要有创意并精简你的模型,这样它才能以低延迟运行。这包括删除模型操作并将不兼容操作的子图替换为硬件支持的操作以更快地运行。其他策略包括通道修剪、层折叠和权重量化。
归根结底,有时您可以让您的模型同时在设备和云中运行。但是,当您受到底层硬件性能特征、网络延迟和准确性要求的限制时,我们应该考虑在哪里以及如何运行模型。分割模型执行以在边缘设备或云上的后端服务中运行仍然是一门艺术,而不是科学。一个好的产品将整合对解决方案功能和客户需求、硬件限制以及平衡行为的深刻理解,以制定满足这些需求同时尊重物理约束的模型。
— Sharan Srinivasan 和 Brian Tuan 是 Samsara 机器学习和计算机视觉工程团队的软件工程师,Samsara是一家位于旧金山的全球互联运营云公司。在 Samsara,Srinivasan 和 Tuan 负责使用 Tensorflow、OpenCV、Pyspark 和 Go 解决各种机器学习以应对计算机视觉挑战,以构建在边缘运行的模型。
审核编辑 黄昊宇
全部0条评论
快来发表一下你的评论吧 !