AI推理带火的ASIC,开发成败在此一举!

电子发烧友网 梁浩斌
去年年底,多家大厂爆出开发数据中心ASIC芯片的消息,包括传闻苹果与博通合作开发面向AI推理的ASIC,亚马逊也在年底公布了其AI ASIC的应用实例,展示出ASIC的应用性价比远超GPU,加上博通财报AI业务同比大增220%,掀起了AI推理端的ASIC热潮。

电子发烧友网报道(文/梁浩斌)去年年底,多家大厂爆出开发数据中心ASIC芯片的消息,包括传闻苹果与博通合作开发面向AI推理的ASIC,亚马逊也在年底公布了其AI ASIC的应用实例,展示出ASIC的应用性价比远超GPU,加上博通财报AI业务同比大增220%,掀起了AI推理端的ASIC热潮。

那么ASIC跟传统的GPU有哪些区别,开发上又有哪些流程上的不同?

ASIC和GPU

通用GPU在设计之初就为了适配更多使用场景,在AI应用上,GPU支持训练、推理、通用计算等全流程,以英伟达GPU为例,通过CUDA生态,英伟达GPU能够快速适配新的算法,比如从Transformer到CNN的迁移,只需要修改30%左右的代码。

相比通用GPU,ASIC是专为满足特定应用而设计的芯片,针对特定应用的特定算法进行硬件级别的优化,尤其在AI应用中,比如运行矩阵乘法、张量计算等任务,能够相比GPU效率更高。

比如谷歌TPU就是一款ASIC,采用脉动阵列设计,通过固化数据流水线减少内存访问次数,能效比达GPU的3.2倍。

相比之下GPU使用通用计算单元处理多种任务,为了满足不同类型的计算需求,必然需要存在计算冗余。

GPU由于架构的特性,一般会在AI计算中保留图形渲染、视频编解码等功能模块,但在AI计算中这些模块大部分处于闲置状态。有研究指出,英伟达H100 GPU上有大约15%的晶体管是未在AI计算过程中被使用的。

同时,在计算流程上,GPU在处理AI计算任务时是需要通过CUDA软件栈进行任务调度,比如矩阵乘法的运行时需要经过内存加载、指令分发、Tensor Core计算、结果回写等多个步骤。

而在ASIC上,可以通过硬件级的流水线固化数据流,能够减少计算流程步骤,提高运算效率。在减少计算流程的同时,ASIC对内存访问模式的优化,还能有助于降低内存控制器的功耗。

AI计算中,低精度是以损失部分准确率为代价,通过量化压缩数据来提高推理速度。目前AI推理中INT8/FP16的精度,GPU一般支持FP32/FP64等高精度计算,在混合精度训练中,GPU还需要额外的显存来转换成低精度结果,同样的芯片,在运行高精度和低精度的算力也不同。

尽管精度的选择本质上是准确性和效率的取舍,但AI推理等应用中,对精度的需求并不需要极致的接近100%,但仍能保持较高的水准。ASIC一般直接支持低精度计算,在AI计算时的效率能够相比GPU大幅提高,但保持一定的准确率。比如有数据显示,TikTok的推荐算法系统采用INT8精度,但依然保持了接近99%的推荐准确率。

所以,ASIC相比GPU,在硬件架构上可以针对专有应用进行特定优化,提高计算效率和降低功耗。在成本方面,ASIC在规模量产的情况下可以降至GPU的三分之一,但前期开发成本仍不能忽视。

可能大家也发现,目前定制开发高算力ASIC的厂商,无一例外是云计算大厂,本身公司业务就有极大规模的算力需求。ASIC定制费用,主要是开发过程中的一次性工程费用,也被业内称为NRE(Non-Recurring Engineering)。顾名思义,NRE费用只需要支出一次,后续规模生产中不需要再增加这部分费用。

NRE费用中,包含芯片设计的成本,比如研发人员薪酬、EDA工具授权费等,这与芯片使用的制程工艺、芯片本身的复杂程度相关;然后是版图设计成本,其实这里的概念跟芯片设计的成本类似,主要是涉及芯片的物理布局设计,需要特定的研发人员和软件支持;再是IP授权费用,一般是一些通用的IP,比如CPU IP、内存控制器、接口IP等。

以定制一款采用5nm制程的ASIC为例,NRE费用可以高达1亿至2亿美元。然而一旦能够大规模出货,NRE费用就可以很大程度上被摊薄。

此前有业内人士分析,中等复杂程度的ASIC盈亏平衡点在10万片左右,这对于很多厂商来说已经是遥不可及。

ASIC开发流程

在开发ASIC时,最关键的是以算法架构为主导,围绕这一方面去进行其他工作。

首先是进行需求定义,要明确ASIC的目标场景是什么,比如推理还是训练?端侧还是云端?用到CNN还是Transformer?在AI领域,定制ASIC的往往是云计算大厂,这些厂商一般会有顶尖的架构师去进行充分考虑,未来可能的应用、效率、成本、技术可行性等都会包含在内,同时平衡性能、成本、功耗等关键指标。当然也有一些芯片厂商推出针对某些应用场景的ASIC产品。那么在前期产品定义就十分关键,有时候还需要开发针对应用场景的算法配合自己的芯片产品使用。

接下来是最关键的算法和架构优化,需要对行业发展趋势有足够认知,选择适合的算法进行优化,保证算法与硬件架构适配,通过仿真测试验证。

然后设计ASIC的整体架构,比如功能模块的划分和模块之间的互连,以及接口等IP的使用。

在前端设计中,使用VHDL或Verilog等硬件描述语言对设计进行编码,然后将编码转换为门级网表,对其进行优化满足芯片面积和性能要求。

进入后端设计后,需要将门级网表映射到具体的芯片物理结构上,进行布局和布线。

完成模块布局和布线后,就可以开始进行FPGA验证,测试ASIC设计的功能是否满足需求。随后完成流片、测试后就可以投入大规模生产。

总的来说,ASIC的开发中,硬件和软件的协同是其成功的关键,在拥有强大的芯片性能同时,还要筑建完整的软件生态,吸引更多用户使用。

当然,在ASIC量产进入市场后,软件栈开发也是相当重要的,需要编译器将TensorFlow和PyTorch等机器学习模型映射到硬件指令上,在生态上也需要支持更多主流的框架,以尽可能满足更多使用需求。

请扫码关注数字化经济观察网
责编:左翊琦
参与评论
文明上网,理性发言!请遵守新闻评论服务协议
0/200