编者按
Jonathan Ross创办的AI芯片公司,最近又爆出大新闻。
国内报道的画风是“突发!200亿超级独角兽巨额融资:一把就是45亿”。
Groq专做推理芯片,其“语言处理单元(LPU)”,去年适配了大语言模型LLaMa,据称推理速度比英伟达GPU提高了10倍,且成本低至只有1/10。
本文为作者参加FPGA’2014大会时受邀发言内容整理,当时是GoogleX实验室和TPU负责人,吐槽FPGA具有开发困难等诸多不便。
2016年底,Groq公司初创成立。
连同创始人Jonathan在内,集齐了谷歌TPU核心团队,10个工程师中的8个。
在半导体行业,堪称古有仙童八叛逆上演传奇,今有谷歌八精英,乾坤大挪移。
数月后,赛灵思的全球销售执行副总裁,也宣布加盟,出任首席运营官。
AI推理应用,既是FPGA的强项,也被视为比AI训练更大的市场。
从FPGA最擅长的仿真加速、十年前的算力加速,再进入到现在火爆的AI加速时代,重新回顾行业的系列文章,共有5篇组成。
借用行业深度好文《硅图!EDA商业发展史》所言:事实有真假,观点无对错。
多中看空的有两篇:英特尔的《细数FPGA的“几宗罪”》,以及本文《软件工程师需要什么样的开发工具》。
坚决做多的选三篇:蓝色巨人IBM的《推动FPGA成为一等公民》,以及云计算巨头的解读视角。其中,如果说微软对FPGA在数据中心的应用,具有开创性,那么亚马逊则是里程碑意义。
而IBM公司,则是贯穿了FPGA的三个加速时代,从未缺席,更是深刻影响了仿真加速的EDA硬件辅助验证行业,直到现在。
各个行业都会经历数字化、自动化和智能化这三个阶段,对于FPGA应用设计,开发工具早就自动化了。
但无论是巨头,还是作为爱好者的个体户,都得面对专用EDA工具自动化的使用门槛过高:学习曲线过于陡峭。
虽然英特尔风光不再,现在稍显"落伍",市值仅是英伟达的3%,超微的40%,放在十年前,是无法想像的事情。
但就像曾带领英特尔最高峰的传奇总裁安迪·格鲁夫所说的:在半导体行业里,想要预见十年后会发生什么,得先回顾过去十年发生过的事情”。
进入到AI时代后,FPGA会续写不一样的故事吗?
以下为正文。
进入硬件加速一切的异构计算时代,在云计算领域,FPGA已经得到日益广泛的深入应用。
能够在数据通路的各个路径上进行硬件加速处理,率先在新型超级数据中心得到应用。
为什么用FPGA加速数据处理,正变得如此重要。
对于数据仓库级别的计算服务,运行海量的批处理任务、高性能计算,以及各种服务。
以Google为例,假设使用400台服务器,就算当中的1台宕机,也只是影响了1/400服务器体量,响应曲线会相当平滑。
就算每几秒钟出现一个硬件驱动失效,也没多大问题。
但是,对于那些在测试期间没有被发现的“隐藏”故障,一旦逃逸到部署使用阶段,就可能会造成大麻烦。
任何细小的差错,都会被无限放大。
最终导致无法保障服务质量。
FPGA无容置疑的显著优势
其在计算任务上的响应速度,无以伦比。
与基于指令计算方式的CPU不同,以硬件速度工作的FPGA,能够处理大量的并发计算任务。
在网络处理上的高带宽和低延迟,一直是其强项。
也在其在通信行业得以“独步天下”的原因之一。
在FPGA市场上,更是有“得通信行业者得天下”之说,是器件厂商的战略高地。
Xilinx公司的营收占比3成以上。
Altera公司曾经高达50%左右。
至于能耗优势,那就更不用说了。
是一直用来与CPU、GPU进行比较,田忌赛马中的保留节目。
往大了讲,低碳环保的“绿色计算”模式,让我们的整个地球家园,都会大受裨益。
尽管FPGA有这么多的好处,但要想真正发挥其强项,并非易事。
由于芯片结构的特殊性,实现设计开发,需要将设计布局布线到芯片上,所花的编译时间相当长。
与芯片容量、设计复杂度呈正相关。
理论上,可以用FPGA直接设计定制为你能想到的任何专用芯片,作为领域专用处理芯片DSA(Domain Specific Architecture)使用。
只要使用的芯片数量是“小批量”的(300万颗量级以下?),就会比生产专用芯片划算。
一直走在异构计算,硬件加速最前沿的EDA硬件辅助验证行业,最为明显。
能够像Cadence那样,拥有一款性能最优的专用DSA芯片(并行广播式阵列技术CoBALT),在仿真加速市场一股独大,当然最好。
Mentor的硬件仿真平台(Veloce),也相当特殊,采用的是属于经典架构的专用FPGA芯片,别无分号,仅此一家。
其它EDA公司的仿真加速器,大多都是直接"压榨"(赛灵思)商用FPGA,将其定制设计类DSA芯片使用。
无需经历流片制造环节,快速完成产品市场适配。
包括Synopsys的Zebu,Aldec公司的HES等等,阵容相当庞大。
当用户明确表示所需的硬件仿真平台,“没有布局布线编译时间长”等具体要求时,相当于只想购买Cadence的帕拉丁。
直接排除了市场上其它供应商。
另外,由于FPGA设计开发,需要使用硬件语言开发等等,也是相当棘手,自然也包括数据中心的云计算领域。
VHDL编程语言出现,比FPGA被发明的时间,还要更早些。
最初源于美国国防部(DoD)要求的标准化硬件语言描述,用于简化数字系统的设计与文档记录。
Verilog语言则是与FPGA几乎同龄。
由工业界的Gateway Design Automation公司推出,随后大受欢迎,并演化发展成为IEEE 1364标准。
1985年,发布第一版Verilog语言,相应的仿真器,也随即推向市场。
1989年,Cadence通过收购Gateway公司,获得Verilog语言及仿真器,并将Verilog语言开放给行业使用。
2001年时,逐步形成了今天的IEEE 1364-2001标准。
其次,与CPU行业不同,所有的FPGA应用设计,都没有可移植性,不会考虑兼容性(Heterogenous)。
我们都知道,数据中心很多工具,大多受益于开源软件,以及社区大神们的无私贡献。
发烧友们用爱发电,才造就了如今的繁荣生态。
进入互联网时代后,以github为代表的开源网站,是馈赠给工程师的礼物,提供种类繁多的工具和APIs,高效构建整个系统的技术栈。
FPGA行业则完全不然
除了设计工具要与厂商锁定,需要购买License授权,才能使用之外,也相当缺少“社区版”免费工具。
相对而言,如果只看编程语言,System Verilog可能会相对好些。
作为Verilog语言的扩展,尽管其目标是提供统一的硬件设计、规范与验证语言平台。
但是,现代软件开发中常见的“控制反转,依赖注入”功能,在System Verilog中也不支持。
控制反转(IoC)指的是将程序执行流程的控制权从程序员转移到框架,实现对象之间的松耦合。
依赖注入(DI)是一种具体的编码技巧,通过构造函数、函数参数等方式将依赖的类对象传递给类使用,提高代码的扩展性和灵活性。
数据中心的特殊之处还表现在几个方面。
不同的服务,对于计算资源的需求会有较大差异;
所有的服务,都要具备容错能力;
计算资源的虚拟化(池化),冗余是非常重要的设计理念。
因此,工程师会尽可能提高资源的利用率,充分利用CPU/内存/存储卡/网络的带宽。
然而,一个必然的结果是,并非所有的资源都被充分利用。
当我们聚焦FPGA计算资源时。
FPGA与CPU在计算模式上存在本质区别;
资源虚拟化、负载分割都不是最关键的;而是在于资源的不均衡,即长尾延迟(Tail Latency)。
用最慢的数据包处理时间,或者任务完成时间,形象表征了用户所能够感知的服务响应时间。
对CPU来说,随着系统中节点数目的增加,以及工作频率差异,响应时间有着明显差距。
而FPGA是直接以硬件速度进行处理,有着稳定的低延迟特征。
按照破窗理论:大规模系统本质上是不可预测的、网络处理、存储访问、CPU性能都存在不确定性。
CPU的优化,问题集中在分支预测、指令对齐、快存行大小(Cache Line Size),超线程,DDR读取操作排序,读写缓冲区大小等等技术上。
FPGA的优化,问题则主要集中在三方面:
是否是可综合的?
能不能布局通过?
是否能够顺利布线,满足时序要求?
一旦以上三个基础问题,都得到肯定的回答。
那么FPGA性能将是确定且可预测的!
只剩下最后需要解决的,是在不可见的数据中心服务栈(Dark Stack)中,如何对FPGA设计进行调试。
代码是写出来的,也是调试出来的。
比如,对于一个可加速的热点应用,需要使用数据中心提供的授权服务、日志服务、数据库、存储访问服务,MapReduce分布式服务等。
这些服务,对于FPGA具体应用来说,都是相当难。
更严重的是,进入部署阶段后,也就没有ILA/Signal TAP等设计阶段的常规工具,可以使用。
并且还会涉及到一旦发生故障,如何最小化代价修复等等的现实问题。
直接决定了系统的可靠性和可用性。
令人棘手的FPGA调试验证问题
调试手段相当有限。
不外乎源码和网表级的仿真器、形式化分析,以及在硬件板卡上的实物调试验证。
三者的优缺点都非常明显。
并且类似软件行业的敏捷开发理念,在FPGA行业也相当“陌生”。
在构建过程中进行修正(Correct by Construction),快速迭代。
仿真器有着最全面的可见性和可控性,是工程师的“常规武器”,但速度最慢;
硬件构建过程中的在线调试则恰好相反,速度最快,但可见性和可控性又是最差的。
在工具匮乏的前提下,主要依赖个人经验。
打个比方,只是把FPGA当作硬件看待,那么就像是近海底层活动的肉食性鮟鱇鱼,难以打理,非经验丰富的硬件工程师不能为。
在现有常用调试工具环境下,想要做成美味大餐,殊为不易。
是技术活,也是堆人手的体力活。
只有少数高级餐厅,才能提供。
在软件行业,或者整个计算机领域,如果一个系统内部是不可见的,那么就意味着距离崩溃不远了。
所以不论是开发还是运维,都有品类丰富的工具可供选择使用。
数据库、网络设备的可观测工具,也是层出不穷,创新不断。
对用户,具有事半功倍的价值。
但在FPGA行业,完全不是这样,以下是一些可能的思路:
目前开放给爱好者使用的“社区”免费版,还寥寥无几,值得尝试。
还要打破编程语言上的迷思,比如System Verilog,不仅仅只是适合做设计验证,也可以用来开发。
以及需要更多便宜又好用的工具。
再说FPGA有自身的特点,所以也不用重复CPU的老路。
编者后记
整整十年前,英伟达和赛灵思作为各自行业的头部芯片厂商,市值相当,都是在百亿美元量级。
后者甚至更高。
2014年时,相对于CPU,GPU更是“初露锋芒”的小弟。
当时全球七大超级数据中心,都在陆续引入FPGA,应用前景值得看好。
Altera和Xilinx两大厂商,也是平分秋色,几乎各占一半江山。
2015年,英特尔以167亿美元的高价将前者并购退市,作为Intel(PSG)部门,开启数据中心优先战略。
2016年,赛灵思新的领导班子上台,推出自适应计算概念。
2017年,硬件厂商"变软"的趋势,从GPU延展至FPGA,开始在头部厂商显现。
2018年,英特尔推出OneAPI项目,以简化跨CPU、GPU、FPGA、人工智能和其它加速器的各种计算引擎的编程开发。
2019年,发布oneAPI beta版本,"从今天受限、封闭的编程方法演变到一个开放的、基于标准的模式,助力开发人员实现跨架构的参与和创新"。
同年Xilinx推出Vitis AI平台,为云端、边缘和混合计算应用加速提供了统一编程模型,并在GitHub上开源。
2020年,推出原厂Alevo系列标准加速板卡。
既有仿真加速器Zebu架构的影子,也借鉴了亚马逊在FPGA云服务中,引入的软件开发“Shell/Role”分区理念,用Shell实现与云服务OS的交互等。
在传统的FPGA硬件工程师看来,Shell分区简直是浪费硬件资源。
特别是对于习惯了FPGA不纳入OS管理,只是作为"裸卡"使用的行业用户和少数硬件高手,更是如此。
赛灵思的设计开发文件.dcp,在数据中心等更偏软件习惯的行业使用时,也改成云感十足的容器二进制文件.xclbin。
2021年初,微软引入Alveo加速卡,为全球54个区域的用户,提供云上加速服务:“今天本地调试,明天云上加速”。
并宣告进入AI平民化时代。
2022年,AMD以股权互换方式,完成对赛灵思的零元购,后者退市成为AMD的自适应嵌入式系统部门。
2023年10月,英特尔宣布由桑德拉·里维拉担任“分拆”后独立运营的可编程事业部首席执行官。
重出江湖的阿尔特拉,除了重启IPO上市进程之外,更希望重新赢回FPGA在工业、汽车、国防和航空航天等高速增长市场的应有份额。
全文完,感谢您的耐心阅读。