昆仑芯科技芯片研发总监漆维:昆仑芯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(nanosecond,纳秒)级别的调度,确保整个硬件的利用率非常高。
如果说芯片提供了这个能力,那整个软件栈就关系到产品到底能不能快速在多个业务场景、大规模量产落地。我们也提供了一套非常完善的SDK,包括底层驱动、Runtime,到上层也包括一些高性能的控制库以及图编译的引擎。结合不同客户的需求,可以做到快速的实现和部署。
这是昆仑芯2代AI芯片。这代芯片采用7nm工艺,算力高达256TOPS@INT8。
我们在这个芯片上也引入了很多新的feature,包括硬件虚拟化。另外,芯片集成了包括视频的编解码以及图像处理能力,能够做到整个视频全流程的打通。
在GEMM、BERT/ERNIE、YOLOv3和ResNet-50这些模型上,昆仑芯2代实际性能全面领先,针对很多业务实际的模型也会有更好的表现。
目前,昆仑芯2代已经在多个场景落地。互联网领域,不局限于百度集团,我们在外部也有很好的突破。智算中心,比如智源研究院项目的合作。还有一些新的领域,像生物计算,我们有跟国内的一些高校和社会系统、公司合作探索,有一些项目的落地。也就是说,我们的产品并不仅限于AI。
未来的课题
面向未来,第三代AI芯片已投入研发,同时也在规划第四代产品。
昆仑芯科技刚刚成立一周年,我们也在持续思考,结合应用场景哪些地方能够做优化,以及性能提升,做到通用,同时能够兼顾实际的性能。在这个过程中,我们的产品到底怎么定义、是不是能够有更先进的技术,甚至说产品到底是做“AI+”还是赋能产业变革,能否做更大的场景等等,这些也是我们日常工作中持续在思考的课题。
最后,借着这个机会,非常欢迎日后有机会能够跟同行、跨行的人进行更多交流。