最近业界一直在大力推动将人工智能(AI)嵌入到嵌入式系统中。其中一些是用于基于云的AI,如亚马逊的Alexa语音服务,但越来越多的引进集中在基于硬件的AI上。许多供应商已经发布了处理器和协处理器,在其上提供加速或专用卷积计算硬件来支持边缘运行类神经网络软件。这样,嵌入式系统就能够在无需云连接的情况下开始执行AI算法。
这一趋势对嵌入式系统开发人员意义重大。越来越多的处理器提供AI表明,嵌入式系统的编程方式正在发生根本转变。这与45年前微处理器的问世一样,又是一场意义重大的范式转变。
差不多在我刚上大学那会儿,英特尔推出了第一款商用微处理器4004,而在我当工程师的第一年,看到处理器时钟速率飙升到1MHz!在微处理器到来之前,复杂系统的控制需要通过使用晶体管和简单的逻辑门,设计不灵活的梯形逻辑和状态机来实现。但使用4004,开发人员创建的硬件设计,只需要更改内存器件的内容,即可对其进行配置和改变用途。突然间,硬件设计简化了,系统设计也同步加速了,甚至可以切实实现更快、更复杂的行为。用软件代码取代专用逻辑,成为嵌入式系统设计的核心方法;没能快速跟上潮流的开发人员发现自己被边缘化了,只能接手小众应用。
AI有可能对当今的嵌入式系统设计人员产生同样影响。系统操作变得愈加苛刻,系统行为也变得愈加复杂,这使得处理器编程的简易性变得比其性能特征更为重要。同时,人们对复杂系统行为的需求一直在增加,这对开发人员编写可靠代码来满足需求形成考验。
这就成为了AI的切入点。开发人员可以使用AI来“教”嵌入式系统完成任务,而不是试图设计算法来实现所需任务。如果使用传统的嵌入式编程技术,为相机系统编写代码,让其可以可靠检测视野中的所有人脸,是项艰巨且容易出错的任务。然而,借助AI系统,通过训练托管的AI来完成任务,然后在加装AI的处理器上实现由此得到的神经网络,可以快速取得惊人成果。
对于传统的嵌入式开发人员,这使他们面临一个与70年代中期的逻辑设计人员所面临的相同选择:学习新方法,或去冒出局的风险。
令人高兴的是,眼下的情况有些不同。开发人员不需要成为AI专家就可将AI应用到其设计任务中,就像他们不必知道如何编写机器代码来对微处理器编程一样。开发人员只需知道如何使用AI工具,了解何时应用何种方法来实现其设计目标即可。
但是,这要求开发人员去获得新的技能并拓展新的思维方式。他们需要学习卷积神经网络、机器学习、AI训练方法以及如何将系统行为划分为AI和算法域等课题。当系统的关键操作特性是派生得到且未定义的,且其中间操作是隐蔽的,以至不能用传统的软件去分析系统时,他们还需要知道如何测试、调试和验证系统行为。
AI系统工作是通过设置神经网络的权重来实现期望的结果,同时其可能含有隐藏层。由于这两个属性,我们很难用传统方法对其进行分析和调试。
此外,情况会继续变得复杂。目前,嵌入式AI将主要是针对早期训练阶段定义的相对固定的网络进行实现。但随着AI边缘处理的性能不断提高和成本下降,未来的嵌入式AI系统会越来越多地被设计为自我训练。因此,嵌入式开发人员设计的系统最初将相对简单且没有什么差异,但随着时间的推移,其将沿着具体安装所特有的路径演进,同时也仍需要母公司进行维护、调试和升级。
AI将引发嵌入式系统设计方式的大规模转变,开发人员现在就应该着手准备。这种转变不会一蹴而就,它也不会以同样的方式影响所有的嵌入式系统,因此行业有时间适应。但这种转变似乎不可避免,并且可能会长期影响几乎所有的应用领域,就像过去40年来从逻辑设计向处理器编程的转变一样。那些希望自己的设计项项都可圈可点的人,需要开始学习如何嵌入AI了。