也可以选择设计得通用一点,以适应做事工具和场景的快速变革。
既然针对某个特定运用做到极致能效比的办法是专用芯片,那么专用芯片是否会比GPGPU更加有上风呢? 实际上GPGPU的架构也不是一成不变的,也会加入专用的单元用于处理专业的任务,从而使得GPGPU的发展与时俱进,它可以是专用和通用的结合体。比如Volta这一代的GPGPU,在流处理器里就把打算资源分成几块,既有打算整型数的单元也有强大的浮点数单元。 为了适应人工智能的发展,还特意加入了新的单元,叫Tensor Core,实在便是为AI量身定做的专用打算单元。以是,GPGPU的架构也在不断更新、不断地去适应新型运用所须要的底层算力。 如果说传统GPGPU的算力并行度因此一个数据点为基本的粒度,在这个规模上并行,那么到了Tensor Core就变成了以小矩阵块为基本粒度并行了,它在每一个周期都可以完成一个4×4矩阵相乘的结果,以是并行度和算力都高于传统GPGPU的设计。 这个观点还可以推而广之,比如说华为的昇腾AI处理器中的核心单元3D Cube,实际上便是一个矩阵打算的阵列块,而它的规模比Tensor Core还要大,因此16×16为单位来做矩阵打算的,因此它的粒度更大,并行度更高,并且做同样的矩阵打算均匀下来功耗更低。但是基本单元块粒度过大的话,相对付程序来说掌握就繁芜,通用性和适用性就低落。以是各个公司都是只管即便在功耗、性能以及并行的粒度和可编程性之间找到一个平衡点。 为了适应人工智能的发展,当代GPGPU还做了很多改造。比如引入了多样化的数制。人工智能的运用对打算精度的哀求可以放宽,没有必要一定按照标准的浮点数规则去运算。英伟达最新的Ampere架构中就引入了新的数制TF32。之以是起名叫TF32,意思是用这个标准来做,末了演习出来的网络精度不会低落,但TF32只有19位,它的打算办法和标准的浮点数不同,也正由于把位宽减少了,以是性能可以显著提升。 此外,Ampere架构还采取构造化的稀疏。我们在神经网络中创造,很多节点的权重都靠近于0,而和0打算是白白摧残浪费蹂躏算力,以是在Ampere架构中也考虑了却构化的稀疏,每进行四次打算就可以规定有两个是构造化的0,实践创造如果可以把网络演习成这样,那么在Ampere架构下运算起来就会得到两倍的性能提升。 以是说,GPGPU里面也会发生各种各样的优化,也在与时俱进。人工智能须要新型的打算芯片支持,大致可分为云端和终端。 在云端要适应各种需求变革和运用,并且既要能做演习也要能做推理,以是看起来便是GPGPU的天下。英伟达这样的公司也在不断的进化,不断的推陈出新来担保产品的竞争力。 而在终真个需求相比拟较单一,运用固定一些,以是理论上设计专用硬件来追求极致的能效比是合理的。但终真个问题是加速器永久只是一小部分,须要其他各种IP的合营协作才能组成一个完全的产品。比如说手机里面有丰富的功能,不是说只要人工智能做的好,手机就能卖得好。以是节制传统渠道和市场的终端芯片厂商,也会推出自己的办理方案,很有可能会后发制人。 (图片来自网络侵删)
市场须要的不是“好”的芯片,而是“好用”的芯片 我们要感谢这个时期带给行业极大的发展机遇,乃至吸引了互联网巨子和海量的成本加入到这个沙场。 此前,中国的互联网企业重视用户体验和商业模式,较少参与底层的硬件和芯片开拓,但现在情形完备不同了。天下面临家当的大变革、大重组、大转移。而芯片家当的发展实质靠的是成本推动,当硬科技成为行业风口,就会产生大量的机会和变革。 这是一个非常好的时期,芯片家当总是由前辈工艺推动的,我们可以乐不雅观的预期未来推动前辈工艺的未必是美国的英特尔或英伟达,或容许能是中国的某家高科技公司呢?但另一方面,我们也必须看到英伟达研发一款新品的投入因此十亿美金计,如果一个芯片公司的发卖达不到这个规模,肯定是无法持续的。 当前海量的成本都猖獗的涌入这个赛道,而芯片是一个须要打持久战的行业,一旦收入无法跟上,或无法发展为某个赛道的头部,结局就可能很悲惨,即便是“飞起来的猪”也可能很快掉下来。 我们必须理解市场须要的不是“好”的芯片,而是“好用”的芯片。所谓好的芯片便是绝对算力高、硬件指标高,这个相对随意马虎做到。但是做到好用就很困难,做出来的芯片没办法把潜力发挥出来,这是目前AI芯片公司的通病。 还是以史为鉴,英伟达实在也是一步一步从不好用做到好用,走过了一个漫长的阶段。早期的GPU是很不好用的,没有什么人会用GPU编程,只有那些所谓的“极客”会考虑利用GPU,冒死把个中的算力榨取出来。可以说早期的GPU好比今的AI芯片更不好用。 这时候就须要有一批行业领袖和技能大咖挺身而出,代表性的人物包括UIUC的胡文美教授(Wen-mei Hwu),他们发明了CUDA,从此有了可以直接对GPU进行编程的措辞,使得GPU的潜力得以充分发挥,从而真正走上了腾飞之路。又经由十年旁边的发展,形成了一个非常强大的生态,可以支持各种各样的运用,丰富了高等措辞的属性,能够支持更为繁芜的模型和算法,并且逐步在很多行业形成垄断。以是说GPGPU的发展不是一挥而就的,是经由十多年的不懈奋斗才走到了本日。 Programming Massively Parallel Processors: A Hands-on Approach
由胡文美教授(Wen-mei Hwu)所著
发展国产自主GPGPU的三种可能性 当我们回过分来探索国产自主GPGPU的发展之路,首先便是要沉得住气,耐得下心,切不可急功近利、操之过急。事物的发展要遵照客不雅观规律,成本永久是双刃剑,既可载舟亦可覆舟。 一款芯片的绝对算力有多高,集成了多少个晶体管并不主要,关键是把芯片的潜力充分开释给用户,这须要一个良好的生态和完全的软件栈,才能让用户乐于接管,不用改变太多的习气就可以迅速移植现有的事情。讲起来随意马虎,实际做起来很难,须要长期的努力,由于这天下上并不存在一个通用的办法或者一个通用架构就可以办理这个问题。 现在盛行说“兼容CUDA”,但要真正兼容出效率很难。即便英伟达做GPGPU这么多年,实在也是由无数个专用的优化累积起来才能够看上去如此的通用,这个中凝聚着大量工程师多年的心血。我们从头做起也须要花费同样的代价,没有捷径可走,大家一定要意识到这个问题的繁芜性和长期性。 在此,我们考试测验磋商发展国产自主GPGPU的三种可能性: 第一条道路叫“屯子包围城市”。策略是从专用芯片做起,把某一个小的领域做精做强,霸占一个山头,然后再占第二个、第三个,形成一个个的革命根据地,逐渐实现屯子包围城市。但也要防止各家企业在小的山头上恶性竞争乃至自相残杀,从而忘却了我们真正的历史义务和远大目标。常常发生的误区是:当一个企业爬上一座山顶的时候,只顾着欣赏面前的风景而忘却了去征服更高的高山。 第二条道路来自“龟兔赛跑”的启示。在历史上小企业挑落行业巨子的案例也是屡有发生的,比如说,英特尔的指令集在桌面电脑上一家独大,但后来ARM能够成功寻衅英特尔,便是捉住了移动互联网带来的历史机遇。英特尔在这个时候打盹了,并没故意识到行业发生的深刻变革(再加上幕后推手苹果公司的推波助澜)。当下人工智能时期带来的变革可能还要超越移动互联网,但令人吃惊的是在这个大变革的时期,实际上是兔子跑得比乌龟快。“兔子”便是英伟达,英伟达没有停下提高的步伐,没有犯当年英特尔的缺点,至今还保持着当年初创企业的活力,很多行业打破性的技能是最先涌如今英伟达的产品上。 兔子跑得快已经很棘手,而糟糕的是,我们作为后发者,海内的芯片人才本来就极为紧缺,但由于成本的驱动,短期内催生出很多芯片公司,听说今年新成立的芯片公司是去年的3倍,而培养的人才不可能一下子发展这么多。都说要集中上风兵力才能歼灭强敌,但现状是,我们把为数不多的兵力分散到多个沙场,从而陷入越打越弱的怪圈。以史为鉴,只有当对手轻忽的时候,捉住战机一举而竟全功才有大的胜算,这每每须要有极大的计策定力,乃至还须要有些运气。在芯片行业,千万要防止一哄而上之后的一哄而散! 第三条道路也是目前我们认为最有机会的道路,便是开源。靠的是众人拾柴和愚公移山,要的是细水长流,拼的是“天荒地老”。通过开源降服强大的对手,在软件生态方面已经战果累累,在硬件上也已经开始显示威力。我们有情由相信,开源硬件即便不能一统江湖,至少也可以分庭抗礼。 我们认为,现阶段海内完备有机会做一个开源开放的、免费公益的GPGPU项目,目的是打造一个全栈式的平台,供应开源硬件,编译器、算子库等,并且在指令集的设计上尽可能靠近或者兼容CUDA生态圈。我们的研究团队最近攥写了一本关于GPGPU体系构造的专用教材,书名是《通用图形处理器设计—GPGPU编程模型和架构事理》,估量明年初正式出版发行。同时希望号召海内最大的程序员社区,大家携起手来,摒弃门户之见,都来支持国产自主GPGPU,尽快把这个生态做大做强。 通过这些办法,经由十年以上的努力,我们坚信在这一块的劣势会逐步得到填补,逐渐缩小和国外巨子之间的差距。