下午好 今天给大家带来的主题是BannonBurf是我们字节开源的一个AI eSeq的计准测试优化跟生态整合的一套方案然后首先介绍一下我自己我是来自字节ML机器学习团队的余明辉我现在在字节负责AI eSeq相关的工作然后这次分享主要会分成三个部分一个会介绍一下背景也就是什么是AI专用芯片也就是AI eSeq然后第二个是动机就我们为什么要做BidenMaple然后第三部分就是会大概说明一下我们自己接到方案的一些办法就解决那些痛点好 然后先来看第一部分然后第一部分主要会回答两个问题一个是什么是AI专用芯片跟为什么现在就相对而言比以前受到更多的关注然后首先就是要先回答一个问题它叫AI专用芯片就何为专用它为什么叫AI专用然后我们来看一下这张图然后其实专用这个概念是相对而言的然后我们都知道这个图就是左边的CPUGPU我们被称为称之为通用的集团芯片然后它可以跑得负载更多一些然后虽然性能差但是它可以跑APCR然后腿上渲染还跑一些负载的逻辑控制然后右边那两个其实相对来说就会专用一些然后我们讲AI专用的时候其实更多的会讲最右边那个就ACIC对 因为FPGA主要会在产品验证阶段会使用就量产阶段很少见然后从最基本的一个特征上来看ACIC它最大的优势其实就是它的能效比会比较高因为简单来讲就是它ACIC底层的硬件控制逻辑没那么复杂所以它可以以更低的功耗来实现相同的算力性能对然后我们来可以看一下一个例子这个是Habana Gaoya的一个推地卡的一个架构图Habana现在被Intel收购了对然后可以看到最右边那个架构图其实比较简单相比于那个CPU的CMT架构它已经是相对简单了如果按颜色来分的话它其实可以分为最上边的GIM INGING跟底下TPC跟中间的一块ShareMemory是一个无视招待SRAM然后算力构成方面其实主要就是GIM INGING跟底下TPC来提供算力然后主要的算力是由GIM INGING来提供底下TPC是作为一个非常加类算力的补充然后在AI专用方面可以看到它对TPC的指令做了一些优化然后比如说可以做一些超大指令然后Sigmoid跟纪录这样的超大指令这个操作比较常见然后它的AGU也就是它的地子生生单元现在是按照Tensor的访问访存形式来设计的它可以我们常见的那种访问方式是把一个多维的地址变成一个现实地址然后它是可以帮你去按Tensor like那种Juicing变成一个现实地址同时帮你去Check每个维度是不是存在阅见然后这个是一个AI SIG的例子一个很典型的例子然后现在就来回答第二个问题就是它现在为什么会越来越流行难道现在通用算力不够吗我们来看一下这样图就是这样图是神经网络发展的一个大概过程吧可以就简单来讲三个阶段然后每一个阶段其实都跟算力的供应量有这息息相关的关系第一阶段第二阶段第三阶段然后现在第四阶段可能就是CHP带来带远模型然后这个图是来自于那个AI and memory wall这个Blog对可以看到那个这张图其实红色的线是Transformal類模型现在训练需要的算力每两年增长的趋势跟某个定律的发展然后红色的线跟灰色的线已经显示出一个很大的检讨差然后同时我们又知道某个定律其实就是三号是反映着我们半导体制作工艺的一个发展我们能往就是柜上面放多少个基地管然后可以看到如果我们依赖于传统的半导体工艺的进步来满足Transformal類算力的需要的话可能赶不上对然后这就是为什么现在相对而言ASIC会受到更多的关注就是除了除了现在MV在工艺链上很强势之外我们也需要更多元的算力供应对吧然后通过牺牲一些通用性来换取性能的提升就算力的提升跟价格的降低来做更好更优质的一个算力供应对这也是目前我们比较关注这块的原因然后我们第二部分就大概讲一下我们为什么要做Batman Perf这原因其实是因为我们实际观察到虽然AI专用芯片就被关注的很多但实际上落地的比较少就是我们自己在业务上发现的点然后我们就是探索了一下为什么会有这样的一个现状吧大概总结了这么几点然后一个是产品的抉择很难就是选择产品很难这个点可能用GPU同学不是很难体会到就是怎么选一个产品的还有什么难的然后第二个是它的不可控性高就是你用一个AIC比你用GPU显然是风险更高对然后设备成本也会更高然后不透明性也会更高然后我们就分开讲吧就是四点挨个讲一下然后首先产品难会难在哪呢我们来看这张图这张图是唐山博士19年会总的一张AI芯片全景图然后可以看到那个最左边是一些科技巨头的一些产品就是科技巨头然后那边是中国的一些stop然后世界范围内的一些stop然后你相比于E加NV然后你想在这些公司里面选择出他们的产品哪个符合业务的需求然后最终引入他们我觉得光是做这件事情就很难的就是选一个产品就很难然后它的不可控性高在哪呢就是首先我们大家想一下就是因为引入一个新的硬件产品它往往需要跨部门然后从业务提出需求到系统部中台部我支撑做适配然后最大好采购部去谈价格然后采买PO然后买进来中间的周期不很长可能短的话三个月长的话可能有九个月这要看货期然后中间是不是业务会迭代就是你刚开始的时候我关注的那个业务场景是不是还存在然后如果不存在了换一个新的业务场景上来模型换上来那这个你选择的产品它是不是可以满足业务的性能要求如果不满足那激活产生一人串的成本对然后试配成本高其实是说的是更枯大的生态相比一般ASIC他们因为没有一个很好的开发者生态其实是很依赖于人力去做开枪性能的优化的他们也没有那么通用性比如在模型A上面跑的一个相比于对标产品可能一倍或者两倍的就性能比例但是在另外一个业务场景上面可能就只有0.70-0.8但但其实就不意味着他们跑不到那么高其实说他们得为这些场景做一些开发依赖人力开发然后额外开发的部分其实就比较好理解了从你的硬件监控到硬件适配你平台流程者的适配其实都是都是需要额外开发的相比于枯大的那个流程而言然后不透明性其实是就是就隐埋相承的因为AC格一般都比较依赖于自己软件站LGB软件站都是封闭的不可能会给我们看到然后如果出现业务上性能不大标或者说精度有问题的话我们很难去脱离开硬件厂商来做这件事情所以这一块是会造成一个不透明性很高的原因好然后我们回到第三部分讲一下我们自己的解决办法我们先看一下Batton Perf跟Emmer Perf的一个对比对就是Emmer Perf其实是大家都知道它是一个供应商委员会主持的一个评估它比较注重的是一个公民性对 结果的公民性然后它的测试测试集更新的比较慢而且它其实是一个头尾约束中间的过程其实是不约束的Batton Perf其实就相对就每个点就是我们是一个存用户方就是站在业务的视角来做的评估就业务方就用户方来主持然后我们是一个纯粹的效果导向的就是不会说不接受你们的黑科技就是只要能做出来业务接受的效果我们都接受然后我们的模型会更新得很快然后会仅跟我们的业务需求跟缩谈然后在那个过程方面是会约束每一个阶段该做什么但我们不约束这个过程你的具体怎么做的对大概的区别是这样然后其实这就会引出我们Batton Perf的三个特点一个就是透明跟可负线性透明其实就是刚才提到的我们会约束过程约束你在哪个过程该做什么但我们不约束具体实现然后这样的话同时我们也会审核他们的代码就是我们会理由他们的然后来保证他们的Code是make sense然后结果的可负线性其实就是我们会要求每一个提交Report的Wander来提供一个可负线的环境我们会复测然后保证你在相同类型的模型上面是可以复线出这样的性能的比如是一个Restnet的Tosh的一个版本跟我们自己写的一个modeling出来的结果是类似的会出现很大的偏差然后第二其实就是我们这套评估流程一开始就是就是脱离脱离于我们自己的生产场景我们是完全follow我们自己的生产场景把这套评估过程设计出来的然后第三个其实就是刚提到的我们的测试机会频繁的更新我们一时也很open接受其他的感兴趣的用户来提交自己的一些业务诉求然后首先就回到这点就是选择男我们做了一个硬件大盘对 硬件大盘然后这个是来解决那个选择男的问题然后这是我们大概收集的目前市面上比较流行的一些产品吧对但是他不会包含现在市面上所有的产品就是我们一个是因为我们本身会有一些约束吧就是我们面向的场景还是云端就大森德所以一些偏端边的产品我们不为列进来第二个是说有一些我们可能觉得现在还不太成熟的产品也没有列进来但是不是说那个没有列进来的产品就不好我们只是需要时间去收集对 需要收集跟更新这个大盘然后如果那个从选到了一个找到一个合适的或者感兴趣的产品之后可能下一件事情就是拿它跟我们现在在使用的产品做一个直接的对比所以我们做了一个硬件对比的功能然后这个图其实解释的就是说假设现在我们业务上用的是A30对 然后现在感兴趣的是GraphCodeIPUC600那可以拿这两个直接做个对比对 看下它哪些维度上面的优劣对如果就是从对比上面的感觉还可以的话下一步其实就可以去我们的评估列表人面看看它有没有感兴趣的业务场景是已经评估过的对 如果已经有的话那相信可以就做一步就跟厂商做进一步的接触了然后数据及更新方面其实就是我们比较open吧就是业务需要什么我们就评估什么对这是这个是我们现在列出来的那个是三大类其中红色逊出来的部分是我们称之为常规基础模型然后列了代表三个方向CVNRP跟推进广告然后这三个是每一个Windows提交报告的时候必须要提交的也就是说这三个模型如果不支持入门门槛就达不了对然后中间的那个是我们自己观察到的也就是自己现在用的比较多的一些模型对业务上三个其实就是sorta模型但是这个sorta模型可能不会是特别sorta因为比如说像GbD3我们拿不到然后特别大的70B我们拿下来TOS也放不下所以会有些代表性的比如说Lambar它有一个最小尺寸的就会把它抓下来然后想提一点的就是说我们其实不支持不仅支持现在已有的这些模型的评测然后其实Bamper它是可以支持自定义的评测的如果你的模型不在这些粒子里面你只要购造一个按照我们的方法购造一个work load其实是可以去评估的当然我们也很欢迎就是大家去把自己业务上面常用的模型提一个e-sir或者提一个pr给我们然后我们把它加进来然后最后一个就是我们会说到定义接口开放过程的过程然后看一下这个这个是我们BamperBamper的一个框架对然后比较值得说的可能就是里面提到的Task Zoo跟Runtime BackendCompile Backend然后我们这样设计的原因其实是类似于在模拟我们一个ai业务的上限流程因为大概是这样就是我们一个模型从训练出来把一个模型这个point的导出上裤打一个版本的tag然后等到什么时候业务迭代的时候去做U拍压缩然后上线对然后上线之后就会用到具体的一个模型的Runtime然后模型的Runtime就前面又包括一些前处理然后模型的运行室加上模型的后处理这样子一个流程然后我们就是按照这样子一个实际上业务使用范围来就是流程来使用的对来评估的然后从那边大概的征途也是可以看到我们的一个的一个work load其实就相当于裤上的一个模型然后get back again就是模型压缩的过程然后Runtime就是实际上业务的模型运行室使用到的一个代码对然后我们苹果方法也是会搭一个local server然后用client去发压来测QBS跟那个latency对然后我们其实这样做的目的只是就是为了打开双面的黑盒子因为我们自己跟厂商的介入过程中就发现厂商有时候会瞎猜就是不知道我们想要什么然后他们会去做这个做那个然后跟我们的业务宿就不 match然后我们自己这边因为也没有一个统一的框架对也没有统一的接口就是导致我接A产品的时候需要人力去录一遍接B产品的时候要去录一遍然后也没有一个提前的一个方式去了解这个硬件具体怎么work的对然后我们其实做这个其实就是希望我们能够做成一个业务侧跟厂商侧的一个桥梁吧一个bridge把这个两边给连起来然后最后一点其实就是我们刚刚提到的我们以效果为导向是接受厂商黑割剂的对也就是我们我们自己常说的就是RY驱动我们可以看一个例子就是这个例子是AirBird在三个backend上的一评估结果然后可以看到就是画红圈的这个这个spu它的QPS相比于其他两家是110线对吧10000多比1000级别对差了一个数量级了然后我们就会很好奇为什么它可以做到这么高那我们就往下看看然后找到它的一个评估的细节然后可以看到原来它是用了印的Bug and Bev一路的捆镜度就是它是一个SPARS的一个网络就是它把一个dance网络变成了一个16倍的西数化的网络然后它在做这个事情的同时又保证了FE4高是没有掉太多就87对没有掉太多然后它的QPS可以打到10000多对然后很多人可能就会好奇就是你把一个捆镜度的加上西数化的结果跟一个dance的算力的一个结果放一块比是不是不公平其实就是我们想说的就是我们并不认为在优化压俗过程中就是用的技术是就是直接用技术来否定它是不合适的我们是应该以切归导想就假设我们在APPLE这个业务上面我们业务最终关注的就是FE4高就是一个分类的一个精度或者怎么样那它它就可以吃到QPS10倍就相比于其他家这个1万多的QPS收益但如果它关注的是数值的飘移就假设说Apple后续接的是一个还有下面的流程它就会关注一个数值deaf那这个就是SPU它的一个就是明显不合适因为可以从那边看到它已经跟CPU的一个baseline差别太多了对然后我们最后想说的是Bandung Prove其实它虽然是一个基准但我们希望它不只是一个基准我们希望它其实可以做到评估计生产就是你评估的结果是一定可以迁移到你的生产环境中的然后也希望在评估生产中沉淀下来一些知识就是大家怎么更高手地用ACC用AI专用芯片然后最后也希望可以形成一个大家一块儿来建设如何在意诱方使用AIACC的一个社区然后最后可以给大家售一个来自厂商的反馈这个是一家英国公司叫Graph Call他们接了Band Prove之后给我们提的一些反馈他觉得就是Band Prove在他们产品打磨方面跟客户推广方面跟市场群方面都起到了一些正面宣传效果所以我们也希望如果在座有来自厂商的同学如果可以跟我们联系或者说跟我们一块儿把这个事情做得更好对好然后最后就是一个QA环节那就没有什么问题