为什么机器学习在嵌入式系统中不成功

电子说

1.2w人已加入

描述

换个角度思考,深入研究嵌入式世界以及迄今为止机器学习行业无法解决的问题

Photo by Daniel Wiadro on Unsplash

如今,机器学习达到了顶峰,并最终在各个地方得到了应用。 您可以在机场看到人脸识别系统,并在Facebook中看到个性化广告。

虽然,当我们谈论将ML与嵌入式设备结合时,仍然存在很大差距。

1.我们不了解什么是嵌入式世界

使用ML,我们曾经拥有巨大的计算能力。

AlexNet需要727 MegaFlops和235Mb的内存来处理小的227x227px图像。 例如,Google Nexus S上的ARM Cortex-A8每秒可产生66个MegaFlops。 因此,您必须等待〜11秒才能进行推断。 好慢啊!

· FLOP —浮点运算

查看更多信息:各种CNN的内存消耗和FLOP计数以及ARM内核的浮点性能及其效率的估计。

我在大学里有几门与ML相关的课程。 我们在功课上做了很多很酷的事情。 但是即使在那里我的4GB GTX1050也不足以训练所有模型。

Problem understanding is essential to build the right product

一般的ML工程师很少考虑计算资源。 此外,他/她很少关心内存使用情况。 为什么? 因为价格便宜,甚至您的手机都具有不错的CPU和大量内存。

上次聚会中的照片时,手机上是否仍然缺少内存? 想象一下,您使用的是具有256KB闪存的TrueTouch感应控制器。 是的,256KB。 而且由于现有固件,您无法使用所有这些功能。 因此,大约100KB。 查看您上一次的模型的尺寸。 可能更大。

变得有趣了吗? 让我们继续:)

当您听到"嵌入式设备"时您怎么看? 想象一下图片并牢记在心。

1.它是任何电器,甚至我的微波炉和洗衣机

Photo by Marcos Ramírez on Unsplash

嗯你是对的!

如今,几乎所有的电气设备都是嵌入式设备。 它内部可能具有一个或几个控制器来负责每个确切的功能:触摸感应,发动机状态监控等。

2. Arduino或/和Raspberry PI

Photos by Harrison Broadbent on Unsplash

MAKEBLOCK Arduino MegaPi 编程学习主控板 10050

¥209

购买

恭喜,您再次正确!

它们是用于DIY项目的最受欢迎和使用最广泛的工具包之一。 是的,它们是嵌入式设备。

3. Jetson Nano和类似产品

Photo by NVIDIA

moft 英伟达NVIDIA Jetson Nano TX2嵌入式开发套件nvidia AGX开发板 Jetson Nano【开13%增票】

¥846

购买

再次正确。

这是一个特殊的开发套件" aka mini-computer",专门为在其上运行ML模型而开发。 它非常强大,说实话,超级性感。

但是这里有些遗漏

我有很多朋友正在做很棒的硬件宠物项目。 他们通常在那里使用Arduino或STM32(又名Hardcore

Arduino)。

Smart helmet, Robotic car and ALU

我认识几个对Jetson Nano和类似设备感到兴奋的AI工程师。 他们被认为是嵌入式AI的未来。

Photo by Nvidia

现在。 请考虑"在生产级别使用了多少这种设备?"

答案-小

考虑一下您家中有多少个电气设备。 然后在您的汽车中添加大量的控制器。 您工作中的安全系统。 我可以继续很长的清单。

每个设备都有一个控制器。 通常,它是微型且超级便宜。 它无法与Jetson或Raspberry的资源和功能相提并论。

假设您有一个微控制器。 它的主要任务是处理您的手指触摸屏幕。 它具有ARM Cortex-M0处理器,256KB内存(其中只有80–120可用)。 这是一个实时系统,因此您可以花很少的时间来推断模型,例如100微秒。 您的目标是在那里改善或替换某些算法。

祝您好运,欢迎来到"嵌入式AI"世界。

嵌入式世界"由资源有限的1-2美元成本的芯片组成。 这就是在生产水平上使用的东西。

2.纯基础设施

我一直在从事上述项目。 一切都很棒。 我开发了一个可能必须适合该微控制器的小型网络。

Photo by Matty Lynn Barnes on Unsplash

是时候开始将模型从我的电脑转移到设备了!

1.量化。

该处理器无法执行浮点数运算。 即使可以,我们也不会使用它,因为这是一个非常复杂的操作,需要很多时间。

因此,我对权重量化进行了模型化-将值的连续范围转换为离散值的有限范围。

你猜怎么着? PyTorch和TensorflowLite都不完全支持它。 它们不支持所有激活函数(尽管我使用了非常简单的HardTanh)。 PyTorch甚至无法将量化模型保存到文件中。

所以,我不得不手工做。

2.推理代码生成

您想在该控制器上运行模型。 对? 因此,您需要使用C代码进行模型推理。

很难过,但您必须手动完成。 为什么? PyTorch没有推理代码生成的功能。 相比之下,TFLite具有功能,但功能相当有限,并且不支持常见的激活函数。

因此,我再次手动完成。

我在工作中遇到了很多这样的情况。 这不是PyTorch或TF方面的重拳,而是"呼救声"。

*** ML社区的另一面是,正在寻找"嵌入式AI"的专业工具,但还找不到它。 ***

有什么好处吗

我看到大型半导体公司对AI产生了极大的兴趣,它们正在做非常有价值和重要的事情。 它们值得另一篇文章,因此我列出其中一些,以免使本文太长。

CMSIS-NN —用于Arm Cortex-M CPU的高效神经网络内核

产生高效推理代码的编译器,这些推理代码根据您拥有的硬件进行了优化

还有很多其他很酷的东西

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分