机器学习实战:GNN(图神经网络)加速器的FPGA解决方案机器学习新浪科技

原标题:机器学习实战:GNN(图神经网络)加速器的FPGA解决方案

1概述

得益于大数据的兴起以及算力的快速提升,机器学习技术在近年取得了革命性的发展。在图像分类、语音识别、自然语言处理等机器学习任务中,数据为大小维度确定且排列有序的欧氏(Euclidean)数据。然而,越来越多的现实场景中,数据是以图(Graph)这种复杂的非欧氏数据来表示的。Graph不但包含数据,也包含数据之间的依赖关系,比如社交网络、蛋白质分子结构、电商平台客户数据等等。数据复杂度的提升,对传统的机器学习算法设计以及其实现技术带来了严峻的挑战。在此背景之下,诸多基于Graph的新型机器学习算法—GNN(图神经网络),在学术界和产业界不断的涌现出来。

GNN对算力和存储器的要求非常高,其算法的软件实现方式非常低效,所以业界对GNN的硬件加速有着非常迫切的需求。我们知道传统的CNN(卷积神经网络网络)硬件加速方案已经有非常多的解决方案;但是,GNN的硬件加速尚未得到充分的讨论和研究,在本文撰写之时,Google和百度皆无法搜索到关于GNN硬件加速的中文研究。本文的撰写动机,旨在将国外最新的GNN算法、加速技术研究、以及笔者对GNN的FPGA加速技术的探讨相结合起来,以全景图的形式展现给读者。

2GNN简介

GNN的架构在宏观层面有着很多与传统CNN类似的地方,比如卷积层、Polling、激活函数、机器学习处理器(MLP)和FC层等等模块,都会在GNN中得以应用。下图展示了一个比较简单的GNN架构。

但是,GNN中的Graph数据卷积计算与传统CNN中的2D卷积计算是不同的。以图2为例,针对红色目标节点的卷积计算,其过程如下:

●Graph卷积:以邻居函数采样周边节点特征并计算均值,其邻居节点数量不确定且无序(非欧氏数据)。

●2D卷积:以卷积核采样周边节点特征并计算加权平均值,其邻居节点数量确定且有序(欧氏数据)。

图2Graph卷积和2D卷积

3GraphSAGE算法简介

学术界已对GNN算法进行了非常多的研究讨论,并提出了数目可观的创新实现方式。其中,斯坦福大学在2017年提出的GraphSAGE是一种用于预测大型图中动态新增未知节点类型的归纳式表征学习算法,特别针对节点数量巨大、且节点特征丰富的图做了优化。如下图所示,GraphSAGE计算过程可分为三个主要步骤:

●邻节点采样:用于降低复杂度,一般采样2层,每一层采样若干节点

●聚合:用于生成目标节点的embedding,即graph的低维向量表征

●预测:将embedding作为全连接层的输入,预测目标节点d的标签

为了在FPGA中实现GraphSAGE算法加速,我们需要知悉其数学模型,以便将算法映射到不同的逻辑模块中。下图所示的代码阐述了本算法的数学过程。

对于每一个待处理的目标节点xv,GraphSAGE执行下列操作:

1)通过邻居采样函数N(v),采样子图(subgraph)中的节点

2)聚合被采样的邻节点特征,聚合函数可以为mean()、lstm()或者polling()等

3)将聚合结果与上一次迭代的输出表征合并,并以Wk做卷积

4)卷积结果做非线性处理

5)迭代若干次以结束当前第k层所有邻节点的处理

6)将第k层迭代结果做归一化处理

7)迭代若干次以结束所有K层采样深度的处理

8)最终迭代结果zv即为输入节点xv的嵌入(embedding)

4.GNN加速器设计挑战

GNN的算法中涉及到大量的矩阵计算和内存访问操作,在传统的x86架构的服务器上运行此算法是非常低效的,表现在速度慢,能耗高等方面。

新型GPU的应用,可以为GNN的运算速度和能效比带来显著收益。然而GPU内存扩展性的短板,使其无法胜任海量节点Graph的处理;GPU的指令执行方式,也造成了计算延迟过大并且不可确定,无法胜任需要实时计算Graph的场景。

如上所述种种设计挑战的存在,使得业界急需一种可以支持高度并发实时计算、巨大内存容量和带宽、以及在数据中心范围可扩展的GNN加速解决方案。

5GNN加速器的FPGA设计方案

Achronix公司推出的Speedster7t系列高性能FPGA,专门针对数据中心和机器学习工作负载进行了优化,消除了CPU、GPU以及传统FPGA存在的若干性能瓶颈。Speedster7tFPGA基于台积电的7nmFinFET工艺,其架构采用革命性的新型2D片上网络(NoC),独创的机器学习处理器矩阵(MLP),并利用高带宽GDDR6控制器、400G以太网和PCIExpressGen5接口,在保障ASIC级别性能的同时,为用户提供了灵活的硬件可编程能力。下图展示了Speedster7t1500高性能FPGA的架构。

如上所述种种特性,使得AchronixSpeedster7t1500FPGA器件为GNN加速器设计中所面临的各种挑战,提供了完美的解决方案。

表1GNN设计挑战与Achronix的Speedster7t1500FPGA解决方案

GNN设计挑战

Speedster7t1500解决方案

高速矩阵运算

MLP机器学习处理器矩阵

高带宽低

延迟存储

LRAM+BRAM+GDDR6+DDR4

高并发低

延迟计算

FPGA使用可编程逻辑电路,

在硬件层面确保低高并发延迟计算

内存扩展

基于4*400Gbps的RDMA,

确保在数据中心范围以极低延迟扩展内存访问

算法不断演进

在硬件层面确保算法可升级重配

设计复杂

NoC简化模块间互连并提高时序

5.1GNN加速器顶层架构

本GNN加速器针对GraphSAGE进行设计,但其架构具有一定的通用性,可以适用于其他类似的GNN算法加速,其顶层架构如下图所示。

5.2GNNCore微架构

在开始讨论GNNCore微架构之前,我们先回顾一下本文第3节中的GraphSAGE算法,其内层循环的聚合以及合并(包含卷积)等两个操作占据了算法的绝大部分计算和存储器访问。通过研究,我们得到这两个步骤的特征如下:

表2GNN算法中聚合与合并操作对比

聚合操作

(Aggregation)

合并操作

(Combination)

存储器

访问模式

间接访问,不规则

直接访问,规则

数据复用

计算模式

动态,不规则

静态,规则

计算量

性能瓶颈

存储

计算

可以看出,聚合操作与合并操作,其对计算和存储器访问的需求完全不同。聚合操作中涉及到对邻节点的采样,然而Graph属于非欧氏数据类型,其大小维度不确定且无序,矩阵稀疏,节点位置随机,所以存储器访问不规则并难以复用数据;在合并操作中,其输入数据为聚合结果(节点的低维表征)以及权重矩阵,其大小维度固定,存储位置规则线性,对存储器访问不存在挑战,但是矩阵的计算量非常大。

基于以上分析,我们决定在GNNCore加速器设计中用两种不同的硬件结构来处理聚合操作与合并操作,功能框图如下图所示:

聚合器(Aggregator):通过SIMD(单指令多数据处理器)阵列来对Graph进行邻居节点采样并进行聚合操作。其中的“单指令”可以预定义为mean()均值计算,或者其他适用的聚合函数;“多数据”则表示单次mean()均值计算中需要多个邻居节点的特征数据作为输入,而这些数据来自于子图采样器(SubgraphSampler);SIMD阵列通过调度器AggScheduler做负载均衡;子图采样器通过NoC从GDDR6或DDR4读回的邻接矩阵和节点特征数据h0v,分别缓存在AdjacentListBuffer和NodeFeatureBuffer之中;聚合的结果hkN(v)存储在AggBuffer之中。

合并器(Combinator):通过脉动矩阵PE来执行聚合结果的卷积操作;卷积核为Wk权重矩阵;卷积结果通过ReLU激活函数做非线性处理,同时也存储在PartialSumBuffer中以方便下一轮迭代。

合并的结果通过L2BN归一化处理之后,即为最终的节点表征hkv。

在比较典型的节点分类预测应用中,该节点表征hkv可以通过一个全连接层(FC),以得到该节点的分类标签。此过程属于传统的机器学习处理方法之一,没有在GraphSAGE论文中体现,此设计中也没有包含这个功能。

6结论

本文深入讨论了GraphSAGEGNN算法的数学原理,并从多个维度分析了GNN加速器设计中的技术挑战。作者通过分解问题并在架构层面逐一解决的方法,综合运用AchronixSpeedster7t1500FPGA所提供的竞争优势,创造了一个性能极佳且高度可扩展的GNN加速解决方案。

THE END
1.算法设计课程简介算法课设一般做什么学习算法设计,不仅是为了掌握具体的编程技巧,更是为了培养一种解决问题的思维方式。 推荐几款学习编程的免费平台 免费在线开发平台(https://docs.ltpp.vip/LTPP/) 探索编程世界的新天地,为学生和开发者精心打造的编程平台,现已盛大开启!这个平台汇集了近4000道精心设计的编程题目,覆盖了C、C++、JavaScript、TypeScripthttps://blog.csdn.net/m0_52796585/article/details/142836840
2.初学者指南:算法设计思路详解本文详细介绍了算法的基本概念、常见的算法设计方法及优化技巧,涵盖递归、分治法、贪心算法和动态规划等核心内容。文章深入讲解了算法设计思路,包括理解问题、分析问题、设计算法和编写伪代码等步骤,帮助读者系统掌握算法设计的全过程。此外,文章还提供了具体的案例解析和优化技巧,并推荐了常用的算法学习平台和资源。 算法https://www.imooc.com/article/358042
3.2020届计算机科学方向毕业设计(论文)阶段性汇报深度学习在视频分析中的应用 在本次汇报中,我将介绍毕设课题选定的视频分析具体任务:时序动作检测(Temporal Action Proposal)的相关内容,包括任务背景、最近研究成果、数据情况以及切入点等。我还将汇报过去一阶段的工作内容和下一阶段的工作计划。 范舟 基于强化学习的推荐与广告合并算法设计 https://zhiyuan.sjtu.edu.cn/html/zhiyuan/announcement_view.php?id=3709
4.路径规划中的DRL与OR算法:对比与展望引入机器学习的期望之一就是提高其泛化能力,即训练完的模型可以有效地应用于未曾见过的问题实例。为了提高泛化能力,对于图这种非欧几里得数据来说,通过图嵌入(Graph embedding)来抽取数据中的有效特征,通过低维的向量来表征图的节点及拓扑结构等信息,再作为后面机器学习算法的输入。而图神经网络(Graph neural network,GNNhttps://www.51cto.com/article/757803.html
5.算法教学设计算法教学设计1 【教材分析】 本节教材的地位、作用等分析。 本节教材位于高中信息技术必修模块第三章中:“算法及其实现”部分内容,本节课的学习目的是使学生体验算法思想,了解算法和程序设计在解决问题过程中的地位和作用;体验信息技术中算法的魅力,为学生选修算法模块奠定基础。 https://www.ruiwen.com/jiaoxuesheji/7729127.html
6.机器学习/人工智能大作业:手写数字识别系统(5)通过实验的锻炼,使学生进一步掌握基于卷积神经网络的图像分类问题,也进一步领会学习机器学习知识的重要意义。 二、大作业设计内容 大作业1 :手写数字识别系统。 本项目要求选择机器学习算法设计实现手写数字识别系统。手写数字识别在日常生活中有重要应用,例如汇款单、银行支票的处理,以及邮件的分拣等。手写数字识别通常https://developer.aliyun.com/article/1168621
7.机器学习算法备忘单设计器“Azure 机器学习算法备忘单”可帮助你从设计器为预测分析模型选择正确的算法。 备注 设计器支持两种类型的组件:经典预生成组件 (v1) 和自定义组件 (v2)。 这两种类型的组件不兼容。 经典预生成组件主要为数据处理和传统的机器学习任务(如回归和分类)提供预生成组件。 此类型的组件将继续受支持,但不会增加任何新https://docs.microsoft.com/zh-cn/azure/machine-learning/algorithm-cheat-sheet
8.《算法设计与分析基础(C++版)学习和实验指导》(李春葆陈良臣当当网图书频道在线销售正版《算法设计与分析基础(C++版)学习和实验指导》,作者:李春葆、陈良臣、喻丹丹,出版社:清华大学出版社。最新《算法设计与分析基础(C++版)学习和实验指导》简介、书评、试读、价格、图片等相关信息,尽在DangDang.com,网购《算法设计与分析http://product.dangdang.com/29583939.html
9.基于深度强化学习的水面无人艇路径跟踪方法表示温度参数的学习率;表示温度参数α的梯度;θi表示q网络的网络参数;表示目标q网络的网络参数。 [0174] 具体实施过程中,在基于强化学习的路径跟踪控制算法设计中,将问题建模为马尔可夫决策过程是十分重要的一步,状态空间、动作空间和奖励函数的选取对策略模型性能和收敛速度都有很大的影响。 https://www.xjishu.com/zhuanli/54/202210772926.html/
10.算法设计与分析习题解答与学习指导·第2版/21世纪大学本科计算机专长期从事离散数学、算法分析与计算复杂性等方向的教学和研究工作,参与完成多项国家研究课题,撰写多部教材与译著,其中包含国家规划教材、教育部高等教育精品教材、北京市精品教材等。获得北京市教学成果奖一等奖,被评为北京大学十佳教师,并获得北京市优秀教师称号,系国家精品课“离散数学”课程主持人,“算法设计与分析”https://www.jd.com/zxnews/0db039b2d80e0d1a.html
11.科学网—[转载]基于容器云技术的典型遥感智能解译算法集成模型开发根据预先设计的深度学习算法,基于深度学习框架,进行智能解译算法的代码编写和镜像构建。其基本流程如图8所示,具体如下。 图8 模型开发流程 (1)从私有仓库或开源仓库使用Docker pull操作获取所需的基础环境镜像。基于基础环境镜像,添加OpenCV、GDAL、SciPy等Python包。对基础镜像统一设置SSH登录端口,以便后期调试https://blog.sciencenet.cn/blog-3472670-1339282.html
12.算法设计与分析清华大学信息时代,算法为王,和我一起进入算法的世界。 开课时间: 2021-08-09 教学时长 学习投入 详细介绍 本课程系统介绍算法设计与分析的方法和理论,包括算法基础、图、贪婪算法、分治、动态规划、网络流、计算复杂性初步、近似算法及随机算法等。同时,本课程还包含算法领域的一些前沿课题和最新进展。本课程可以作为数学、https://www.xuetangx.com/course/THU08091001409/7754812
13.《算法》教学设计优秀教案.pdf教学重点: 理解并学会利用算法分析问题并形成描述 教学重点: 理解并学会利用算法分析问题并形成描述 重点与难 重点与难 、用流程图表示算法 1、用流程图表示算法 1 点 点 教学难点: 教学难点: 、算法设计与分析 2 、算法设计与分析 2 本节课的学习对象是八年级的学生,在前面的学习中,学生对程序设计有了一定 https://m.book118.com/html/2021/1205/8012022013004052.shtm
14.支持C++,Java,Python,Go,JavaScript等多语言版本,从此算法学习《代码随想录》LeetCode 刷题攻略:200道经典题目刷题顺序,共60w字的详细图解,视频难点剖析,50余张思维导图,支持C++,Java,Python,Go,JavaScript等多语言版本,从此算法学习不再迷茫! 来看看,你会发现相见恨晚!https://gitee.com/yuandreams/leetcode-master
15.算法导论公开课笔记(一)算法分析与设计算法分析 算法分析是关于计算机程序性能和资源利用的理论研究;性能研究主要是学习如何让算法或者应用程序 运行的更快; 资源利用主要指的是诸如通信、存储器(无论是RAM Memory还是disk Memory)等的使用情况。 算法是关注性能问题的学科,因此这部分内容很重要。 https://www.jianshu.com/p/bb39d65af94e