FPGA与GPU在神经网络构建中的对比研究

时间:2025-08-02  作者:Diven  阅读:0

介绍如何将一个具体的神经网络用于睡眠追踪,并将其映射到FPGA上。

FPGA与GPU在神经网络构建中的对比研究

当代的CPU按照一维方式进行计算,顺序执行指令,并将算法分解为逐条加载和执行的指令。未来的计算发展趋势表明,我们将越来越多地依赖硬件加速器来支持并行执行,这将成为计算的常态。这种发展趋势将统一算法和硬件结构的利用,从而实现更快、更高效的解决方案。

在这个发展趋势中,支持二维计算的GPU的崛起已经部分实现了这一趋势。GPU具备大规模并行计算的能力,使得许多原本难以并行化的应用程序性能得到大幅提升。

GPU只能在特定情况下加速特定的算法。通过互连的CPU和各种硬件加速器实现超优化将成为可能。FPGA将成为这个未来的重要组成部分,FPGA允许通过对硬件结构进行编程来实现极度定制化的二维计算。

【左图】展示了CPU如何通过串行执行逐个指令来解决问题的过程。【右图】展示了GPU、FPGA和ASIC等硬件加速器如何在空间和时间上进行二维计算。

本文为大家展示如何将一个具体的神经网络用于睡眠追踪,并将其映射到FPGA上。更重要的是演示将硬件映射到算法所需的关键工具,介绍如何实现异构计算。

1 睡眠追踪:铅笔尖上的神经网络

这里制作了一个基于可穿戴FPGA的睡眠追踪器。在这个过程中,建立了一个流水线,能够将最初用Python(Keras)描述的神经网络映射到硅芯片(FPGA)上。从数据采集到神经网络预测,整个睡眠追踪过程完全在一个微小的FPGA上运行,没有处理器参与。

利用密歇根大学(Walch等人,2019年的《睡眠》期刊)开发的经过同行评审的算法实现。这是首个开源的睡眠数据集和相应的算法存储库。

使用来自该项目的有标签数据对这里的FPGA神经网络(NN)核心进行了验证。使用的神经网络是一个多层感知器,以加速度计数据、心率和昼夜节律数据作为输入,并以91.3%的整体准确率预测清醒、快速动眼(REM)睡眠和非快速动眼(non-REM)睡眠。

FPGA睡眠追踪器的高级架构图。在前端,STM IMU芯片是连接到FPGA的数据源。在后端,可以连接一个主机计算机来读取数据并向睡眠追踪器发送命令。从头开始使用SystemVerilog自己开发了采样器、特征提取器、NN核心和UART核心。这能够实现一个在微小FPGA上可部署的高效解决方案。

构建的参数化定义的FPGA NN核心是独立于供应商的,并且适用于超出此应用范围的其应用,因为流水线允许在一定约束条件下轻松更新模型形状和参数。

2 可适应加速器上二维算法的未来

如今,部署可适应加速器(如FPGA)是一项高摩擦且耗时的任务。将从今天的实践和未来的改进角度描述FPGA开发的三个方面。

2.1 二维算法将以高级方式(例如Python)进行描述并自动部署

编写FPGA代码是一项神秘的任务,需要不同于数据科学家和大多数软件工程师的专业知识。对于本来可以极大受益于基于FPGA的二维加速的团队来说,这可能成为一道阻碍。能够使用熟悉的高级语言(如Python)描述针对FPGA的算法对于普及FPGA的使用非常重要。FPGA专家也将从这种基础设施带来的主要效率提升中受益。

要在应用中部署一个新的睡眠追踪器网络,用户只需运行一个脚本并轻微修改几个文件。无需具备硬件知识,也无需编写新的SystemVerilog代码。

神经网络部署流程使非FPGA专家能够训练新模型并部署到FPGA上。流程的步骤包括训练和导出Keras模型,使用脚本将输出模型解析为FPGA编译器工具链所需的数据,更新顶层FPGA项目文件中的模型常量,然后重新编译FPGA比特流。

这有效的原因在于只允许使用高度约束的模型。更通用的高级综合(HLS)工具,如赛灵思(Xilinx)的Vitis HLS和谷歌的XLS,将允许用户提供要部署到可适应加速器的通用高级算法描述。

2.2 将以Python等语言高效地测试和调试二维算法

仿真、验证和调试是FPGA应用设计过程中关键的部分。这些过程也将从高级接口和工具中得到重大改进。

睡眠追踪器应用的顶层测试平台图。能够使用Cocotb和Python进行测试、验证和调试FPGA设计,这是一大福音。Python的异步/等待语法的便利性以及在Python中轻松模拟子组件/导入测试数据的简易性极大地加快了我们的工作。

已经取得了巨大的进展。例如,虽然直接在SystemVerilog中编写了所有组件,但在所有的离设备验证和测试平台(对每个模块和整个睡眠应用)上都使用了Cocotb,而从未离开过Python。借助Cocotb,可以在Python生态系统中使用周期精确的仿真,这对于FPGA验证非常重要,而且对开发人员非常高效。

2.3 Rust将成为连接异构系统的粘合剂

嵌入式工程师常见的情况是在硬件加速器(如FPGA)和主机CPU之间建立通信。这项工作因其繁琐和容易出错而臭名昭著。

在Rust中构建了FPGA睡眠应用程序的设备驱动程序和更高级的Session API。前者实现了自定义数据包协议,而使用后者创建了各种与FPGA睡眠应用程序交互的程序。Rust是一个很好的解决方案,因为其类型系统和静态检查使得编写安全的低级代码和符合人体工程学的高级API变得更加容易。本演讲的后半部分将详细介绍其中一些特性。

相信Rust是将异构计算系统连接在一起的最佳选择。在这个配件中,Rust将提供低级通信的安全性,减少驱动程序的脆弱性,并为算法之间跨硬件边界进行通信提供人体工程学的API。

将Rust作为CPU <-> FPGA的粘合剂的展望,包括针对常见I/O类的代码生成设施。

审核编辑:黄飞

 

猜您喜欢

引言该多功能测试箱是一种新型专用测试仪器,其用途是为某一专用产品进行调试、维护而设计开发的,本测试箱的研制成功为生产和使用该专用产品的单位提供一种快速、高效的...
2020-08-07 17:46:00

DCDC转换器,是现代电子系统中重要的关键组成部分。对于一般受众而言,理解其类型及功能可以帮助您更好地选择和使用电子设备。本文将介绍不同类型的DCDC转换器,以...
2024-07-24 00:00:00


固态电容是电子元件。在电路中起到重要作用。了解固态电容的参数很重要。本文将介绍如何看固态电容的参数。容值标识固态电容上有一个数字。这个数字表示电容值。常用单位是...
2025-04-12 17:30:36

防静电袖套是专为防止静电损害而设计的保护装备,应用于电子、半导体等行业。在生产和组装过程中,静电可能导致电子元件的损坏,甚至引发安全隐患。防静电袖套采用高导电性...
2012-03-25 00:00:00

汽车电器系统的安全性愈发重要,保险丝作为汽车电路的保护装置,其质量直接关系到车辆的安全运行。利康作为知名的汽车保险丝制造商,旗下拥有多个品质优良的品牌系列,深受...
2023-04-14 20:40:30


立铣刀是常用的切削工具,应用于金属加工和机械制造中。根据不同的分类标准,立铣刀可以分为多种类型。按刀具的材质来分类,立铣刀主要分为高速钢立铣刀和硬质合金立铣刀。...
2013-11-09 00:00:00

电子元器件的质量和性能成为衡量产品优劣的重要标准。作为电子元件中的关键部件,电子排阻在电路设计和应用中有着着重要作用。长兴电子排阻作为行业内知名品牌,凭借其很好...
2022-07-17 17:14:10

其配件/支架是指在特定设备或工具的使用过程中,提供支持、固定或增强功能的附加组件。这些配件通常用于提高设备的稳定性、灵活性和使用便利性。例如,在摄影领域,三脚架...
2017-07-28 00:00:00