飞趁昆仑山上去,须臾化作一天云’走近百度昆仑Al处理器

2020-01-19 13:15李实
微型计算机 2020年23期
关键词:昆仑百度处理器

李实

对国内的高科技企业而言,在集成电路产品上发力已经不是什么新闻了。作为这类企业代表之一的百度,近年来也在自研处理器的道路上越走越快。2020年9月15日,“万物智能——百度世界2020大会”上,百度宣布了昆侖1 Al处理器已经量产的消息,那么这款名为昆仑1的Al处理器在性能和架构上的情况究竟是怎么样的呢?我们就和你一起来了解这些内容。

百度在云计算和人工智能方面有深入的研究,并持续进行较高的产业投入。2018年,百度宣布将研发自家首款AI芯片,代号“昆仑”。2019年12月,百度宣布选择三星作为代工伙伴,准备量产昆仑芯片。在2020年的“百度世界2020”大会上,百度宣布昆仑1芯片已经量产,正在研发昆仑2芯片,其中昆仑1芯片已经在百度搜索以及云计算用户上部署了2万片,预研的昆仑2芯片计划采用7nm工艺,性能将达到昆仑1的3倍以上,计划2021年上半年量产。一路走来,百度的昆仑芯片从纸面到实际,从0到2万片,那么,百度昆仑芯片有哪些值得关注的地方呢?

从Al开始百度研发AI芯片的开始

百度在AI芯片方面的投入是从关注AI的多元化应用和多元化场景开始的。百度认为在之前的大型机和小型机时代,人们可以用定制处理器解决问题。在个人电脑时代,x86是绝对的主流。在移动计算时代,ARM和x86在一定程度上和谐共存。但是现在的时代应用场景更多、更为复杂,尤其是AI计算的出现,需要大量的算力,而传统的CPU和GPU完成AI类型的计算都存在效能或者速度上的问题。因此,在这种情况下,面对海量数据的AI计算,百度决定开发专门的AI通用处理器。

回顾历史来看的话,百度在201 0年甚至更早就切入了处理器研发领域。在2010年,百度推出了FPGA平台上的AI芯片,计算能力为300GFLOPS,并在2011年小规模部署。2014年的时候,百度推出了计算效能为1TFLOPS的芯片并在2016年提升至2TFLOPS。

百度为AI通用芯片的开发设定了三个目标,那就是面向主流市场、开拓新市场,同时尽可能支持更多的AI应用程序和场景。这就意味着百度的AI通用处理器不光是一个芯片,还要提供相应的软件和编译器等环境。百度认为这种通用AI芯片面临的挑战包括大量的内存和计算的访问模式需要支持,包括主流计算框架内数千种不同的算法、混合了张量、矢量和标量的计算模式以及对内存的顺序和随机访问等。另外,一款长寿的AI通用处理器还要考虑到算法和应用随着时间快速变化,以及开发人员对硬件和软件环境的熟悉程度等。

鉴于此,百度也提出了一系列的解决方案,致力于提供一个通用的、具有灵活的、可编程性相当优秀的同时也是高性能的AI处理器产品。

昆仑K200芯片百度Al计算的一小步

本次发布的昆仑芯片的型号分别是昆仑K100和昆仑K200,两者架构相同,但是前者K100性能和功耗等只有后者K200的一半,本文以百度昆仑K200为例进行介绍。百度昆仑K200整体架构采用了百度之前研发的XPU架构,支持INT 4、INT 8、INT 16以及FP32、FP16等不同格式的数据计算。其计算性能在INT 8数据格式下拥有256TOPS,在INT/FP 16下缩减至64TOPS,在INT/FP32格式下缩减至16TOPS。另外,芯片通过HBM和2.5D封装技术包含了16GB、512GB的本地存储。制造工艺方面采用三星14nm工艺,TDP功耗为150W,外部接口支持PCle 4.0 x8规范。

百度的XPU架构也是AI计算业界的老面孔了,在2017年就已经发布上线。不过当时百度和赛灵思一起合作,采用了FPGA的方式实现。百度当时选择FPGA的原因主要是看中了FPGA本身的高效率和可编程性,百度宣称XPU则关注计算密集型、基于规则的多样化计算任务,希望提高效率和性能,并带来类似CPU的灵活性,因此FPGA是比较合适的平台。

在架构设计方面,XPU采用的是众多微核心、搭配定制逻辑以及可以根据应用程序配置计算资源的方式。在一个XPU核心中,一个拥有多接口的内存控制器( Multi-PortMC)位于处理器核心位置,周围挂接了包括DDR4内存、DMA总线在内的各种数据存储和传输设备,其主要计算单元是众多微核心( Tiny Cores),另外还有可定制的逻辑单元(Customized logic)。众多的微核心能够实现基于指令集的可编程性,并且没有Os、缓存、域或者特定的ISA约束,能够灵活的服务于各种不同的计算负荷。在定制逻辑方面,整个逻辑是硬件可重构的,这也是FPGA的鲜明特性之一。此外,百度还提到XPU可以根据不同的计算任务对计算核心和逻辑核心的比例进行重新定义,这样能够在不同的任务中都获得较高的效能。

在XPU的微核心部分,百度将32个微核心定义为1个核心簇(Core Cluster),核心簇的数量多少取决于芯片的计算规模要求。每个核心簇通过双向256bit的带宽和多接口内存控制器联系。核心簇内,除了计算核心(被称为Core)外,还包含了一个特殊功能加速单元和所有核心共享的32KB缓存。百度特别提到,32个计算核心的数据都已经本地化并且多核心共享,这样更加方便控制和布线。

进一步深入每个计算核心也就是Core的话,百度宣称Core采用了类似MIPS的指令设计,拥有4级流水线,分别是前端的BTH/Fetch/l_buf,以及decode Q、decode/RF后,进入issue Q,然后进入ALU/load/store进行计算或者存取处理,随后交由WB Q进行结果处理。整个流水线级数短、延迟低。另外,每个Core还配备了16或者32KB的私有临时缓存,用于暂存数据,提高效能。

在新的昆仑K200上,百度还是采用了之前在FPGA上使用成熟的XPU架构,但是将其升级到了XPU v2版本。百度宣称XPU v2版本的设计思想和之前的产品是一致的,但是ASIC化后整体性能更为强大。百度还给出了一个简单的架构图,下面本文简单解析—下。

XPU v2核心内部包含计算单元、PCIe总线控制器、HMB控制器和相关连接总线。一个XPU v2核心内部有2个计算单元,分别是Compute Unit 0和Compute Unit1。继续深入的话,每个计算单元内部包含了4个XPU-SDNN核心和4个XUP-Cluster核心,还有一个16MB缓存。所谓SDNN,是指“spacedisplacement neural network”,也就是空间位移神经网络,这种神经网络算法通常用于图形图像的查找,或者在一个大型图像中查找关键内容,由于其计算过程涉及空间上的位置改变,因此又被称为空间位移神经网络。百度特别提到,XPU-SDNN可以进行软件定义,针对张量和矢量计算而设计。另外则是XPU-Cluster,针对标量和矢量计算设计,采用的是常见的SIMD指令,每一个XPU-Cluster中拥有前文提到的16个微核心。在数据存储方面,每个HBM控制器对应1个计算单元,提供8GB的HBM存储空间和256GB/s的数据带宽。

除了硬件架构外,昆仑K200在软件上也做出了一些优化。昆仑K200支持不同的框架协议,包括Tensorflow、Pytorch、国产自主的Paddle Paddle等,还提供了名为XPU ClC++的编程语言,用于用户操作编程并给出新的操作。另外,在库文件方面,百度提供了专用于昆仑K200的深度学习库,支持深度学习中常用的各种API等。在整个软件架构方面,百度给出的简图显示,硬件之上百度设计了昆仑驱动,再向上则是昆仑runtime/complier文件,再向上则分为库文件、用户自用Kernel以及图像编译器,最顶层则是应用程序、框架文件和开发人员界面等。

目前,昆仑K200的软件生态已经有了一定的基础。昆仑K200芯片目前能够全面支持语音、图像、NLP模型以及自定义模型等,即使是百度之外,也有了约10个客户在使用或者部署,整体表现还是不错的。性能比拼胜过英伟达T4

最后则是喜闻乐见的性能对比测试。百度昆仑K200选择的竞争对手是英伟达T4。根据百度的数据来看,昆仑K200在百度设定的测试场景下,均以较大幅度领先英伟达T4,包括专注于目标检测算法的YoIoV3,以及常用于自然语言处理的BERT,还有用于搜索的真实引擎模型,以及用于目标检测和像素级分割的Mask R-CNN等,可以说基本涵盖了百度这类用户在日常生活中所需要的AI操作。百度还宣称,目前昆仑K200已经在线上部署,只要用户通过百度云申请就可以调用昆仑K200了。另外值得一提的是,2019年12月,百度宣布正在配合飞腾处理器进行产品适配,将配合飞腾处理器形成国内自主可控的AI加速平台,这也是国内AI加速设备国产化方面比较重要的成就了。

最后,本文依旧照例来对百度昆仑K200的产品进行一些总结。从整个昆仑K200的发展历史、架构设计以及百度对其性能的相关介绍来看,昆仑K200还是达到了百度之前确立的设计目标的,那就是成为一款通用的、具有灵活的、可编程性相当优秀的同时也是高性能的AI处理器,其在百度各类测试和应用中也体现出了比较好的效果。但是,昆仑K200还有巨大的改进空间和提升空间,比如相比英伟达最先进的A100,昆仑K200在工艺、规模、计算能力、计算功能、数据格式支持、软件支持等方面差距还比较远,尤其是对诸如目前流行的BF类型的数据格式、混合精度支持、对稀疏性计算的支持等,都尚未在這款产品中有所体现。当然作为一款2018年开始研发、2020年大规模量产的产品,又是企业首款ASIC类型的芯片来说,的确没有必要太过苛责,但是我们依旧希望百度在下一代昆仑芯片中能够做出更大的突破和更多的技术创新。根据百度的消息,下一代昆仑芯片将具有高速片间互联功能,能够大大降低数据传输延迟,并且还拥有从云推理、云计算到边缘计算的多款细分型号,有望覆盖更多、更大的市场,值得用户和业界期待。

猜你喜欢
昆仑百度处理器
我在南昌 你在哪
昆仑润滑油
跨越昆仑
Robust adaptive UKF based on SVR for inertial based integrated navigation
昆仑
百度年度热搜榜
百度医生
Imagination的ClearCallTM VoIP应用现可支持Cavium的OCTEON® Ⅲ多核处理器
ADI推出新一代SigmaDSP处理器
百度“放卫星”,有没有可能?