实现网络边缘人工神经网络应用
Posted 07/05/2017 by Hussein Osman
想象一下可以区分入侵者和邻居家小狗的私人安全系统,可以扫描房间并在没有人的情况下自动关闭的智能电视以及可以在犯罪发生之前进行侦查分析和可疑行为识别的摄像头。网络边缘人工神经网络应用的潜力无限。不过现实情况是产生想法很容易,但实现起来并不那么简单。设计工程师该如何将人工智能(AI)、神经网络和机器学习的优势引入到资源有限的低功耗网络边缘设备中去呢?
一种途径是使用来自数据中心的传统训练技术在云端进行训练,然后将权重和参数下载到网络边缘设备用于“推理”。 神经网络基于“训练”过程中的实例,通过“推理”来逐步学习如何完成任务。在网络边缘领域使用推理可以最大限度地降低决策过程导致的延迟并减少网络拥塞,同时确保个人信息和隐私的安全,因为捕获的数据不会持续发送到云端。
另一种可行的途径是使用基于二值神经网络(BNN)的片上AI。BNN在工作时使用1位值而不是更多位的数字来避免使用乘法器和除法器。这可以实现使用加法来进行卷积计算。由于乘法器是数字系统中尺寸最大且耗电最多的部分,所以使用加法器来替代它们可大大节省功耗和成本。
然而,如果从事基于AI的网络边缘解决方案开发的工程师想要避免使用云端计算资源,那么他们需要找到全新的途径来实现更高效节能、更高计算效率的解决方案。微型二值神经网络(TinBiNN)是其中的一个代表。它基于二进制权重和8位激活码支持任何神经网络计算。
最近,VectorBlox Computing和莱迪思半导体的开发工程师合作开发了一个小尺寸、轻量级的二值神经网络应用。我们一起构建了一个演示系统,使用Lattice iCE40 UltraPlus 5K FPGA提供的5280个LUT中的5036个。它还使用器件提供的8个DSP模块中4个以及120 kbit RAM块和单个端口提供的128 kb RAM。我们使用硬件实现了二进制神经网络运算,作为ORCA软RISC-V处理器中的ALU。此外,处理器还增加了一组自定义向量指令以加速其他计算密集型运算,如MaxPool和激活功能。为了加速原型开发和设计测试,我们使用了iCE40 UltraPlus移动开发平台。
该系统提供了很理想的结果,误差率小于0.4%帧/秒。尽管功耗更大的Intel i7四核处理器仅需1.5ms即可完成计算,但是iCE40 UltraPlus系统要简单得多,而且功耗仅为4.5 mW。
与此同时,关于推理系统最佳部署点的争论还在进行中——到底是云端、网络中还是网络边缘设备?VectorBlox/莱迪思项目为片上AI提供了强有力的证明。使用具有RISC-V处理器的FPGA实现不仅可以降低功耗,还可以加快响应时间。此外,本地处理可以增强安全性和隐私保护。了解有关iCE40 UltraPlus机器学习演示的更多详细信息,请访问我们的网站。