首页 > 技术 > 内容

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

时间:2025-12-19  作者:Diven  阅读:0

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

当代的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类的代码生成设施。

审核编辑:黄飞

 

猜您喜欢


SOIC28_9.6X4.4MM_EP是一种常见的集成电路封装,广泛应用于电子产品中。SOIC(SmallOutlineIntegratedCircuit)封装...
2025-02-24 16:55:26
消解仪是应用于实验室的重要仪器,主要用于样品的消解处理。根据不同的工作原理和应用领域,消解仪可以分为以下几类:按加热方式分类,消解仪可分为电热消解仪和微波消解仪...
2011-08-31 00:00:00
尖头圆锉是常用的手工工具,应用于木工、金属加工等领域。主要功能是对材料进行打磨和修整,但不同类型的尖头圆锉之间存在一些显著的区别。尖头圆锉的形状和尺寸各异。常见...
2008-04-12 00:00:00
PT100热电阻由纯金属铂制成,故称铂热电阻,是中低温区最常用的一种温度传感器,它的主要特点是测量精度高、稳定性好、可靠性高、使用寿命长。与此相比,热电偶则在高...
2023-09-29 15:15:00
二极管是常见的电子元件,应用于整流、信号调制和保护电路等方面。了解如何测量二极管的好坏,对于电子爱好者和专业技术人员来说都是非常重要的。本文将为您详细介绍测量二...
2025-04-09 06:30:36
NTC热敏电阻作为温度检测和控制领域的重要元器件,得到了应用。VISHAY(威世)作为全球知名的电子元件制造商,其NTC热敏电阻产品在市场上享有较高的声誉。VI...
2014-03-07 13:29:16
划线器是实用的工具,应用于多个领域。在建筑和装修行业,划线器用于标记墙面、地面或其表面的施工线,确保施工精度和美观。在制造业中,划线器帮助工人准确地划定切割线,...
2010-01-26 00:00:00
宏达电子分流器作为重要的电子元件,应用于电路保护、电流测量及负载分配等领域。本文将深入探讨宏达电子分流器品牌的国家归属问题,通过多个维度解析其品牌背景、发展历程...
2024-05-21 04:39:24
随着电动车的普及,保险丝作为电动车电路中的重要保护元件,其安装位置和接法受到关注。正确安装保险丝不仅能有效保护电动车电路免受短路和过载损害,还能延长电池和电机的...
2025-12-11 18:00:11