2019年毫无疑问是国产ai芯片的爆发年,大大小小的芯片发布会可谓你方唱罢我登场。纵观今年发布的ai芯片,它们都各具特色,各有千秋。尤其在它们所擅长的特定任务上,其效能与算力,甚至能够大幅领先部分gpu,谷歌的张量计算单元(tpu)、特斯拉的自动驾驶计算单元(fsd)以及国内外各类ai 芯片新品,而这也是为什么自家产品在在发布会上都号称性能及能效比上可以吊打英伟达的某款gpu明星产品。
然而,它们确实超越英伟达了吗?显然没有,尤其是撼动不了围绕英伟达而生的生态系统。背后的因素有很多,但其中一条重要的原因是:相比tpu等产品,gpu能做的事情更多。而那些ai芯片只擅长做一件事、只在那个应用场景下比gpu强。换言之,gpu的通用性或可用性更好。
通用就那么重要?对于数据中心和云端应用,是的。
首先是成本问题。芯片当通用性足够强、可用性足够广的时候,它的销量才能撑得起研发设计、最新的制程工艺成本不断攀升的需求。在“量”这个维度上,ai专用芯片几乎没有现象级的市场。
其次是灵活性问题。现在的ai算法迭代的速度非常快,长则几个月短则数周就会发生变化;芯片以18个月为开发周期计,当芯片问世的时候,ai芯片可能就已经落后了。
所以,我们现在看到的是gpu在计算力经济大潮中叱咤风云,英伟达股价一涨再涨。
“通用”王者——gpgpu兴起
说起来,gpu起初也是一款专用芯片——与cpu相比,早年的gpu专用于图形计算加速,且在gpu诞生之时还是以asic芯片的形态面世。不过,gpu在不断的发展和演进之中,逐渐进化出越来越多的通用属性,也即可编程性。
特别是,自从英伟达在2006年左右推出了cuda。cuda是英伟达在gpu应用于高性能异构计算领域在编程方面的一大创举,无疑也是走得极为正确的一步棋——cuda可以基于c语言、c++和fortran、python等语言直接开发应用程序,并构建起极为庞大的开发用户群,这奠定了gpu可以广泛应用的技术基础和生态力量。
当然,这也得益于大数据时代,各行各业都需要更加强劲的算力。cuda的推出,开启了英伟达的gpgpu(通用gpu)战略——在大部分人对gpu的认识还局限在游戏图形加速之时,gpgpu的时代,就从那时启幕。
gpgpu,也有人称之为gp2u(gp的两次方u)。两个gp代表着不同的含义:后边的gp表示图形处理(graphic process),和u组合一起是我们熟知的gpu(图形处理器);前一个gp则表示“通用目的”(general purpose)。gpgpu不是一款具体的芯片,而是一种概念,即利用图形处理器进行一些非图形渲染的高性能计算。
从狭义上来讲,gpgpu在gpu的基础上进行了优化设计,使之更适合高性能并行计算,并能使用更高级别的编程语言,在性能、易用性和通用性上更加强大。
应用领域方面,gpgpu将应用扩展到了图形之外,在科学计算、区块链、大数据处理、工程计算、金融、基因等方面,gpgpu都得到了广泛的使用,关于它的科研成果和新应用模式也层出不穷。
从上图可以看出,gpu 应用于 ai 计算,无论是云端训练还是终端推理,其本质都是 gpu 通用属性的一个方向。或者说,ai 计算在 gpgpu 世界里,只是其中一个组成部分。只是 ai 计算这个方向潜力巨大,因此 gpu 厂商才将 ai 计算作为着重发展和宣传的方向。
如果将cpu比作是一名数学家,gpu是一名艺术家,那么,gpgpu或许应该是……莱昂纳多·达·芬奇。
“兵家必争之地”
目前全球范围内在gpgpu领域的玩家,英伟达似乎已是控场之姿。
其实早在2006年左右,amd就发布过一款“流处理器”,算是amd最早的gpgpu的尝试。但当时那款“流处理器”只是gpgpu的一个“雏形”,远未发挥出gpgpu的真正威力。
此后,amd在gpgpu方面并没有太多动作,甚至于后来出现的开放计算语言(opencl)都是苹果公司开发推出的。这也让amd丧失了在gpgpu方面与英伟达对垒的机会,以至于处于追赶者的象限内。
而英特尔,也在加紧布局通用gpu。英特尔眼馋gpu路人皆知,其背后是一段辛酸史——从开始对gpu的不屑,到基于自家的x86架构开发独立显卡,英特尔折腾了十年之久仍然没做出来一款像样的gpu。近两年传出消息英特尔将在2020年推出首款独立gpu,这恐怕要得益于英特尔的重金挖人——原amd rtg显卡部门负责人raja、zen架构的功勋领袖jim keller、显卡技术市场总监damien triolet这几位大神都在2018年被英特尔招入麾下。
可以想象,对于英特尔而言,都2020年了,英特尔再做传统显卡的意义显然不大,在异构计算时代,英特尔只有瞄准数据中心,才下定决心搂响gpu这个扳机。
再多说一句,英特尔最强的生态在x86架构cpu这块,英特尔的策略,可能更趋从cpu生态这端探索一条将cpu和gpu结合更紧密的路子。
笔者采访了相关行业技术人员,了解到研发gpgpu的难点在于以下几个方面。
从硬件角度看,最核心的是指令集。指令集的覆盖面、颗粒度、效率等决定一款芯片能否覆盖到足够宽的应用市场领域,并对软件开发和产品迭代足够友好。无论是英伟达还是amd的gpgpu,指令集都在千条量级,而目前国内的ai芯片指令集大多数都在百条以内。类型与数量的差别映射到硬件高效实现的复杂程度,差距是巨大的,在这方面国内的团队还存在着一定的差距。另一个重要方面就是基于硬件层的任务管理和智能调度,这可以让芯片从硬件层即提高算力的利用率,也就是大家常说的实际算力。大多数ai芯片的做法是完全依赖于软件层的调度实现,但这种方式第一增加了软件开发的复杂度,第二降低了硬件算力的利用率,第三减缓了软件栈迭代更新的速度,这在ai领域,面向算法模型、开发环境、应用场景加速更新的大背景下无疑大大增加了产品落地与工程化的难度。
在软件方面,毫无疑问,最重要的必然是开发生态,gpgpu通过英伟达十多年的耕耘,已经建立起了一个超过160万开发用户的庞大而成熟的生态-cuda。ai芯片则需要搭建全新的生态,它会带来两个维度显著的问题,第一个维度是客户端,客户需要冗长的适配期,从原有的开发环境切换到新的软件生态,这不仅带来了资源投入,推迟了业务部署时间窗口,增加了业务的不确定性,更严重的是不利于保护已有的软件投资,软件的很多部分都要重新来写并适配,这对企业级用户来讲恰恰是非常敏感与慎重的事情。另一个维度是产品开发端,从底层芯片与系统软件,跳过cuda层去直接支持开发框架,必然带来巨大的软件投入,不停得追赶现有框架的新版本,以及生态巨头的新框架,这在底层软件人员缺乏的背景下矛盾显得尤其突出。
而以上两点说到底都是需要人来解决的,恰恰在这方面的人才是目前中国企业最缺少的。目前只有英伟达和amd拥有丰富的团队,这也侧面证明了为什么intel自己折腾几年,最后还是请了amd的几位大神。
其实仔细想想,通用gpu成为兵家必争之地很容易理解,至少有一明一潜两大驱动因素。明面上,现在是异构计算的天下,近年来传统以cpu为核心的服务器市场增长比较平缓,而gpu服务器的增速迅猛,年增长率据称超60%。
潜在因素则在于,5g时代的到来推动了物联网的迅猛发展,应用场景更加丰富多元,这要求云端的计算资源能应对各种复杂场景的需求提供丰富灵活的计算支撑,工程师们肯定更愿意将能“通吃”的芯片焊在服务器上。
“老虎屁股”堪谁摸
围绕gpgpu,国外已是龙争虎斗,反观国内,能够洞悉gpgpu发展机遇并付诸行动的芯片厂商少之又少。
华为是为数不多看到通用gpu趋势的芯片厂商之一,而且看起来正在尝试两条腿走路通往gpgpu的路上。一条路是,华为通过其在手机芯片方面的积累,希望从移动端gpu出发,逐步延展至平板电脑端、桌面端、服务器端,走这种从简单到复杂、从小芯片到大芯片的路径。
另一条路有点“天龙寺众高僧合练六脉神剑”的意思。通用gpu复杂、难做,华为就“化繁为简”,今天先做ai-gpu,明天再做“区块链gpu”,后天再做“超算gpu”……到最后再来个“集大成”,“六脉神剑”通用gpu就成了。看起来很棒对吧?但是这种想法可能过于理想化了。通用gpu不是简单的“1+1”,十个人会一阳指,也及不上一个人会六脉神剑,一个道理。
笔者还听说,阿里旗下的芯片部门也想做gpgpu,只不过阿里巴巴的野心大则大矣,只是眼下还没有足够大的技术团队能支持这件事。
其他厂商中,包括寒武纪、依图、比特大陆、燧原科技等企业,目前也都重点布局于ai芯片,并分别利用自身的优势走出了自己的风格和水平。
而在gpgpu赛道上,一家名为“天数智芯”的公司选择了正面“刚”。这家公司目前围绕gpgpu的系统研发已聚集了一支百余人的技术团队,其中不乏amd在美国和上海做 gpu的核心团队成员、行业经验超20年的世界级技术专家。今年刚刚试水发布了一款边缘端芯片,并计划明年正式发布gpgpu大芯片产品。
“牧村波动”
本文不是在宣扬除英伟达之外的芯片已经没有了机会,只是在陈述一个可能正在越来越近的事实:通用化、标准化。
1987 年, 原日立公司总工程师牧村次夫(tsugio makimoto) 提出,半导体产品未来可能将沿着“标准化”与“定制化”交替发展的路线前进,每十年波动一次。他把这一理念于1991 年发表在 electronics weekly 上,称之为“牧村波动” (makimoto’s wave)。
近年来可编程芯片的高速发展, 验证了“牧村波动”的正确性,得到了 xilinx、altera 等可编程芯片商的响应。德国一位教授甚至把“牧村波动”称为“牧村定律”,认为在半导体技术逼近极限的情况下, “牧村定律”将超越摩尔定律而存在, 半导体技术未来要依靠“牧村定律”维持其高增长的创新速度。
2020 年将至,过去数年我们一直在呼唤ai 芯片和高性能计算芯片,如果 makimoto’s wave 仍然奏效,那么下一个波峰将是超高灵活度集成的芯片。
有一点毋庸置疑,算力经济时代,整个世界正面临半导体市场的增长大潮,市场上也涌现出各种各样的半导体公司,老牌的、成熟的、初创的,百舸争流。而nvidia早早凭借强大的gpu+cuda方案切入各个领域,用大笔研发投入和时间堆积起坚不可摧的生态城墙,而这恰恰是国内外其他玩家的薄弱环节。
国产芯片企业,特别是处在创业初期的那些,“正确选择胜过百倍努力”。笔者认为可通用的gpu确然是个非常值得投入的方向。gpgpu诞生也只有十数年时间,“护城河”并非坚不可摧。
只不过在现阶段,国产替代方案还要在cuda生态的基础上推广自己的芯片产品,在兼容cuda的同时,建设新生态。在这个过程中,每一步都关键且充满挑战。