边缘计算(人工智能的实现)

EDGE COMPUTING
基于边缘计算的人工智能实装技术开发
通常,人工智能算法是使用高性能计算机设计的,人工智能的设计人员负责在高性能机器上制作运行的软件。 另一方面,人们期待着人工智能最终会搭载在机器人和汽车等移动设备上。
三荣高科技秉承“边缘计算”的理念,磨炼在目标设备上实装人工智能的技术。“边缘计算”理念是一种用位于网络系统整体的前端(边缘)的计算机或FPGA在高性能机器上运行处理的理念。

人工智能实装服务的研究开发

除了人工智能的设计外,我们也在推进“人工智能实装服务”的开发。通常,人工智能的算法是用运算能力高的机器来设计的,人工智能的设计人员负责在高性能机器上制作运行的软件。 另一方面,人们期待着人工智能最终会搭载在机器人和汽车等移动设备上。理论上如果可以将高性能机器原封不动地安装到移动装置上是最好的,但是由于机器的重量和尺寸问题,装置的移动能力会显著地受损,所以不现实。虽然也有通过无线通信与外部的高性能机器连接的构想,但是这种方法受限于通信的延迟时间问题,会使系统整体的处理速度降低,从而导致编写的人工智能算法无法以正常速度进行实际运行。

边缘计算的构想

因此,需要的是用“计算机”或“FPGA”来实现人工智能算法的一部分或整体。计算机或FPGA通过和高性能机器的通信连接,需要实时性的部分用计算机或FPGA处理,可以延迟的部分用高性能机器处理。像这样,由位于网络系统整体的前端(边缘)的计算机或FPGA,在高性能机器上运行处理的这种“边缘计算”的构想正在不断扩展,本公司也在磨练实装它的技术。为了在边缘设备上实装人工智能算法,需要将算法轻量化为可搭载在计算机或FPGA上的形式,并将处理内容适当分割为软件和数字电路的技术。作为一项基本技术要求我们熟练掌握设备。
将CNN安装到CPU和FPGA上

将神经网络搭载到Zynq上的实装技术

我们在其他项目的“人工智能的设计~深度学习~”中所示的那种神经网络搭载到Xilinx公司的Zynq上。我们在积累这些实绩的同时,推进实装技术的获得。(关于使用Zynq的系统的开发,请参考“数字与软件的协同设计~Zynq・Intel SoC~")。

轻量化的措施

为了将神经网络轻量化为可搭载在Zynq等目标设备上的形式,首先要预估在与高性能机器相同精度下运算时,所消耗的资源。例如,要保持神经网络内各系数所需的存储量(缓存器的大小),用FPGA实现主要的运算部分所需的数字电路的规模(DFF和查找表的数量)等。同时,根据一些假设计算处理时间(延迟和吞吐量)。CNN型神经网络中存在大量用数字电路并行的乘法累加运算,因此处理时间与并行数(即数字电路的规模)有折衷关系。

资源的探讨

然后,根据估算的数值,研究为搭载到目标设备上应减少多少资源。重点是要将运算的位数宽度设置为多少。当在数字电路中实行并行化时,基本上是用定点而非浮点进行运算,因此首先将神经网络的运算转化定点运算。然后,确认转换定点时产生的神经网络输出结果的误差。例如,在从道路图像中检测中央线的神经网络的情况,先将道路图像输入定点化的神经网络,然后输出中央线的位置信息。
该值与在高性能计算机上执行的浮点运算结果之间的差相当于误差。 根据这个误差和由比特宽度决定的资源量的权衡关系,决定最终的比特宽度。
 
但是,要实现满足规格精度的比特宽度,有时需要超过目标设备容量的资源量。在这种情况下,则必须返回到人工智能设计阶段,检查神经网络的配置,然后重新进行深度学习。

实装

当资源量和处理时间达到目标后,则进入具体实施阶段。
使用Xilinx公司的SDSoC等高层次综合工具生成数字电路。如果生成的数字电路的尺寸和延迟比预想的大很多,则手动设计RTL。
高位合成ツール SDSoC
高层次综合工具SDSoC
如上所述,具体实装流程与普通系统几乎相同,但为了理解折衷关系并做出适当的判断,实装人员需要理解人工智能。另外,如果发现目标性能无法实现的话,很大程度上也是由实装负责人判断是否返回到人工智能设计阶段。