查看原文
其他

上海交大梁晓峣:疯狂的大模型时代,开源GPGPU平台为国产AI芯片企业谋出路丨GACS 2023

梁晓峣 芯东西
2024-09-06

GPGPU加速大模型训练,用开源解决人、钱、时间难题。
编辑 |  GACS
9月14日~15日,2023全球AI芯片峰会(GACS 2023)在深圳南山圆满举行。在次日AI大算力芯片专场上,上海交通大学计算机科学与工程系教授梁晓峣分享了题为《开源GPGPU平台“青花瓷”的技术进展与生态建设》的主题演讲。
梁晓峣教授以目前AI芯片领域的“王者”英伟达作为切入点,解读了英伟达是如何在“疯狂的大模型时代”中,通过数制、稀疏性、互连、内存带宽方面的4项革新,以及涵盖编程语言、运行环境等完善的软件生态建设应对挑战,从而巩固自己的地位的。他认为,在英伟达以V100为代表的处理器中,CUDA Core和Tensor Core这两个主要单元帮助英伟达奠定了AI时代算力基座的行业地位。
为了建设国内的开源生态,梁晓峣团队于去年推出自研GPGPU平台“青花瓷”,该平台支持大规模的并行通用计算、科学计算、AI计算等。梁晓峣团队定义的“青花瓷”指令集分为9个大类,功能组合超过100个,支持应用超过100个,通过这套自定义指令,能够实现架构通用性、性能先进性、生态兼容度。梁晓峣强调,青花瓷平台不收取任何费用,完全免费开放给大家使用
以下为梁晓峣的演讲实录:
感谢主办方的邀请,这是我连续第二次在芯片论坛给大家做汇报。如果说从去年到今年发生了一件特别重要的事情,毫无疑问就是大模型,它的横空出世改变了我们人类的世界。大模型可以做的事情非常多,包括在一些标准化测试当中,它的机器评分、人工智能评分已经超越了人类。
大模型最关键的就是大,即它的参数量非常大,动辄几十亿,甚至上百、上千亿的规模。像最大的GPT-3模型,可以达到1700多亿参数。伴随着参数,实际上就是算力的挑战。因为每一个参数都需要参与计算,这么大的参数量就带来巨大的算力。对于GPT-3最大的模型,用现在市场上最主流的A100 GPU,即使把1000块A100 GPU互连在一起,也需要训练30多天的时间,可见大模型对算力的需求是有多么的巨大。
其实进入信息社会以来,人类社会发展史就是一部算力发展史。从最早期,人们采用分立元件三极管,搭出了一个人类历史上第一台通用计算机ENIAC。这个计算机有着非常大的体积,但它的算力可能也只是相当于今天一个计算器的算力。随着集成电路的出现,我们发现可以把晶体管集成在晶圆、芯片上,可以在人眼看不见的尺寸上做所谓的集成电路,从而有了现在按照摩尔定律发展的28纳米、14纳米、7纳米等尺寸芯片,晶体管尺寸会做得越来越小。
伴随着集成电路行业的发展,各种各样的处理器、芯片类型都应运而生。比较有名的像CPU,英特尔是老大;现在如日中天的GPU,以英伟达为代表,在AI和数据中心中取得非常绝对的统治地位;像DPU主要做数据层面的分离和专用的处理,AI芯片也是其中一类。未来可能还会有更先进的芯片,比如量子芯片、光子芯片、生物芯片等,这些芯片可能还需要一段时间的发展,但是这个方向也是非常明确的,未来会往这个方向走。

01.
英伟达抓住时代机遇,
GPGPU提高计算并行度


我今天的报告可能不会涉及到那么多,主要还是和大家聊一聊现在最主流的,也是最重要的一类AI芯片——GPGPU
所谓GPGPU,就是通用图形处理器(General-Purpose Graphics Processing Unit),现在代表性的企业是英伟达,这家公司在上半年市值突破了1万亿美金。历史上只有几家公司突破过1万亿美金,包括苹果、微软、谷歌和亚马逊等。
作为一家芯片企业,突破1万亿市值是历史上第一次。为什么英伟达能做到这一点?正是因为它抓住了时代机遇。大家都在AI大时代淘金,而英伟达常被称作是“卖铲子的”,其实它是赚钱最多的。
从英伟达来看,我认为最具有代表性的,真正让英伟达进入AI时代算力基座的、奠定基础的是V100这代GPU。V100已经是几代以前的GPU了,但非常具有代表性。在一个GPU里面有很多处理器,下图中一个方块就是GPU的一个处理器。每个处理器放大来看,都是一样的架构。在英伟达以V100为代表的处理器中,有几个主要的单元,其中最主要的是CUDA Core和Tensor Core这两个单元

CUDA Core是大家耳熟能详的,指的是GPU以SIMT,即单指令、多线程的方式运行。在V100这代架构里,英伟达增加了一个Tensor Core张量运算引擎,加入的主要目的就是为了做AI计算,那时候还叫深度神经网络计算。因此,V100这代GPU是非常具有代表性的。
那么具体分析,GPU为什么能够算得这么快?为什么它的性能会这么好?主要得益于它极高的数据并行度。SIMT中,这个“T”指的是线程。一个GPU上可以有海量的线程,每时每刻都有成千上万的线程可以同时运行。
举一个非常简单的例子,比方说有两个矩阵,A矩阵乘以B矩阵,要得到一个C矩阵结果。在C矩阵中,每一个结果点,即下图中这个红色的点,它的计算就是从A矩阵中拿出一行,B矩阵中拿出一列,把它们相乘作一个内值就得到了结果点。在CUDA Core里面,每一个线程都负责计算C矩阵中的一个结果点,一个线程只计算一个结果点。
GPU中成千上万个线程同时执行,所以一瞬间的功夫,这个C矩阵里的所有结果都会被计算出来,这就是CUDA Core并行性比较强大的原因。

以此做类比,假如用一个CPU去做,CPU里一个线程也只能计算一个点,做完一个点再去做第二个、第三个点。但是CPU里可能只有十个线程,没有这么高的并行性,所以它的算力、并行度没有这么高,不如GPU计算那么快。这是在GPU CUDA Core里,用传统的SIMT引擎里做计算。
那么为什么要加入Tensor Core呢?因为英伟达意识到,即便用CUDA Core那种单点做矩阵的方式,速度还是不够快。AI对于算力的需求是无止境的,AI模型参数在不断变大,指数级上升,对算力需求也是指数级上升。只靠英伟达传统SIMT里的CUDA Core还不够,所以在V100这代GPU里,英伟达加入Tensor Engine,即张量运行计算单元。
Tensor Core改变了矩阵计算的方式,按照一个模块、一个模块去做矩阵,而不是一个点、一个点去做矩阵。在英伟达的Tensor Core里,以4×4的矩阵块为一个基本单位,一次可以计算出一个4×4的矩阵乘上另外一个4×4矩阵的结果。这种方式比CUDA Core又要有效很多,速度、功耗各方面都会提升很多,这是英伟达加入Tensor Core的主要原因。

刚才我们提到了,英伟达提出用张量引擎做矩阵,通过4×4的矩阵块来进行运算。那么有没有可能在更大的块上做矩阵呢?原则上讲,这个“块”放得越大,一次能够同时进行计算的数越多,GPU的效率会越高,性能会越好。华为的AI处理器借鉴了同样的概念,但是用更大的矩阵块去做,它的矩阵块大小是16×16,一次可以吃进256个数,吐出一个16×16的矩阵结果,所以效率、算力会更高,超过了英伟达的Tensor Core。

当然也有其他一些公司在考虑,除了Tensor Core,有没有其他的方式可以更有效地进行矩阵计算或者类似的计算?实际上是有的,比如谷歌自己的AI专用芯片TPU,特斯拉用在自动驾驶上的专用芯片FSD。无论是谷歌还是特斯拉,他们都采用一种脉动阵列的方式处理。比起张量引擎,脉动阵列的优势在于在很大规模的计算阵列上,增加了计算单元之间的互动、脉动,数据可以横向滑,也可以纵向滑。滑动的加入,使脉动阵列变得更加高效,性能更高。

脉动阵列并不是一个新的东西,早在上世纪60年代,就由H. T. Kung教授提出,只是那个时候还没有AI。现在,谷歌和特斯拉发现这个结构用在AI做矩阵计算上非常有效。如果你采用脉动阵列的方式来做矩阵计算,会比由点、小矩阵块或大矩阵块来做并行都更加高效。

02.
四项巨大革新,
英伟达巩固AI领域王者地位


这样看来,英伟达似乎处于非常被动的局面,大家都群起来挑战英伟达。华为用大矩阵块做并行,谷歌、特斯拉用脉动阵列做并行,这些方式都比英伟达芯片高效,所以英伟达面临着巨大的挑战和压力。如果应对不利,它可能会失去在AI领域的王者地位。
面对华为、谷歌等公司的挑战,英伟达也立刻提起反击。在V100以后,英伟达又做了A100、H100两代芯片。我认为,英伟达做了四项非常巨大的革新,从而再次巩固了自己在AI芯片里王者的地位。
第一项革新是数制。在做矩阵计算的时候,计算分为整型数和浮点数,其中浮点数是最为重要的。从传统意义上讲,做浮点数计算需要遵照国际标准,国际上有一个IEEE 754标准定义了浮点数计算的规则。无论是做CPU还是GPU,都要符合计算的标准。
但是到了人工智能时代,我们发现这个规则其实是可以被打破的。在人工智能里做浮点数的计算,精度差一点,对于最后的网络结果影响并不大。在这个基础上,大家提出是不是可以把传统IEEE 754国际标准放宽松,计算精度要求低一点?因为精度越低,算力越高,功耗越省。
英伟达推出了自己的算制TF32,所谓TF32并不是32位的,其实只有19位数。英伟达称,用19位的数来做计算,最后可以达到用32位浮点数来计算的等效网络结果。最近,英伟达甚至在最新一代GPU中推出了TF8算制,也就是用8位浮点数,就可以达到32位的效果。

这实际上是英伟达的优势,因为它既做运动员又做裁判员。英伟达说TF8好,那就是TF8好,为什么呢?因为几乎所有的模型,落地都会首先落在英伟达的GPU上。也就是说,即便英伟达这个数制定义得不好,哪怕这个计算是错误的,但是因为大家都是在它的基础上做的,所以它的错误也变成了标准,它定义的东西就变成了“事实上的标准”。
换句话说,即便你有更好的方法,但是因为别人的模型都是在英伟达GPU上先落地,所以它利用先发优势形成了事实标准。这显然可以对它所谓的生态起到了很大的“护城河”作用。
第二个是稀疏性,这和刚才讲的精度有相关联的地方。我们发现在网络里,虽然参数很多,但实际上不是每一个参数都那么关键。当减掉一些参数后,网络性并不受影响,这就是所谓的稀疏性。充分利用稀疏性,可以大量简化计算,比方说四个参数,减掉两个参数,就只需要计算两次,但是对网络精度结果并没有太大影响。英伟达新的GPU里对稀疏性也进行了支持。当然,英伟达的支持是有限的,必须按照它的规则进行支持。

第三个方面是互连,我认为这一点尤其是在大模型下是最关键的,是英伟达真正的杀手锏。互连包括芯片跟芯片间的互连,板卡跟板卡间的互连,以及服务器跟服务器的互连。几年前,英伟达前瞻性地收购了一家做互连的公司Mellanox,也就有了后面我们统称英伟达NVLink的高速互连网络。
大模型的参数都是数百上千亿,以后可能还会更大,没有一个单芯片能够容纳这么大的参数,也没有一个单芯片能够容纳这么大的算力。未来只要是大模型时代,所有的系统都需要由很多芯片互连在一起组成,少则几百片,多则成千上万片。这个时候,芯片之间的互连,数据之间的传输成为真正的瓶颈。芯片的算力未必能用得满,但是互连网络上数据的传输几乎都是被耗尽的。如果互连网络的速度带宽不够,芯片上的算力再高也是没用的,发挥不出来,最后所有数据都被堵在互连的高速公路上。
而在互连方面,毫无疑问,英伟达现在是世界上的王者。英伟达互连网络的设计、速度、软硬件的适配性是最好的,所以能在大模型下充分发挥出算力的优势。其他的芯片公司也许能做出很高算力芯片,但是因为没有这么好的互连网络支持,芯片的性能很难发挥出来。

第四点是内存带宽。当我们有成千上万数据的时候,在进行计算之前,首先要有地方存放。如果连存都存不下,数据供不上,何谈算力呢?在这方面,英伟达也是走在世界的前列,它率先采用了HBM、HBM2以及现在HBM3E,使用最先进的片上堆叠的2.5D封装技术,它内存的带宽和容量都可以远远超越其他的竞争对手。

英伟达通过四项核心技术的反击,再次巩固了自己在AI市场上“霸主”的地位。过去几年,虽然面临着众多芯片公司的挑战,但是英伟达的市占率非常牢固,几乎没有被动摇。

03.
大模型时代软件生态成为重中之重,
开源成为可能的出路


在近年相关的学术论文中,英伟达GPU作为AI芯片的出现频率远超其他芯片。统计显示,在国际顶级会议,使用英伟达来做学术探索的论文与使用其他芯片的论文发表相差20倍
这是非常关键的,因为AI领域不断在创新,不断有新东西出现,我们无法预测明年,甚至下个月会产生什么新的东西。而这些新的东西都是在学术界,包括大公司先进的研究实验室中产生的。这些论文中的实验如果是在英伟达GPU上做的,自然落地首选就是英伟达GPU。
其次,从AI数据中心的占比来看,英伟达无论是在阿里云、AWS,还是其他任何云里,都占据绝对主导地位,占85%以上。过去几年,这个比例还在逐渐上升。

这样的绝对主导地位是什么问题造成的?我个人认为,英伟达最大的优势还是在于它的软件生态。一颗芯片好或不好,不是取决于它的硬件指标,不是取决于它的裸算力有多高、功耗有多低,而是取决于它好不好用。这个芯片做出来,大家是否能马上用上,能否无缝迁移,能否很愉快地使用,这才是关键。而这点英伟达做得非常好,它有数十年的积累,新的模型几乎都会先在英伟达GPU落地,这个先发优势是非常明显的。
关键中的关键就是生态。生态不只是几个模型、几个框架的问题,它是一个综合性的问题,包括编程语言。编程语言,像英伟达的CUDA生态,指的是CUDA编程的方式、习惯,它又直接联系到芯片指令集的定义、芯片的架构定义,一些运行库和Runtime(运行时)也非常关键。
现在做AI、做算法的同事中,其实很少有人会去写CUDA。大家说英伟达最大的生态是CUDA,我认为不是这样的,绝大多数人不写CUDA,但是他们会用英伟达提供的算术库和运行时。这些运行时是十几年的积累,对于每一种网络、应用都有一个专业的库去加速,这些库是闭源的,我认为这才是英伟达非常高的护城河,而不是CUDA编程环境。工具对于芯片的落地很重要,包括Debug工具以及其他相关的工具,所有这些,构成了一个芯片的生态。

早些年芯片的生态,有几个核心的芯片公司,像英特尔、英伟达、高通等来定义核心的芯片架构、芯片产品。很多软件公司围绕这几个核心的芯片大厂,去定制领域专业的软件。
过去六七年,这个形势发生了变化,如雨后春笋般出现了很多芯片公司。下图列出了过去五六年国内一些做AI芯片的公司,他们围绕最主流的软件框架,比如TensorFlow和PyTorch,去做AI芯片或GPGPU芯片。所谓行业变化,一开始,软件公司围绕硬件公司做领域专业的软件,后来变成芯片公司围绕一两个软件框架,做领域专用的芯片,这个过程一直持续到今天。本来这个过程,如果这样发展下去,我认为是有希望的。只要给这些芯片公司足够多的时间,他们一定会跑出来,因为行业在发展。

但是半路上杀出一个程咬金,今年突然进入了大模型时代。大模型层出不穷,导致这些做大芯片的芯片公司无所适从。大家都在做大模型,有这么多做大模型的公司,还有这么多做AI芯片的公司,到底怎么适配?本来大家只围绕一两个软件框架去做还相对简单,现在这么多大模型,我到底适配谁呢?大模型公司会看,这么多AI芯片公司到底谁能打,谁能打我就跟谁合作。当然,英伟达是一个默认的选择,除了英伟达之外,谁能打呢?AI芯片公司也会问,这些做大模型的公司谁能赚钱呢?能赚钱,合作才有意义。
这就出现了一个问题,在大模型时代,像英伟达这样的公司过于领先的时候,就要想别的出路。我能想到一条出路,就是开源,用免费、开放、开源的方式去解决钱、人、时间的问题
在硬件上比较有代表性的是RISC-V,它是一个开源的CPU指令集和硬件架构。RISC-V是在2010年,由伯克利的David Patterson教授和Krste Asanovic教授从零开始设计的。当时它只定义了50条左右的指令,没什么影响力,但是随着时间的发展,开源社区逐渐焕发出蓬勃的生机。现在在CPU领域RISC-V特别火,已经成为继英特尔x86体系、Arm指令集体系以外的第三极。这个开源的方式已经被证明,当对手特别强大的时候,实际上是一个有效的方式。

04.
GPGPU领域的开源平台,
降低软件开发难度


RISC-V是在CPU领域开源的方式,那么有没有可能在GPGPU领域,我们也做一个开源的方式呢?这就是我们团队推出GPGPU开源平台的原因。我们把它命名为“青花瓷”,“瓷”就是China。建设青花瓷平台的目的,是支持大规模的并行通用计算、科学计算、AI计算等
讲得直接一点,除了打游戏的部分,其他英伟达GPU卡能做的,我们都希望能做,并通过这个平台提供给大家。我们高度重视与英伟达GPGPU产品的兼容性。换句话说,我们希望终极的效果就是英伟达的GPU卡能够跑的应用,我们一行代码都不用改,直接在卡上跑起来,这就是解决生态的问题。
为了建造这样一种新的GPGPU平台生态,我们做了三方面的工作。首先是打造了一个开源平台,也就是“青花瓷”平台。其次,我们出版了一本专业教材,叫《通用图形处理器设计 GPGPU编程模型与架构原理》。这是国内第一本,也是目前为止唯一一本专业介绍如何设计一个GPGPU架构的教材。如果你是做GPGPU的芯片工程师,我相信基本上都读过这个教材。这个教材出版到现在不过一年时间,一直在京东畅销书排行榜上,可见大家对新的核心技术是非常关注的。最后,我们在上海交通大学打造了一门专门介绍通用图形处理器设计的课程
我们的研究包括架构、基础指令、基础软件栈,同时通过开源社区方式来呈现给大家,下图是“青花瓷”平台的整体架构和核心架构。一句话总结来说,英伟达有的东西,我们都有。

这里我要重新强调一下,GPGPU不是SIMD,也不仅仅是SIMT。SIMD叫单指令、多数据,SIMT叫单指令、多线程。某种意义上讲,GPGPU包括了SIMD和SIMT的功能,但远远大于SIMD和SIMT。GPGPU有很多复杂的设计,包括存储架构、线程的调度、线程的管理,包括一些分支冲突的解决,以及复杂的同步机理,这些东西都是GPGPU的核心,它不是那么简单的一个SIMT和SIMD的问题。
我们定义的“青花瓷”指令集分为9个大类,功能组合超过100个,支持应用超过100个,所以通过我们这套自定义指令,能够实现架构通用性、性能先进性、生态兼容度。英伟达的核心并不完全是CUDA,而是运行时、运行库、运行环境、API(应用程序接口)的支持,这些是它的核心竞争力。我们也定义了6大类API,可以支持的复杂函数超过50个
下图是我们提供给大家的,在这条路上,上面绿色的东西是开源的,下面蓝色的东西也是开源的。有了这套东西,你可以获得我们的基础指令集、基础软件知识,可以在我们仿真模型上运行任何程序。只要你是用CUDA或者框架写的程序,都可以在上面运行。当然如果真的做芯片,你需要有RTL Model或者FPGA Model,这个我们是不开源的,我们只开源了这个仿真系。

下图是我们能够支持的不同类型的程序和函数,可以看出,我们这个平台不只是为AI去做的,甚至跟AI没有特别大的关系。AI只是我们能够支持应用中的一部分,有很多很多的算子、应用都不是AI,但是它可能用在科学计算、金融活动以及人类生活的方方面面。

下图这些也是我们能够支持的,是另一类应用。

最后这一类应用是跟AI有关系的。现在只要是推理网络,我们的平台都能完全跑得通;对于训练网络,不是跑不通,而是时间太长了跑不完,但是简单的训练像Tranformer是可以跑通的,并且不用改一行代码。我们曾经跟某个大厂有一些合作和讨论,为了看这个平台的兼容性如何,所谓耳听为虚、眼见为实。他们丢给我们10个应用,我们一行代码不改,直接丢在平台上跑,当场跑通了8个,还有2个调试一下也能跑通,这说明我们对于生态的兼容性是非常强大的。这也是我们做这个平台最主要的目的,我们不会做任何一款芯片,这个平台就是给大家提供一个参考设计。

如果你是在学校、在科研院所做基础研究,可以结合我们的书、课程进行基础研究。青花瓷可以作为一个实践的平台,开放、免费地给大家使用,也支持在这个基础上做一些突破创新。我们什么都可以做,但是我们唯一不做的就是收费,我们不收任何费用,完全免费开放给大家使用
刚才说的东西都在我们的网站和代码仓库上,如果大家有兴趣可以下载。网站上有非常详细的使用说明,只要根据说明一步一步去做,就可以试着去跑一些网络,跑一下最新的大模型。这个开源项目是不断累积的过程,需要持续投入和漫长积累,唯有穿越行业的周期性长期存在,才有创造新生命的可能。
RISC-V做了十多年才有今日的成就,我们的GPGPU平台是一个新的生命,去年才刚刚发布,到现在不过一年的时间。我们希望坚持十年、十五年的时间,就有机会成功。有任何问题可以联系我们,这是联系方式,谢谢大家!
青花瓷网站:https://gpgpuarch.org
联系方式:liang-xy@cs.sjtu.edu.cn
以上是梁晓峣演讲内容的完整整理。

继续滑动看下一个
芯东西
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存