AI芯片专用好还是通用好?遥想20年前GPU也面临这一抉择—全面浅析Graphcore IPU的通用之道

这也就是Jim Keller曾经提到的"domain-specific"针对具体场景的特定芯片 。这个略具"时代革命"气质的判断 , 一般认为是以2012年AlexNet刷新图像识别正确率事件为分界线的:当时深度学习还不像如今这般普及 , AlexNet极具突破性地选择GPU来加速整个图像识别过程 , 赢得了当年ImageNet视觉识别挑战赛冠军 。很快 , 深度学习借助GPU高度并行、大存储的特性 , 开始应用于语音识别、机器翻译等领域 。
毫无疑问 , GPU成为了"专用处理器"的雏形 , 机器学习则推动了专用处理器"革命"的步伐 。2013年 , 谷歌正式推出TPU , 这是个窄化到仅针对卷积神经网络(CNN)做计算的ASIC , 它能够体现针对特定领域"专用处理器"的优越性 , 并无视摩尔定律的放缓 。从某种角度来看 , TPU在做的就是"架构革命" , 革的是通用处理器(或具有通用计算特性的芯片)的命 。
OpenAI 2018年年终发布了一份名为《AI 与计算》的分析报告 , 其中的数据提到 , 自2012 年以来AI训练任务应用的算力需求每3.5个月就会翻倍;AI算力增长超过30万倍— 这就比摩尔定律快太多了 。以AI领域为"专用计算"的典范 , 看起来ASIC即将成为拯救人类未来的英雄 , 因为针对特定场景的ASIC , 才能够达到性能与能效比的极致 , 尤其是在摩尔定律放缓 , 以及登纳德比例缩放定律失效的当下 。然而实际情况好像比我们想象得复杂 。
GPU的那段往事在MIT的语境中 , "专用处理器"其实未必是指ASIC , FPGA也可以实现专用:数据中心加速卡即是其中一个例证;软件定义芯片(SDC)也能以"专用"的方式应用到工业领域;GPU应用在AI训练方面如今依然十分普遍 。然而在众所周知的"计算引擎选择(Computing Engine Choices)"图上 , ASIC的确在横轴的性能、能效、芯片面积这几个方面表现最优 。
不过ASIC的问题也非常显著 , 即其灵活性或可编程性最差 。具体反映到AI芯片上 , 一种算法只能应对一种应用;一颗AI芯片只能单一地解决一种问题;而算法在不断演变 , 每3~6个月就可能变一次;AI芯片或许尚未上市 , 算法就已经发生进化了 。这是ASIC型AI芯片的尴尬之处 。或许某些偏应用层的企业并不在意 , 比如谷歌TPU虽然只能做一件事 , 但它带来的创收依然是不可限量的 。
在针对某些非常具体的应用场景里 , 灵活性也可能并没有那么重要 , 所以如今在AI专用加速方面的产品除了谷歌TPU以外 , 还有如NVIDIA DLA、IntelNervana、特斯拉FSD等 。谷歌TPU和特斯拉FSD采用的都是一种名为脉动阵列(Systolic Array)的"古老"技术 。这是一种固化、专用的电路 , 通过内部连线、内部PE 整合、固定时钟周期输入数据 , 实现卷积操作 。
所以不难发现 , 谷歌TPU和特斯拉FSD都能轻易做到相较GPU , 性能和效率都高出一截的表现 , 即便这是以牺牲可编程性为代价的 。到这里 , 处理器的通用与专用之争 , 似乎就快出结论了 。
但在这个AI芯片发展的初级阶段 , 我们大致上或许能够找到另外一个参考:GPU的发展历史 。狭义的GPU似乎就是用来做图形加速计算的 , 它很多时候被我们归类为专用处理器 。
实际上 , 在上世纪90年代GPU发展的初级阶段 , 它的确是完完全全的ASIC 。在那个时间点 , 技术和制程都远不如现在先进 , 图形渲染追求极致性能必须选择ASIC—彻头彻尾的专用硬件;而且从市场特点来看 , 也和当前的AI芯片市场一样 , 彼时涌现出了大量GPU初创公司 。
但从本世纪初开始 , GPU出现弱编程特性— 这是因为图形加速行业飞速发展 , 当时的图形渲染算法变化速度和现在的AI/ML算法迭代速度可类比 , 那些固化的"绝对专用"的GPU无法适应这种变化;而在近10年 , 英伟达的GPGPU(GeneralPurposeGPU)概念已经成为一种常态 , GPU中的shader通用核心变得很重要 。GPU在某些领域内变得"通用" ,  它不仅能玩游戏 , 还能加速视频渲染、做科学分析、实现AI加速 。
当硬件更多的需要与软件生态挂钩时 , 市场大多数参与者便会倒下 。在竞争清理过后 , GPU形成了如今的双寡头市场 , 并且步入相当成熟的阶段 。
当AI芯片走向"通用"为什么GPU最终没有朝着性能和能效比更高的ASIC方向发展?除了前述图形渲染算法变迁带来GPU走向可编程甚至通用的必然 , 要知道GPU是享受摩尔定律最尖端技术的最大受益者之一 。而最先进制程的成本攀升 , 要求GPU市场规模足够大 , 否则难以摊薄成本 。
所以GPU走出图形计算的单一市场 , 开始跨界AI等更多领域 , GPGPU编程也就十分常见了 。ASIC本身的成本、灵活性缺失 , 以及应用范围很窄的特点 , 都导致它无法采用最先进制程: 即便它们具备性能和能效优势 , 一旦无法采用最先进制程 , 则这一优势也将不再明显 。
这段GPU的发展史能否给予我们一些启示? 在AI芯片领域 , 除了前文提到的谷歌TPU、特斯拉FSD之外 , 实际已经有一些AI芯片产品具备了弱编程特性 , 典型的如华为腾、Graphcore的IPU;包括在边缘AI计算领域 , Arm前不久推出的NPU IP , 都强调一定的灵活性 。
在我们采访Graphcore创始人兼CEO Nigel Toon时 , 他特别提到:"很多人认为 , 人工智能是场景驱动的 , ASIC能够实现更高的效率 。
但我不这么看:不管是什么样的神经网络 , 不管是何种应用 , 最后的底层都会表征成一个计算图(graphs) , 不管是处理图片也好 , 语言也好 , 最后就是个计算图 。IPU就是用于处理计算图的 。"
"对于AI , 我认为有三类解决方案 。第一类是比较简单的小型化加速产品 , 用于手机、摄像设备等产品中 。"Toon告诉我们 。这类产品典型如海思麒麟芯片内部的NPU单元 。"第二类是ASIC , 对一些超大规模的公司而言 , 有某一类具体的问题要解决 , 比如谷歌的TPU , 它用数学加速器来解决具体的问题;第三类是可编程处理器 , 这个市场的主体如今仍是GPU ,  但Graphcore未来也会有巨大的份额 , 我们做的也是非常灵活的处理器 。"
Toon认为 , IPU有机会替代GPU , 形成截至目前最大的细分市场:"我们接触过的所有创新者都说 , GPU正在阻碍他们创新 。如果仔细看他们正在研究的模型类型 , 你会发现主要是卷积神经网络(CNN) , 而递归神经网络(RNN)和其他类型结构 , 比如强化学习 , 并不能很好地映射到GPU 。他们需要足够好的硬件平台 , 这是我们将IPU推向市场的原因 。"
Graphcore的CTO(首席技术官)Simon Knowles早前曾说过:"机器智能(machine intelligence , 这是Graphcore的提法 , 亦即人工智能)毫无疑问是计算的未来 , 但它还很年轻 ,  发展也很快 。所以将如今最流行的模型或学习算法放进固定硬件中、构建ASIC会是比较愚蠢的方式 。支持潜在的智能新特性、当细节发生进化时也具备足够的弹性保证其可用性 , 是芯片架构必须考虑的 。"
" 我们刚开始构想加速智能处理的方案时 , 我们就很清楚不能只盯着深度神经网络 。"Knowles说 , "所以我们没有窄化到特定算法 , 而是考虑作为计算负载 , 机器智能的基本原则是什么 。"
实际上 , 当前市场上的正在参与竞争的AI 芯片 , 包括具备一定可编程性的 , 也并非Graphcore一家 。但Arm联合创始人Hermann Hauser先前曾经这样评价过Graphcore:"这在计算机历史上只发生过三次 , 第一次是70年代的CPU , 第二次是9 0年代的GPU , 而Graphcore就是第三次革命 。他们的芯片是这个世界伟大新架构的一种 。"
这所谓的"第三次革命"究竟是怎么做的? 如果我们只把眼光停留在AI芯片如今共有的"高度并行"计算能力上 , 大概并不能领会IPU在"开创"个芯片类型上究竟有何特殊 。而且搞清楚这个问题 , 也更有助于我们去理解AI芯片的通用和专用之路究竟会怎么走 , 尤其Toon在访谈中提到的"计算图(graph)"究竟是什么?
【AI芯片专用好还是通用好?遥想20年前GPU也面临这一抉择—全面浅析Graphcore IPU的通用之道】

    推荐阅读