电子说
现场可编程门阵列 (FPGA) 以加速人工智能/机器学习应用而闻名,但它是如何在 FPGA 中实现的,有哪些不同的方法?让我们探索工程师的设计空间。
人工智能 (AI) 是云和边缘应用程序中的热门话题。在许多情况下,人工智能可以实现更安全、更高效和安全的系统。人工智能已经存在很长时间了,它于 1956 年由约翰·麦卡锡 (John McCarthy) 在第一次人工智能会议召开时首次使用。虽然几十年来进行了大量研究,但仅在最近 5 到 10 年,人工智能系统才从实验室和研究转移到产品路线图和产品中。
在云和边缘环境中,部署最广泛的 AI 形式之一是机器学习 (ML)。机器学习是对计算机算法的研究,它允许计算机程序通过经验自动改进。这方面的一个例子是为 ML 网络提供带有标签的图像数据集。机器学习算法识别图像的特征和元素,以便在输入新的未标记的、以前未见过的图像时,ML 算法确定图像包含任何已学习特征和元素的可能性。可以训练此类 ML 算法来检测图像中的对象、处理语音中的关键字以及分析传感器数据的异常情况。典型应用包括视觉引导机器人、车辆自主操作以及工业和安全关键系统的预测。
因此,ML 学习算法分为两个要素,第一个是针对训练数据集对网络进行训练。第二个是训练网络领域的部署,这些元素分别称为训练和推理。训练准确的模型需要一个带标签的大型数据集,并且通常在基于云的 GPU 上执行以加速训练过程。设计工程师可以跨从 MCU 到 GPU 和 FPGA 的一系列技术部署训练有素的网络。
在 FPGA 中嵌入 AI
几个非常流行的框架——Caffe、TensorFlow。和 Pytorch——帮助训练和部署 AI/ML 系统。这些框架用于网络定义、训练和推理。
许多基于边缘的人工智能系统的关键要素之一是能够在确定的时间范围内执行推理。例如,自动驾驶汽车必须快速检测车辆、障碍物和行人以防止碰撞。这需要一个既响应又确定的解决方案,响应是因为传感器数据必须以最小延迟快速处理,确定是因为每个输入的响应时间必须相同并且不依赖于系统操作条件或资源使用,例如,使用共享 DDR 内存会减慢响应时间。
由于响应性和确定性的要求,基于边缘的解决方案的开发人员通常以 FPGA 或基于异构 SoC 的解决方案为目标。这些为开发人员提供了可编程逻辑,是实现机器学习网络的理想选择,因为它的并行特性支持响应式应用程序和非常确定的解决方案。
在可编程逻辑中实现 ML 推理时,可以采用两种方法。在使用浮点数学开发和训练神经网络时,无论采用哪种方法,FPGA 或异构 SoC 中的实现通常都使用定点实现。从浮点数到定点数的转换过程称为量化,推理精度会略有下降;然而,对于大多数应用程序,可以使用量化的权重和激活来执行额外的训练以恢复准确性。
第一种方法直接在可编程逻辑中实现神经网络。为推理训练的权重被加载到网络中。这可以在运行时或在设计的编译/综合期间实现。
这些神经网络的一个例子是 AMD-Xilinx FINN 网络,它可用于在 FPGA 中实现量化神经网络。这些量化神经网络被实现为具有二进制权重和两位激活的量化神经网络。
有了量化神经网络,神经网络可以在 FPGA 中实现,资源更少,因为不需要外部 DDR 或 SoC 支持。使该方法成为空间、组件和成本非常宝贵的受限开发的理想选择。虽然它需要更多的专业知识才能集成到整体解决方案中,但它可能非常有效。可能使用此类方法的典型示例可能是工业机械的预测,例如轴承磨损或振动等。
在 FPGA 逻辑中使用神经网络直接实现的替代方法是使用高度专业化的神经网络加速器。神经网络加速器在可编程逻辑中实现,并与具有高带宽链路的 DDR 存储器以及异构 SoC 中的专用处理器紧密耦合。
在使用神经网络加速器的应用程序中,它们由软件应用程序提供网络和权重/激活和偏差。因此,这使得 ML 推理更容易集成到整个应用程序中。神经网络加速器的一个例子是 AMD-Xilinx 深度学习单元,它可以与 Pytorch、Caffe 和 TensorFlow 中定义的网络一起工作,并为应用程序执行所有量化、再训练和程序生成。这样可以更轻松地集成到正在开发的应用程序中。这种方法的典型应用是基于视觉的高性能应用,例如视觉引导机器人、智能城市解决方案,当然还有提高汽车 SAE 自主水平。
最高的准确性和性能来自于使用专门的神经网络加速器,并且易于集成通常提供更好的整体解决方案。因此,这种方法被多家供应商用于他们的 AI 解决方案。这种方法更容易与更高级别的软件框架和抽象堆栈集成,这是利用整体性能的关键,因为 AI 通常只是整体解决方案的一小部分(但很重要)。
最后的想法
很多时候,选择哪种解决方案取决于最终应用,即使 AI 可能是主要的营销元素。在现实世界中,人工智能通常只是整个解决方案的一小部分,因为传感器接口、预处理、执行器驱动和构成解决方案的其他元素也会有自己的限制和要求。
可编程逻辑使开发人员能够构建具有响应性和确定性的 AI/ML 解决方案。通过将这些解决方案与行业标准框架相结合,开发人员可以使云和边缘 AI/ML 应用程序更安全、更高效、更安全。
审核编辑 黄昊宇
全部0条评论
快来发表一下你的评论吧 !