1月6日,深信服创新研究院AI平台研发负责人江州司马在信服云《云集技术学社》系列直播课上进行了《GPU在AI业务中的核心技术与应用》的分享,详细介绍了GPU的发展、GPU的架构以及如何利用GPU优化AI系统。以下是他分享内容摘要,想要了解更多可以 点击这里观看直播回放。
看点一:GPU介绍 GPU指的是图形处理器,又称显示核心、视觉处理器、显示芯片,是一种专门在个人电脑、工作站、游戏机和一些移动设备上做图像和图形相关运算工作的微处理器。显卡用于协助CPU进行图像处理,作用是将CPU送来的图像信号经过处理再输送到显示器上,由主板连接设备、监视器连接设备、处理器和内存组成,GPU是显卡的处理器。
GPU分为独立GPU和集成GPU。独立GPU一般封装在独立的显卡电路板上,使用专用的显示存储器,独立显卡性能由GPU性能与显存带宽共同决定。独立GPU性能更高但因此系统功耗、发热量较大。集成GPU常和CPU共用一个Die共享系统内存。集成GPU的制作由CPU厂家完成,因此兼容性较强,并且功耗低、发热量小。但如果显卡运行需要占用大量的内存,整个系统运行会受限,此外系统内存的频率通常比独立显卡的显存低很多,因此一般集成GPU性能比独立GPU更低。
GPU的使用场景非常多,大的方面分为三个使用场景。第一个是HPC高性能计算,主要用于CAE仿真、物理化学、石油勘探等高性能计算场景。第二个是图形可视化/渲染,主要用于3D图形的加速渲染等相关细分场景。第三个是AI智能计算,主要用于图像识别、语音识别、情感分析、无人驾驶等相关细分场景。此外,像现在非常火热的数字孪生和元宇宙,它的背后也是由强大的GPU算力支撑。
谈及GPU的发展史,不得不提到英伟达、英特尔和AMD三大巨头。这三家公司在上世纪90 年代就进入了GPU市场。在2000年到2007年前后,由于个人PC的发展,GPU在游戏和个人桌面显示领域上有着非常大的市场需求,三大巨头的GPU主要围绕图形图像显示加速开发。2007年到2017年,三大巨头开始切入通用计算领域,GPU产品不仅应用于图形图像的加速显示,更应用于一般计算的加速场景。2018年后,各家公司GPU产品开始围绕人工智能算法的加速进行开发。回望国外GPU巨头的一个发展,会发现这样的一个有趣的现象,GPU巨头的股价尤其是英伟达、AMD在最近的三五年得到了飞速的发展,和他们对应的GPU产品的算力提升几乎是一致的。
看点二:GPU架构 由于现在市面上GPU的主流产品主要还是英伟达的软硬件产品占主流,因此以英伟达为例,在英伟达的GPU架构当中有几个核心的概念,比如SP、SM、cuda core、tensor core等。SP是cuda core,意思是一个线程在每个时钟周期里执行一条浮点或整数指令。SM又包含一组cuda core,多个cuda core可以并行执行。而tensor core是在最新的几代GPU架构中出现的硬件执行单元,专门用于做矩阵乘法加速。
英伟达 Tesla GPU的算力发展经历了十多年的变迁,早期的Fermi架构只有512个cuda core ,而2020年发布的A100已经有6912个cuda core,在这十几年的演变从物理算力来看已经发展了十倍,同时还增加了像tensor core这样具有创新性的硬件加速单位,促进了AI的运行计算。
目前,行业为实现AI计算,主要采用的芯片有通用型的GPU、可定制的FPGA、以及专用的ASIC。而GPU,尤其是英伟达的GPU,由于cuda统一的开发模型以及成熟的软件站,它的开发周期相对较短,因此现在AI领域所有的应用开发和AI框架都是基于GPU开发的。
AI三要素分别是数据、算力和算法。数据被视为AI的燃料,只有具备足够多的数据,AI的应用才有可能发展。缺少了数据,AI是不可能发展的。但是有了数据之后,就要考虑如何去挖掘数据的价值,如何利用算力更快地挖掘数据的价值。因此算力在AI领域又被称为发动机。有了数据有了算力,挖掘什么样的价值以及如何挖掘价值,那就要考虑算法。
在AI领域,现在用的最多的是深度神经网络。深度神经网络早在上个世纪七八十年代就已经被科学家提出,但是到上个世纪末,深度网络都没有在应用中得到广泛的普及。其中主要的原因就是在上个世纪及2000年初,计算机的算力还不足以支撑当时神经网络的计算,导致算法迟迟不能在工业场景落地,而随着GPU的性能的逐步提升,让深度神经网络的算法能够以更高效的速度进行运算。因此人工智能得到发展也是大大得益于算力的发展。
随着在AI领域算法的复杂度越来越高、模型的参数量越来越多,对于算力的要求以及计算加速的需求也逐渐增大。由于AI的模型越来越复杂,对于AI计算优化的需求比较旺盛,因此需要解决AI系统的计算性能问题。
一般来说评估一个AI系统的性能,主要有两个指标,第一个是算力,算力指的是每秒峰值浮点运算次数,是一个 AI系统的性能上限。第二个指标是带宽,带宽的意思是每秒峰值内存数据的存储量。在优化AI系统的时候,都会从这两个维度去评估是否已经达到了物理的极限,如果没有就要采取相应的优化措施使其达到或者尽可能接近物理的上限,这样整个AI的系统的计算性能才有可能是最优的。
看点三:GPU在AI领域的应用 在AI领域中,GPU的应用主要有两个场景,第一个是训练场景,即利用GPU加速AI算法的训练。利用GPU加速AI算法迭代训练又分为单机单GPU、单机多GPU、多机多GPU三种情况,其中最简单的是单机单GPU。单机多GPU指的是在一台服务器上利用多个GPU进行算法训练。多机多GPU是将数据或者模型分布到不同的节点进行协同计算。多机多GPU又分为模型的并行和数据的并行两种计算方式,现在业界重点或者主流的分布式的策略都是数据并行的这种方式。
现有的AI算法,即深度学习算法,卷积层占整个卷积神经网络计算时间的90%以上,卷积计算的本质是是矩阵乘法,其优化主要有三种类型,一是算法层面基于FFT或WINOGRAD的加速。二是利用各个GPU的厂家深度优化的矩阵乘法库,像cuBlas,英特尔的MKL等等。三是在硬件层面,比如使用tensor core、cube等等去专门优化矩阵的乘法。
另外,GPU还有一种加速AI训练速度的方式就是利用低精度指令来加速AI的计算。GPU指令也分为单精度、半精度和整型三类。精度越低、指令的吞吐越强,但是数字表达能力越弱。在开发的时候默认使用的是单精度的制定,训练出来的模型直接可以使用,但是如果考虑到加速,就不得不在算法层面进行一些优化,使得在低精度的条件下,也能够让模型的训练的效果满足业务的要求。
第二个场景是推理场景,即利用GPU加速AI算法推理。AI模型优化和AI系统编译优化是实现AI推理计算优化的两个核心路径。针对AI模型,GPU可以通过低精度的加速计算、张量分解、网络剪枝等多种方式进行优化。针对AI系统编译,GPU则可以利用硬件体系中立的计算图优化和硬件体系相关的优化和代码生成。
针对AI训练和推理的计算优化,深信服也构建了云边协同AI异构计算平台。利用AI算法,深信服探索了像病毒文件高层次特征提取技术、网络安全异常检测技术、数据智能分级分类技术等在实际业务中的AI应用。
还想学习云计算的更多内容吗?敬请锁定下期直播,云集技术学社还将邀请更多的专家,分享他们对云计算技术的理解和实践经验。
|