上一周,我发布了一篇“当AI在STM32这类单片机上跑起来,你的老经验就不值钱了!”文章,主要是讲述了要让AI大模型运行到MCU中,去实现主动思考,主动判断。让单片机学会思考。

上篇文章引发了广泛的讨论和转发,也是本公众号以来为数不多的几篇10K+阅读量的文章。针对文章中观点的讨论,分为了两派:其中80%以上是支持将模型部署到MCU中的,有小部分人对“将“AI”部署到单片机(STM32 MCU)中”有非常大的疑惑。其中主要针对下面的几个问题:

  • 为什么STM32这种MCU也要“跑AI”?

  • STM32 这类主频不过百兆、存储只有 KB/MB 级的 MCU,明明算力有限,为什么还要费劲让它 “跑 AI”?

  • 不如直接用云端计算?

  • 为何不适用更强的 NPU 芯片?

  • ……

今天我将重点回复一下大家的一个疑问:为什么STM32这种MCU也要“跑AI”?

在回答问题之间,我们需要要先澄清一件事:当我们说要把“AI”塞进MCU的时候,不是把一个会背百科全书、会写作文的大模型全部放到MCU中;

而是针对一个特定的场景、特定的任务训练出来的小模型。这个小模型只干一件事:

  • 比如听振动判断机器是不是异常;

  • 看波形判断是不是漏水;

  • 感知动作判断是不是摔倒;

  • 闻一下气体传感器的数据判断是不是泄漏。

  • ……

它不需要“什么都懂”,它只需要“在关键时刻不出错”。可能很对人就会说了:上面的几个内容不是增加几个判断就可以了?

在这里,我们需要举一个非常非常通俗易懂的例子。

一:判断小女孩在走路还是在跑步?

图片

请判断一下上面小女孩的动作,是“走路”还是在“跑步”?当我们看到类似问题的时候,按照传统算法的逻辑是下面的图片:(假设我们能够拿到的输入参数只有速度 speed)。

图片

于是,我们很自信的写出了下面的逻辑:

图片

从现在为止,我们很自信,因为逻辑“看似”正确。

二:难度升级

请判断下面小女孩的动作?

图片

同样的逻辑,通过判断速度也很容易达到:

图片

上面的逻辑,在不进行深究的情况下,看似也是可以。

如果深究的话或者说我们的系统真正运行到实际应用场景中的时候,上面的逻辑是不能满足所有情况的,比如:当小女孩在慢速骑车的时候,判断是错误的。

因为我们人为设定了很多我们认为的判断条件在逻辑中,当判断条件发生改变的时候,或者说在同样的动作不能通过我们设定的“判断条件”进行判断的时候,我们的逻辑就是错误的。

此时,如果我们想要系统仍然能够正确的运行(输出正确的小女孩动作),那么我们就需要耗费很多的人力、物力去修改逻辑,修改判断条件(阈值、算法)。

三:难度再次升级

请判断下面小女孩的动作?

图片

图片

如果再用原来的逻辑,肯定是很难了,会非常非常费解,最后扛着杆子的是什么鬼?

四:解决方案:机器学习

基于上面的例子,我们会发现,在我们设计的产品的实际运行场景中,仅仅使用几个逻辑判断、几个滤波算法、调整几个阈值是不能解决所有问题的。所以,我们就需要引入机器学习。

图片

还是针对上面的例子,机器学习就是我们需要提前将很多的女孩走路、跑步、骑自行车、打高尔夫球等动作的数据(模型参数:含权重、偏置等各类参数)给到“大模型”。那么就会有类似的数据。

图片

图片

大模型会将所有动作的数据进行学习、推理、计算,然后区分出每个动作标签。至此,大模型已经搞定。

当我们将大模型部署到MCU中之后,当我们将小女孩的真实数据作为一堆参数传给大模型的时候,大模型就会根据它自己推理和计算的数据,给出一个结果,这个输出的结果其实并不是当前动作是什么、而是当前动作的百分比。

大模型的输出其实类似于“《赌神》电影中,电脑分析高进的牌是什么”。

图片

通过上面的例子,我们应该清楚了:为什么STM32这种MCU也要“跑AI”?其实总结一句话就是:为了解决现实中非常多的、比较难通过简单逻辑就可以输出结果的问题。

(关于为什么不在云端,为什么不用NPU?我会再单独写文章讲解清楚。有不同意见的小伙伴,都可以在本文章下面留言、讨论)

那么,具体怎么让STM32可以运行大模型呢?怎么将我们已经训练的模型部署到STM32中呢?我会一步一步的教会你怎么实现。

欢迎加入我的实训营。手把手教你将大模型部署到STM32中。

可以扫描下图左侧的二维码联系我获取更多课程的知识内容、

也可以扫描下面右侧的二维码直接付款购买我的课程、

也可以通过下面链接直接付款购买我的课程。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐