安谋科技最近更新了“周易”NPU IP产品线,这次发布的新品是周易X2 NPU。比较不同往常的是,这次的媒体沟通会,安谋科技花了相当大的篇幅去谈技术。这篇文章,我们就尝试还原安谋科技对于“周易”X2 NPU的技术解读。
安谋科技最近更新了“周易”NPU IP产品线,这次发布的新品是“周易”X2 NPU。“周易”NPU产品系列布局如下图所示。从安谋科技官网的产品介绍来看,“周易”目前主要分成了Z系列和X系列。
大方向上,这两个系列在算力上存在差异。安谋科技产品总监杨磊在媒体沟通会上说,Z系列主要面向AIoT场景——通常采用Z系列NPU的应用对成本比较敏感;而X系列是偏高性能定位的,面向如“手机、汽车智能座舱、ADAS”等场景。
安谋科技执行副总裁、产品研发负责人刘澍则从架构的角度概括说,V1与V2架构更多用于AIoT;而“这次发布的X2系列,是第一个周易V3架构的NPU,单核算力提升、效率提升”加入了诸如“新的FP16与BF16支持”等设计。
比较不同往常的是,这次的媒体沟通会,安谋科技花了相当大的篇幅去谈技术。这篇文章,我们就尝试还原安谋科技对于“周易”X2 NPU的技术解读。从安谋科技的数据来看,虽说目前端侧用于推理(inference)的NPU,超过一半以上都用了自研架构,但剩余采用IP授权方式设计的NPU,“周易NPU占的比例是最多的”。所以对“周易”X2 NPU的技术解读,在NPU市场应当也会具有一定的代表性。
除了“周易”X2 NPU的发布之外,安谋科技这次还谈到了”周易”NPU开源软件计划和生态伙伴计划——我们认为无论这个计划未来的执行情况如何,在碎片化的端侧推理NPU市场都有相当大的价值,无论对安谋科技自己,还是对整个市场。后文也将谈到这部分内容。
V3架构的灵活性和可扩展性
“周易”X2 NPU就是基于V3架构的NPU IP,从上面的路线图来看,未来应该还会有更多NPU产品采用V3架构。安谋科技NPU研发高级总监孙锦鸿介绍了这代架构实现可编程、高度并行的弹性扩展的设计思路。
每个核有两大部分,其一是灵活的可编程单元,“采用VLIM结构,是通用向量处理单元”;其二是AI固定功能单元,“我们专门为tensor处理做了不同种类算子加速单元。和灵活单元有机结合,成为可扩展的核结构。”孙锦鸿说。
上面这张图给出了基本的框图。堆叠更多的NPU核心,达成10TOPS~80TOPS(int8数据格式)的算力扩展;另外,多核构成一个cluster,cluster本身可以再做扩展,最多达成320TOPS理论算力(最多4个cluster可达成这个理论算力水平)。当然还需要搭配NoC连接、片内存储资源,以及调度管理(Task Scheduling Manager)等。
上面这张图给出了不同层级的并行度支持情况。孙锦鸿明确了周易V3架构设计思路就是遵循并行和可扩展性,这对当代NPU而言也算是个常规思路了。指令和数据层面,“整个‘周易’NPU的设计核心思想在指令,还有数据处理单元的同构计算里做到了最大并行。如果是异构,我们将数据的Channel和Batch,甚至异构算子做并行,在同构和异构单元里得到统一。”最终通过OpenCL介面将不同扩展性的计算单元提供统一编程。
安谋科技列出“周易”V3架构与“周易”X2 NPU的几个特点,也属于架构层面的总结(1)周易NPU团队定义的1000+专门针对不同场景的指令,基于VLIM结构,“由长指令和短指令构成,混合支持64bit和128bit指令包”;(2)支持AI固定功能加速,提供4K MAC矩阵,适用于CNN、RNN、Transformer等结构,提供可重置的结构单元,可适配新算子——尤其对汽车领域需求自定义算子的客户。这也是灵活性的一种体现;
(3)灵活功能单元部分,提供针对AI标量、矢量指令,藉由OpenCL做统一编程;每个基础单元可做到最高1024bit/cycle的数据处理;(4)加入FP16/BF16/FP32浮点支持,对于FP16的矩阵浮点运算支持到最高128MACs/cycle,孙锦鸿对此说“虽然我们的量化能力很强,但我们也希望支持一些原生的浮点单元”,尤其像汽车应用场景,提供额外的精度也是客户的需求;
部分特性可能是涉及到了更完整和附加设计的,(5)针对算力扩展,任务调度单元要达成较高的效率,以及给出友好的用户界面;(6)效率提升体现在,通过内部buffer和压缩技术,从存储和传输角度,降低带宽需求。“基于此,采用7nm工艺时,功耗可以控制在10TOPs/W。”
这些内容,虽然整体谈得还是比较通用和概括,不过这对于我们理解端侧NPU的架构设计,仍然是相当有帮助的——国内愿意面向媒体去谈这些的企业也的确不多。其中的某些部分在后文会有展开。
“周易”X2 NPU解析
基于可扩展性,X2 NPU的市场覆盖到了汽车信息娱乐系统、ADAS、手机/平板/PC、云与边缘侧的推理卡等。针对大算力推理卡的应用,杨磊也提到了GPT——前不久的GTC上,英伟达就更新了自家的推理产品线。可见以ChatGPT为代表的生成式AI,对于云与边缘数据中心来说,就推理侧提供了相当大的市场机遇。这可能也是安谋科技期望藉由V3架构与“周易”X2 NPU的扩展性特色去覆盖的市场。
既然最高能达成320TOPS算力(Int8),这里再展开说说“周易”X2 NPU的扩展性和灵活性实现,以及安谋科技提供的一些第一方性能对比数据。
前文已经提到了,这代架构相较此前的单核方案,有了多核、多cluster的选择,达成了算力扩展,如上图所示。当然核心内部有自己的内部存储,到cluster这个层级也有个Global Memory,以及内部NoC连接各个核心,协调核间数据通信。多cluster层级,右边对应的也有NoC和可选的片内SRAM。
有个比较重要的组成部分是Task Scheduling Manager(TSM),负责任务在多核、多cluster间的调度。“这是‘周易’X2 NPU最典型的形态。”杨磊说,“举例来说,比如汽车有10个摄像头,10路数据进来——每一路都跑一个检测算法。对我们来讲,就可以把它当成10个任务。如果只有4个核心,调度器会让空闲的核心做计算。”“这是动态、实时的调度解决方案。”
安谋科技给出的数据是,100ns硬件任务分发性能水平,充分利用多核计算资源。孙锦鸿稍稍分享了TSM的部分细节,具体如上图所示。“主控Host(CPU)只需要在内存里,根据队列关系进行任务排布,TSM单元就可以自动把合适的并行任务调度到NPU的核里面。”孙锦鸿表示,“这个调度过程完全不需要主控CPU参与”,“可以做到极大程度的并行,这些任务就可以通过无阻塞的任务生成进行合理排布。”
除了TSM之外,杨磊还特别谈到了用于节约带宽的I-Tiling方案——从介绍来看,这是一种将高分辨率的画面帧拆分成多个tile的技术。如此一来,小的tile用片内cache就能解决,减少与外部存储交换数据的操作,也就部分隐藏了外部带宽需求——理论上应该也能降低功耗,听起来和移动GPU的tile-based有点相似,虽然大概管线内所处阶段是不一样的。
“比如针对4K分辨率单路影像,做去噪声计算,需要40GB/s的带宽。”而I-Tiling切分以后,带宽需求可以降到4GB/s,也就是相当于降低了90%的带宽需求。“这是‘周易’X2 NPU里面,我们做的特别好的技术升级。”
上面这张图给出了周易X2的更多特性,除了前文已经概括了的V3架构、算力单元可扩展、I-Tiling、实时任务调度器、混合精度支持、较低的功耗水平之外,还有几个特性。
其一是“优化的Transformer性能”——这一点好像是当代AI芯片,尤其高算力AI芯片集中火力的一个方向,毕竟GPT之类的预训练系统都是衍生自Transformer。杨磊也提到,汽车领域大量采用Transformer模型——基于分割检测。
孙锦鸿说:“我们的IP可以很好地处理Transformer模型,对Transformer结构加速有很好的优化。”上面这张图比较了Swin-Transformer——这是一种视觉Transformer,经常用于图像分类与密集型识别任务。这张图比较了“周易”X1、X2,以及某个“汽车SoC A”的性能差异。
“除了一些MAC配置比较重的算子外,我们针对Softmax、Instance Normalization、Layer Normalization、Slice、矩阵运算等都有合理优化,才能达到这个实测结果。”孙锦鸿表示,“另外,因为Transformer的自注意力模型的block有很多不同的定制化需求,我们也提供一种叫primitive(原语)的新方法。”
对于开发来说,primitive一般是指更基础的介面,可用于构建更为复杂的程序元素或介面。这里应该是说让更有余力的开发者从更低层级,更好地用上算力资源,以更高的效率和性能去跑Transformer。这对于“周易”X2 NPU应用于汽车ADAS、云端推理加速卡会有很大的价值。
除此以外,“周易”X2 NPU的其他特性还包括“增加无损的权重压缩(weight compression)技术”——主要也是起到节省带宽的目的;面向手持设备做了专门优化,包括拍照的AI降噪,视频的AI超分和插帧——杨磊为此还列举了“周易”X2 NPU的方案示例,达成30TOPS算力的NPU,用于手机、平板和PC时,对暗光拍摄降噪,以及视频会议的AI超分、插帧都有帮助。
安谋科技给出了第一方的基准测试对比数据。上面这张图对比的除了“周易”X2 NPU之外,还包含三款竞品,被标注为“SoC G1”“SoC G2”“SoC D9”,对端侧推理GPU了解的同学可以猜一猜对比的都是谁(骁龙和天玑?参考骁龙8 Gen 1的AIE标称的AI理论算力为27TOPS)...
这个对比是客户端方向的,不过并未明确核心数之类的配置(只说是相似的MAC单元配置,可能是杨磊在谈示例的时候,提到的3核30TOPS配置方案);对比的具体是ETH的AI Benchmark——手机上比较常见的AI基准测试。“可以看到精度方面,X2能匹配这些国际旗舰SoC,甚至说比竞品更好一点。”孙锦鸿说。
“在包括MobileNet、UNET、超分、DPED,或者YOLO等典型网络,我们和竞品旗舰SoC比有明显的性能优势。X2在架构和性能上能够达到国际一线SoC的水平。上述性能比较都是基于相似的MAC配置来做的。”
汽车方面的对比,也是跑了一些典型的网络。这里竞品比较的“Vendor C”,只说是“流行的SoC解决方案”。“相比该SoC,X2最多有高达260%的优势”——主要说的MobileNetV2网络的对比。
开发软件平台,和碎片化的解决之道
有了硬件,自然就需要配套的开发SDK。安谋科技的方案是周易Compass软件平台。下面这张图给出了大致的框架和构成。
包括上层对接主流的AI框架;AI模型部分包含了“广泛验证过的模型,放在公开的model zoo里面”;中间层,囊括了软件优化单元、模型量化部件等各组成;底层,“可以对接Linux、RTOS或Arm NN”;“并且提供NPU的simulator”。
“我们也接入了TVM的设计(用于深度学习系统的一套compiler stack),能够有效地和Arm的其他IP,包括CPU、GPU结合起来,形成合理、异构运算调度”;以前安谋科技的产品这部分应该是只支持Arm NN的。这次的更新也就达成了更为完整的异构计算解决方案。
孙锦鸿将“周易”Compass软件平台的特点概括为:主流神经网络框架支持,而且因为IR(Intermediate Representation)公开了,用户可以绕过框架去用NPU资源;支持混合精度量化,对称和非对称量化,“还有一些Per layer/Per channel的量化方式”,“我们在这个技术领域有较深的积累”;提供OpenCL和primitive的开发方式;“做了很多算子融合,针对CNN、RNN、Transformer做了优化”,“通过算子融合,可以达到最大的性能提升”;“支持不同种类的model”;“提供IDE、Debugger、Profiler调试工具”。
值得一提的是,孙锦鸿谈到了“结合灵活编程、高效的算子处理”,“支持很多优化过的算子”,所以跑FastRCNN/MaskRCNN时,周易NPU IP占用的CPU时间更少,“我们可以大大节省和CPU的交互”。
另外,孙锦鸿特别提到了Graph Optimization图优化策略,包括针对Transformer的constant folding;CSE(公共子表达式消除)优化,算子融合“把并行的分支合成到唯一分支的执行力,减少运算时间”;transpose优化,减少数据搬移动作;Crop/pad操作融合,提高运算效率等。
杨磊强调了开发过程中“自定义算子”的易于部署,“‘周易’Compass软件平台已经支持上百种AI算子或AI层,也支持上百种AI模型。希望通过这样一套周易Compass软件平台来提供全部的软件模型。”不过周易NPU也具备“完全可编程性”,“客户可以开发新的算子。尤其在汽车领域,无论模型、数据对客户来说都是核心资产,算法中需要采用很多自定义算子。”
对于开发者而言,借助C/OpenCL可实现自定义算子,用工具链中的编译器将算子注册到模型编译器,部署私有模型。“整个过程不需要我们参与,完全由客户自己实现。”杨磊说,“今年我们有个汽车领域的合作伙伴,自己开发了大约40个算子。”“汽车场景对自定义算子需求还是很强烈。”
前面提到一点,“周易”Compass软件平台前端的IR部分公开了,这应该是安谋科技NPU开源软件计划的一部分。NPU开源计划和生态伙伴计划推向市场的大背景,是推理AI软硬件的碎片化——换句话说就是AI推理的市场玩家多样化,每家都用各自的软件栈——安谋科技统计了60个AI推理芯片项目,发现有将近40种工具链。客户和开发者一旦要换个平台,迁移是个麻烦的过程。
另一方面,杨磊提到“我们发现,在软件部署的过程中,(部分客户)存在很强烈的白盒开发需求,希望工具链是以源代码的形式提供的。”“越是以算法和数据为核心的合作伙伴,越是有强烈的软件工具链白盒诉求。”
所以安谋科技从2022年开始做开源计划项目的准备,目前的第一阶段开放了第一部分源代码:除了前面提到的IR,上图中的绿色部分都做了开源,包含解析器(parser)、量化(quantilization)、驱动和调度(runtime)。基本就是杨磊所说客户白盒开发需求涵盖的部分。答记者问时,杨磊说下一步还会陆续放出更多的源代码。
除此之外,这个计划比较有趣的部分是在于对第三方NPU的支持。主要是有自研NPU需求的客户,“我们把软件开源之后,能帮助到他们节省50%的软件工作量。他们可以参考、兼容我们开源的解决方案。”这不失为一种开拓自家NPU生态的方法。
这里安谋科技更多在想的,应该是“更欢迎自研NPU可以兼容周易架构”,如此一来则“在硬件开发和软件开发上,大概能节省超过50%的工作量”。
在“NPU开源计划”之外,配套的还有生态伙伴计划。即除了芯片设计合作伙伴,也将其他层级的合作伙伴拉入伙,比如OEM厂商,汽车领域的Tier 1、Tier 2,以及软件开发者等等。这个计划“面向上下游所有可能的参与者”。对于安谋科技而言,不仅是“周易”NPU,“星辰”CPU、“山海”SPU、“玲珑”ISP/VPU都涵盖其中。
“我们希望通过生态伙伴计划,软件和应用开发者能够从上到下打通他们方案的应用场景,从基础的做产品模型展示,到最终产品落地。我们也会配合合作伙伴做一些联合推广和营销,包括技术峰会、论坛、培训等。”杨磊表示,“截止到目前,已经有40家合作伙伴参与到了生态伙伴计划中,包括汽车领域内的芯片供应商、Tier 1、Tier 2和算法厂商,也有AIoT、智能手持设备、高性能计算基础设施等场景的合作伙伴。”
随着AI计算愈发走向成熟,这类芯片现在百花齐放的局面很快会走向终结:当年GPU还只用做图形渲染加速时就是如此。对于现阶段的NPU而言,软件平台、工具链显然是重头戏。孙锦鸿就谈到安谋科技开发软件的团队规模,是大于硬件团队的。“我们的核心差异,就在于投入大量人力去做深入的通用软件栈开发。”这本身就是该市场走向成熟的某种体现。且随着生态的扩大,这部分的负荷还会越来越重,直到市场剩下为数不多的市场参与者。
“‘周易‘X2 NPU现在已经到了成熟阶段,可以正式交付客户。并且已经有多家合作伙伴在基于新一代的‘周易’X2 NPU,以及X系列的IP去做芯片开发。”杨磊说,“今年会有多款搭载’周易’X2 NPU的芯片产品问世。”“无论汽车,还是手机、平板或桌面台式机等领域,都已经有了α客户。”这也是NPU开源计划和生态伙伴计划迈进的第一步。