昆仑芯科技芯片研发总监漆维:昆仑芯AI芯片——让计算更智能
在近日闭幕的2022北京智源大会上,昆仑芯科技芯片研发总监漆维受邀参与 “芯片前沿技术”专题论坛。
围绕当前学术领域迫切需要解决的问题,以及产业落地过程中存在的诸多挑战,漆维与来自中科院、清华大学、北京大学、杜克大学、伦敦帝国理工学院的各位专家学者一同分享重大成果与真知灼见,献上了一场诚意满满的芯片前沿技术盛宴。
以下内容整理于主题报告 “昆仑芯AI芯片:让计算更智能”直播实录:
昆仑芯科技芯片研发总监漆维
大家好,我是来自昆仑芯科技的漆维。
相信很多朋友都认同,当下是芯片最好的时代。我个人也是非常幸运,很早就进入AI芯片这个赛道。接下来,结合我和团队这十年的积累讲一讲对这个领域的理解。
AI芯片的机遇:空前繁荣的AI生态
今天整个AI芯片生态非常繁荣。从场景看,语音、视觉、自然语言处理这些不同的场景,AI算法都有持续突破。这些算法的突破不仅仅是对原有业务进行新的赋能,也极大便利了人们的日常生活。
另外一个维度,AI算法持续突破,工程师们尝试更大的模型把AI能力带到各行各业。国外GPT-3是首个千亿规模的模型,国内像百度的文心、智源的悟道在这块也有了很多积累和突破。
几年前看AI的时候,大家可能会觉得AI更多是对现有业务做赋能,是“AI+”。但其实最近几年,AI已经开始去赋能产业变革,像自动驾驶这个万亿级的市场,可以改变人们的出行方式。另外一个案例是Alphafold做蛋白质结构预测。能看到,AI算法很有机会对当前的科学难题进行突破。
上层整个AI生态非常繁荣,AI算法也不是第一次提出了,为什么最近这十年发展特别好?
其实是因为底层的AI计算提供了支持。当然,众所周知摩尔定律正在逐渐失效,传统的处理器结构已经不能满足支持。GPU得益于很早在HPC有布局,也对架构进行了迭代。除了NV的GPU,国外以谷歌为例,结合自己的场景和需求去自研了AI芯片。在国内,互联网纷纷下场造芯,同时也有很多AI的startup进入这个赛道。可以说,对AI芯片来说,这确实是一个历史性的新机遇。
理想非常好,上层整个生态及算法对底层都有硬件的依赖,自研AI芯片不仅能解决这种需求,同时也是利国利民的事情。但回到现实,就没有那么丰满了,这是一件很有挑战的事情。
AI芯片的挑战
AI芯片真的能做到在产业大规模落地是一件非常有挑战的事情。
首先,算法的多样化。前面提到,AI是有多种产品的,语音、视觉、自然语言处理,不同的业务场景有各自不同的算法模型以及底层计算精度的需求。除此之外,即便是同一个业务线,算法也在持续优化和突破。今天的算法需求或设计的芯片是不是能够满足明天的需求,这也是一个挑战。一个很有意思的例子,谷歌也在GPU的一篇论文中提到过,他们刚开始做芯片的时候跟业务团队沟通,业务告诉他们1%精度损失可接受。等芯片做完要推到业务做落地部署,发现业务改了说法,之前说的模型精度被推翻了。这也是对AI 芯片设计的一个挑战。
其次,行业巨头的生态壁垒。虽然大家都看好这个赛道、纷纷进入,但其实它不是一个蓝海。这个赛道是有一个行业巨头在前面。一方面,它确实做的比较早,到现在已经有十多年的积累,做成了一条非常强大的护城河。另外,它也敢于对自己的架构做持续的创新。随着AI算法的需求,它的GPU产品已经跟所有的主流框架做了适配。大家天然地去用GPU做AI算法的应用。面对新的硬件、定制的指令集和微架构,以及新建的整个软件生态,对于客户来说,为什么要选你?一定是有一个心理防线的。所以,一定要两个维度都做到,第一方面,要有一个非常可观的实际的性能收益去吸引业务。另一方面,需要整个软件栈做的非常灵活,用尽量小的迁移成本去打破客户的这种心理防线。
第三,『苛刻』的客户需求。客户的需求不是一成不变的,也是非常严苛的。以互联网为例,客户并不会关心一个单一的指标,他们关心延时、关心吞吐,也关心TCO,而且这些指标很多时候是融合在一起的。举个例子,客户关心的可能是在满足一定的延时条件下,单卡能够带来的吞吐是多少。甚至,有时候他还会加一些限制:要求他的CPU、整个AI芯片或者GPU在一定程度的利用率去确保整个业务系统的鲁棒性。TCO也不是说单卡的性能和成本,而是说单卡跟服务器整机适配,在实际业务应用场景整机的分摊成本,甚至具体到分摊的网络成本、功耗成本等等。
最后,复杂的真实部署环境。从研发人员的角度,会觉得把芯片做出来、点亮,是非常关键的milestone,这一点肯定毋庸置疑。但其实从点亮到芯片在真实业务场景中实现规模落地,这中间还有非常大的工程挑战,这是软硬件、整个系统都会面临的挑战。硬件层面,做到万级、十万级甚至更高的时候,稳定性怎么样?成本对业务来说是不是可接受?软件也是,整个软件栈要适配不同的深度学习框架,包括国内外主流的各种操作系统甚至不同机型的适配等等。
这些都是实际的工程工作,克服这两块到了实际业务部署的时候,会发现并不是一个单线程的作业,有时候会做多线程的混部,甚至为了把整个运营资源利用率做高,会做两个不同的业务线混部。在这种场景下,AI卡的实际性能能不能做到很稳定,这些都是走向量产之后需要面临的工程化挑战。
AI芯片:从定制到通用
伴随上述挑战,我们团队的发展其实也是分成了两个阶段。
第一阶段:2011到2017年,跟着整个AI算法的迭代,AI逐渐在更多的业务线落地。跟这个阶段相匹配的,我们基于FPGA开发了AI的加速集群,做到了行业中一个非常大规模、有影响力的部署。16年17年的时候,随着Intel收购Altera,Amazon推出FPGA云服务,FPGA突然变得特别火;但因为我们在这个领域布局得很早,其实已经明显能感觉到FPGA从业务形态上、架构上的一些瓶颈。
在2017到2018年我们开始转型,2018年正式启动昆仑芯片的研发。目前,两代芯片都已经正式量产。
为什么做通用的AI处理器?尤其是像芯片这种高投入的场景,前面也提过,整个业务的算法其实都还在持续迭代和变化,如果要做一个AI芯片,尤其是真正能达到量产,一定是通用、能够灵活支持所有的应用和产品的,同时,需要软件栈去对接所有的业务系统。这就需要非常灵活的可编程的方案,一方面要能够适应业务需求,另外,商业化落地要能够尽量减少对应的软件成本以及对用户来说的迁移成本。
昆仑芯2代
以昆仑芯第二代芯片架构XPU-R为例做一个分享。该架构非常核心的两部分分别是:Cluster和SDNN。
Cluster是通用计算单元,我们有自定义的指令集,支持标量和向量计算。某种程度上,其实软件可以像写扩展一样,或者说是像写处理器一样去编程。
SDNN是面向AI运算的指令、加速单元,主要是支持像卷积、矩阵乘等这种高频、高算力需求的一些算子。SDNN是Software Defined Neural Network。为什么要软件定义呢?其实我们早期也做过偏定制的架构,它的问题在于模型持续变化的时候,尤其是涉及到分支跳转,或者动态reshape这种,不一定能支持好。另外一个维度,整个算法一定是持续迭代的,未来一定还会有新的模型、新的算法出现。某种程度上,Cluster和SDNN对标CUDA Core和Tensor Core。
除了这两块之外,整个Memory的设计也是结合我们的产品定义做的设计。比如说,片上有比较大的Shared Memory能够支持Cluster和SDNN之间的数据交互。片外的Device Memory这块,昆仑芯2代选的是GDDR6,可以兼顾带宽和成本。昆仑芯2代也是国内首款应用GDDR6的AI芯片。跟主机的接口这块,集成了PCIe4.0协议。同时,我们也具备片间互联能力,多个芯片之间能够互联通信去支持训练和大规模推理的应用场景。
还有很多功能,比如我们自研的调度系统。AI芯片计算加速有的时候还不到微秒,这个时候如果是一个非常重的处理器进行调度,或者依赖于host的话,会有一些性能的影响。所以我们也是自研了一个调度系统,能够做到ns级别的调度,确保整个硬件的利用率非常高。
如果说芯片提供了这个能力,那整个软件栈就关系到产品到底能不能快速在多个业务场景、大规模量产落地。我们也提供了一套非常完善的SDK,包括底层驱动、Runtime,到上层也包括一些高性能的控制库以及图编译的引擎。结合不同客户的需求,可以做到快速的实现和部署。
这是昆仑芯2代AI芯片。这代芯片采用7nm工艺,算力高达256TOPSINT8。
我们在这个芯片上也引入了很多新的feature,包括硬件虚拟化。另外,芯片集成了包括视频的编解码以及图像处理能力,能够做到整个视频全流程的打通。
在GEMM、BERT/ERNIE、YOLOv3和ResNet-50这些模型上,昆仑芯2代实际性能全面领先,针对很多业务实际的模型也会有更好的表现。
目前,昆仑芯2代已经在多个场景落地。互联网领域,不局限于百度集团,我们在外部也有很好的突破。智算中心,比如智源研究院项目的合作。还有一些新的领域,像生物计算,我们有跟国内的一些高校和社会系统、公司合作探索,有一些项目的落地。也就是说,我们的产品并不仅限于AI。
未来的课题
面向未来,第三代AI芯片已投入研发,同时也在规划第四代产品。
昆仑芯科技刚刚成立一周年,我们也在持续思考,结合应用场景哪些地方能够做优化,以及性能提升,做到通用,同时能够兼顾实际的性能。在这个过程中,我们的产品到底怎么定义、是不是能够有更先进的技术,甚至说产品到底是做“AI+”还是赋能产业变革,能否做更大的场景等等,这些也是我们日常工作中持续在思考的课题。
最后,借着这个机会,非常欢迎日后有机会能够跟同行、跨行的人进行更多交流。