那个时间差不多 那我就先开始吧因为一会儿还有Reception 大家可能想去参加大家下午好首先非常感谢大家能来到这个峰非常坚持到现在我个人也非常高兴 非常荣幸没有这样的机会跟大家去分享和交流我那叫秦解军 叫我秦解军就好了我是来自VMA的OctaOcta就是这里的Octa CTO它实际上是个缩写 是Office of the CTO简单的来说就是CTO办公室这是大的BU 那会属于BU下面的一个鼓舞铺我们鼓舞铺是主要关注的来这种短期的一个口运的vation会跟我们自己内部的R&D的Product Team也会跟外面的Partner 甚至Castome一起去伺服一些新的项目 新的技术之前我们研究的方向相对于Open一些我会坐在这个机器学协 边缘计算还有一些虚拟化技术还有像什么WebAssembly 甚至硬件Race Fire DPU等等接下来我们Team会稍微Focus一下以后都会集中在AI上今天也是带来了我们在机器学协领域的一个探索研究来展开就是这里的主题Boost Machine LearningHydrogelius ArcelerateWith Ray on Kubernetes其实我相信 Kubernetes 还有Ray大家获得多少都已经熟悉了所以今天主要突出的是我们怎么去支持这些依购的硬件加速设备去增强学习增强机器学习那谈到增强机器学习你少不了要给硬件打交道那我们希望支持全面一点支持众多的加速设备不单是这里面的这个A年宝起来我们还是希望做到这个simulacity无分的銜接起来什么意思呢我们又是怎么做的呢我们接下来去看一看那今天呢真的我这样今天真的我这样安排首先呢会谈一下我看到想解决的问题在机器学业领域那之后会谈一下Ray基本概念之后会再引出我们这个怎么去增强机器学习后面有好多demo帮助大家有直观的了解和认识最后呢会谈一下我们接下来做什么也算是结束吧问题领域其实就是这里的这个background那就是我看到关注并想解决的问题那谈到机器学习呢那这几年发展比较快无论是这种传统的运气算也好或者新奇的这个边缘计算埃及computing也好那AI的workload很重要它往往都排到最前面甚至排到第一位但是AI的dolpson总是会依赖硬件加速设备那谈到硬件加速设备我相信大家可能熟悉的就是英文达的GPU或者是你用CPU想Intel的CPU其实呢除此之外有很多很多这样的硬件加速设备比如说AMD有GPUGoogle它有自己的这个TPU它还分为什么Cloud TPUI之TPU那即使我们回到Intel除了它的CPU以外它现在有很多一系列的加速设备VPU、NPU、FPGA它实际上现在还在做GPU这样的那即使谈到FBJ像Lady 1的Zilinx它也有些AI的Athelerator其实除此之外还有很多这种ASIC-based的硬件加速设备基本上这些主流的Cloud PublicProvide实际上他们都在做自己的加速设备甚至像Meta我不知道大家观众没有有很多他们也在做自己的加速设备那这么多的这些加速设备当然是好事因为你可以根据你的选择需要去做选择你的这个布置环境你的这个成本你的性能需求去做选择但是呢它给你的用户的一致性使用带来的挑战毕竟这些加速设备架构是不同的它是一购的这是一个问题那我网上再看看上面的这个软件平台比如像这些Frozenwalk大家会用Tenseflow会用Petouch什么OnixCafeMaxNet有很多很多那也加剧了这个问题在这种条件下我们在生产房间往往我们又希望能拿到最好的性能现在就变得很空拿了那针对这三个基本问题我们也去看了有没有这样的一个平台在关注这个问题或者解决这个问题但是呢特别是还能Allow this cloud native没有找到这样一个平台那怎么办呢那我们先还是从这个平台开始说吧因为平台是基础我们看了很多平台但后来也看到瑞为什么看到瑞呢因为这个OpenAICHATGPT都是在瑞上去做的我们去看了但是当你深入了解瑞的时候你发现瑞确实是一个不错的平台简单来说瑞是一个Python First这样的通用编程式框架其实它是可以做很多事情的不光是机器学习只是刚才我提到了这个事呢大家就认为它的背景就在机器学习上所以我们往往把这个瑞称之为针对摩什德林这样一个灵活的分布式这样的一个分布式Python这样的东西那这里我从它的Gate Hub就铺在Gate Hub上去拿到一个样图你来看一下你会看到它有DataTrain,Till,SoSo就是推理你会看到它会包含所有这个机器学习Pyple Laban的所有部分你的这个数据的预处理然后Train然后Gate Hub然后最后就做推理很完整是这样的平台而且实现的分布式计算但是它是否能满足我们的要求解决我们前面提到的问题我们就往下去看一下首先说一下关于增加机器学习少不了跟这个So就是推理相关跟Train相关有这样的部分我们都会后面一看一看我还是先说一下跟Kubernetes的机程稍微好说一点因为瑞它本身有自己的Cluster一个所谓的我要成为这个Native Recluster往往它部署一个Hide接点或者还有弱干的Work接点去执行任务其实单接点Hide接点也是可以执行任务的是这样的一个状态它跟Kubernetes是怎样结合的呢它有个Kubernetes这样的一个Project实际上它是一个Open Source的Kubernetes Operator它就是帮助你简化部署RE的应用程序到Kubernetes换讲说它会帮助你刚才我提到的Native Recluster到KubernetesCRDRE Service还有RE JobRE ClassRE ClassKubernetes它要管理RE Class的生命周期创建删除或扩展RE JobKubernetes就是通过RE Job去创建你所需要的RE Class当它Ready的时候提交你的 Job当它完成的时候去删除这个Class的等等这些东西RE Service包括RE Class还是RE Server主要主要关注的一些东西就是高可远性领导机的东西这样的东西从这一点来说RE可以支持这种Kubernetes它不但支持这种unprimed Kubernetes它实际上还支持Cloud你看最下面一行提到EKSGKEAKS如果大家熟悉的话这就是主流的这些Public CloudProvide所提供的Kubernetes Engine它都很好的机车所以关于我们刚才提到的问题最后一点它确实有这样一个支持Kubernetes的这样一个平台这点是没有问题的但是关于增强机器学习我们再主要去看一下那么先说RE TrainRE Train就是Kubernetes Training这样的一个Library从右边这张图你会看到它有这样的一个主要的四个Component我列就在左面了Training Function还有Walker还有Scaling Configuration还有TrainerTraining Function其实就是你定义的运户次定义的训练逻辑的那个Python函数怎么是Training一个Walker就是执行训练认为进程实际上就是每个Walker要执行的就是Training Function有多个Walker也会执行多个Training FunctionWalker的数目就决定了必行度那在哪儿指定呢Scaling Configuration会执行NumberWalker还会执行GPU资源利用等等然后Trainer的意思将会把上面提到Training FunctionWalkerScaling Configuration有机的放在一起一起去发布分布式训练的任务那这里我想主要想提醒大家关注的是你看它的右上角其实认为Trainer它是针对这些已有的机器框架做了一个你看它有拍套式的Logo是吧要看Hug & Face等等所以它的Training本质的能力还是Leverage这些已有的机器学习的框架这是个问题Resolve跟Retrain正好是对立的关于Online Influence实际上就是推理这块这样的Labry他自己也说了我们也是架构框架无关的Tensor Flow 也好拍套式也好其他我们都做支持我这里接取了一个片段代码你会看到这样Resolve部署的时候里面走了一个Tensor Flow实际上还在用Tensor Flow的APModel然后还用Tensor Flow API去做推理实际上也是Leverage这些Frozen Work去做而且它确实也显示的说了我们不做这样针对Model特定的这样的优化它不做所以呢在这我现在就总结一下回到我们前面提到的那个四个问题Retrain作为平台只是可能内体没有问题继续学习但是关于增相机器学习支持众多的硬件加速设备它靠的是已有的这些框架的支持这些网络是没有的所以需要我我们去把它补期然后才能帮助我们彻底的解决前面提到那四个问题怎么去解决呢实际上在谈到那四个问题的时候我们自己是想从做一个从零开始的这样的一个Frozen Work彻底解决的问题当时我们想构建的目标是这样一个Cloud到爱者端的一个能在Kubernetes上部署的端一端的Motion Service包含了两个主要的部分一个是针对Motion Service这样一个CRD-based Accelerator另外一个部分就是我们引入的特有的Transparent BackBucket这样一个CRD-based机架去增强积极学习支持众多意念加速设备关于第一点呢我就稍微提一下其实我们你也看到我们是利用Open Source的一些组件并扩展像NFDNode Future Discovery去帮助我们找到你的Device进行一些过滤然后部署各个弯朵提供的Device Plug-inInvouch这样的环境然后结合Node Select还有Scheduler完成一个基本的逻辑实现关于这一部分实际上我们可以Leverry或者做一点点增强就可以了最主要的部分在增强机器学习这一块我们怎么增强机器学习实际上我们利用了GraphCompiler图编器什么是图编器我们可以这样划风一下这个机器学习软件从上就是我前面提了很多次的Deep LearningFramerWalkTensorFlow,Petals,Onis等等这样的东西提供大家这样的一个接口最往下会有这些Device Driver或者是Library是这些2K的帮助你真正去operate下面的零件加速设备在中间我们叫做Computation Graph然后我们GraphCompiler就在这它的目的是什么呢它的目的是帮助你去优化Pass OverComputation GraphFallWalkBackWalk进行优化而且它会从不同的Level去优化举个例子Graph Rewriting或者Failure或者是往下可以优化的使用Memory组织开始的Mess或者冰心化的处理等等有很多这样的措施总之通过这一系列的操作以后它就把你Computation Graph完美的就贴合Map在你下面的硬件加速设备的operation实现一个优化加速主流的GraphCompiler有这么一些比如像TVM因为达到Tense RT还有IntelUmple Veno或者AMD Rock或者ZilinxFWC AI大家可能或者应该听过一些我简单概括一下如果它是Open Source的GraphCompiler它就会中性一点它就会支持不同版本的硬件加速设备如果是Wando自己提供的往往它就会focus在自己的硬件加速设备上这个很容易理解而且性能相对来说要比其他的好一些那是这样的状况我们确实也是Library这些已有的GraphCompiler去进行一个硬件加速的优化和提升但是我在这里想提醒大家的是这些GraphCompiler相对于来说它就相当于第三方独立的一个软件你要使用它你得部署它你得知道怎么用更重要的是你要显示的靠它的API才可以这是问题我们是怎么做的呢我们确实也是刚才我说的我会把这些GraphCompilerEnable的这些几轮的机器学框架里面去增加学习增加机器学习还有支持众多的一个加速设备但是呢我们把它做成那个simulacelite这个部分这点非常重要所以我们有这样的一个底纳构建这样一个cell system前两点一个backend automated是什么意思呢我们是希望自动化以后不会因为我们引入了GraphCompiler不会因为引入了我们的实现你要显示的靠GraphCompiler的API你要显示的靠我们的实现不需要最终的目的是no code的趁着你原来跑在机器学框架上的这个程序拿来就能用但是能支持下面的这一件加速设备而且能拿到最好的性能这是我们的关键后面的这一点想实现一个统一的cellback texture那是因为希望支持更多的机器学框架支持更多的GraphCompiler怎么去实现的呢先简单提一下那我们引入了一个独有的interposed那这个呢会帮助我们去拦解你所部署的机器学框架的API那然后呢我们刚才也说了我们会把这GraphCompilerbuild in的这些机器学框架里面去进行自动化操作然后拦解起来完成这个目标我下面用这张图再给大家解释一下那这是相对highlight architecture现在价格有点变化但是基本逻辑还在这我画了很多block像逻辑估论的画分那么咱们先看中间这个computer note就好了最往下你会看到一个system agent我们首先不属于一个agent它会帮助我收集你硬件平台的一些configuration的信息当然你的硬件加速设备是什么然后我们会收集你的CPU你的memory我们都用得上CPU我们还会关注你上面的一些指令级比如说有时候我们会用CPU的一些指令级去做加速像inter的这个AVXAMX等等去收集起来根据这些收集的configuration这些信息呢我们的这个mind会适配一个你的bacon的graph compiler默认呢我们用这个tvm为什么因为tvm是open source它会支持不同弯的Hardware所以先用它好了当然你你部署的这个硬件加速设备比如说是英文达GPU所以它可能支持tvm它也可能支持英文达自己的tensor rt甚至别的这时候你可以通知我们的configuration进行一个ArtsPager选择一个你期望的在这之后呢我们会把我们的interpose上面的部分注入到你的然后会干什么呢这时候当你再次运行你原来的native基于你的机器学业框架的application的时候那我们就会在round time的时候拦截下来拦截下干什么你漏的model的时候我们拿到你的model进行一个compile优化因为这些graph compiler需要一个compile然后生成一个所谓的中间键叫做intermediate reputation放在那当你做推理的时候呢我们再次拦截住用刚才precampile的这个graph这个中间键然后对你的输入再返回去是这样的逻辑然后其他的部分呢还有比如像对precampile的这个中间键的机器进行开始重处方便你快速地使用大概是这样逻辑是这样那我对其中的interpose稍微再做解释下因为实际上大家如果听出来它是最关键的部分那正是它在round time的时候帮助我识别你部署的继续去框架里面我们需要感兴趣的API拿到那然后呢把它redirect到我们back in the handle那里面分装在这graph compile的一些操作上去就实行那个自动化操作我现在举个例子以tensorflow为例Python和C++分别说一下tensorflow-python我举个例子下面有keras大家如果写过这样的一个推理程序基本上是靠keras的model.loadmodel去load你的预讯链的model然后再靠你的model.project去预测你的这个数据是吧那这时候呢我们采用一些tips然后在round time的时候让loadmodel原来的loadmodelredirect到我们自定义的这个loadmodel原来的project走到我们design.project就要来去做做些什么事呢在我们loadmodel走到我们loadmodel的时候呢我们就能拿到你的这个模型嘛对吧拿到模型以后我们要做一个自动化解析然后我们需要知道你模型的比如说input的内模input的shape还有opt shape等等这些讯息因为这些graph compilebn的时候它自然需要这些信息现在我们要做自动化处理我们自然要自动化的解析这些model然后呢拿到这些信息以后我们就可以靠graph compile自动编一层这样适配你现在印在塑平台的这样一个中间键放在那那下次你就要predict的时候我们也走到了我们的predict哎我们这时候就拿到我们刚才predict compile的这个中间键然后对你现在输入的这个真实输入进行推理把结果返回去这也反倒了一框架也就反倒了点advocation你会发觉整个过程都是透明的用户不需要感知的不需要做任何修改那C++的实现也是差不多C++本来Tenseflow自己是支持C++的但是这样用的比较少我更想用Tenseflow 7这种在生产环境里面常用的model 7去做利的它本身也是C++所以C++的目标呢跟我们下面拍摄是一样的拦截然后自动处理但是实现稍微有点不一样因为C++的时候我们就得去找到这个advocation的内从找到那些API接口的入地址然后在那里注射一些代码确保它能跳转到我们的Handle里面去做一些处理相当于是在Handle AI application无论如何我们对Python C++所有的这两种语言支持都做到了实现接下来我就用代码来去看一下我这里前两个代码是Touch ServerTenseflow Server在GPU上的时候用Bacon的TVM加速然后呢第三个就直接跑到瑞上一个拍Touch的例子跑在GPU上TVM做Bacon的加速带在瑞上的环境先看第一个吧这是Touch Server我上面有两个特别的share上面呢我就先看了一下我这个Touch的环境我有这样比较低端的显卡在这里演示是够的先看它的一个状况之后呢我就直接去用Touch Server的Docker image去取Touch Server就这样起跟正常起没有什么区别就好这个启动过程中的然后呢我就会知道我的Bacon的server也就起来了它会看你现在是用的GPU首先我知道你用的设备是什么稍微等一下我记不明白你看我们的server是起来了然后待会我知道了你现在是部署在GPU上没有问题我拿到的设备是吧然后呢这个问题完了剩下的就是下面Touch Server它进行推理的时候这个例子它是用了两个标准的API第一个API是要传一个WAR文件这是干什么呢其实Touch ServerWAR文件干的事就是它里面包含你所要用推理的Model还有部署Model所需要的一些configuration其实对我们关键的就是说你要在loadModel你看我在上面的时候调了一篇的时候你看我在滚动因为我就拦截住了你跟loadModel的操作自动的然后呢我就对Model进行解析右边一会打印出来一串按数据我就知道input name还有input shape比如13,224,224不需要你填那我就知道知道以后我现在就可以结合GPU还有这些Model的信息compire就好了最后生成一个GraphCompire就是它的中间键TOM用的叫TOM Relay这样的一个东西这个编语过程大家可能看到有点时间但是大家要记住的这是在loadModel的时候它并不是在你做推理的时候所以做推理的时候是在加速loadModel的时候是额外有点开销这个时间跟你环境的配置还有你的Model大小有关系但是就是想一直想强调大家这是loadModel的这种时间并不影响你推理的时间大家经过一段时间API执行成功了这个时候我就可以像往常正常一样你用API去做个推理这里面用了一个Model的图片应该是刻了一下然后识别很快也就识别出来了然后在右边的我用红色也显示打印出来你会看到我其实在用TOM GraphCompire在做推理并不是用Touch ServerTouch机制在做推理所以从往实现了细细学习的增强下面一个例子是TOM Server差不多我这个因为这些videos都是单路录制的前面都是在检测环境没什么区别完了以后我就像上次一样最后起的是用Touch ServerDocal Image去取Touch Server就好了起作时候稍微跟上次不太一样的是第一它启动的时候它就已经在挂在Model然后还想说的一会儿上面可能打印说一些地址的信息为什么呢我刚才说的TOM Server它是C++ base的所以我要找到那些Memory那些API的入口地址所以我在这个时候我就可以直接注入代码确保它能跳转到我的Handle里面去在这已经实现了刚才也说了这个例子它启动过的时候实际上在LoadModel我们也能拦截住无所谓你是后来LoadModel还是起作时候挂在Model我们都能导到那个API这个时候我们就大家看一下会对Model有一个解析差不多看到你看我打印出Input、Output的一些信息一对一对然后呢利用这个信息我现在要开始BuildTOM Relay就是它那个中间键是自动化Build的过程待会这Build的过程你会看到TOM它也是利用了一些裤子进行优化的就看到我打印出来乱七八糟的TOM再靠一些裤子的裤子再推理反正这两个还是想再次听大家说这都是在LoadModel里面花了一点时间在CompileModel而且就是不影响推理而且是想说直接Compile一次下次的时候就没有这Compile的过程因为我已经有预编的TOM Relay下次直接就Load就行了所以非常的快花了一段时间然后你会发现你看我Compile成规了有个 Relay的点S我放在那跟上次不一样的还有一个就是我自己伪造了一个数据先进行了一个推理进行一个预热这也是比上一次有一个进一个提高好 这部分完成以后我再看下面的特别TOM Relay这次跟上次不一样的我就不要显示的COPI我直接用一个PythonRedNight的Python脚本我这里面也go through一下并不是想看大家这个逻辑怎么处理是想大家看你们看我没有Import任何TOM的Model也没有靠什么TOM的API也没有靠我们项目的API什么都没有这个就是拍摄胶部你放在别的框架上别的机枪也能运行只是放在这样我们就要增强所以是No-Code秤着就体验在这运行完了它会做五遍推理你会看到我上面也拦接了五次在我TVHandle里面都做了拦接做了一个加速的处理时间也打印出来了这是Transpload7接下来就是Rate在Rate里面怎么运行其实在Rate里面运行很简单你想了刚才我前面特别强强的Rate实际上是Leverage这一有的一些框架我们既然能跟这些框架无缝衔接那跟Rate根本没有问题这个我是也跑了这样力的左边跑完了我只是就是屏幕拉了一下首先起了一个BIKE这样子我在这边你看我从那个官方网站找了一个他们推理的Rate一个程序就是Rate没有做任何修改那我就跑过程你会看我跑的时候实际上我是一样还是能拦截刚才我想拦截的地方比如楼灯包的时候做个猫肚解析现在就是在这过程分析那些input shape再自动分析分析完了以后还是重复那些步骤自动编译放下来然后当Rate靠Predict的时候我也拦截住就用刚才预编的中间人做推理也是一样的自动化完成不分对 这个大概是这样那就到日再做点总结吧我们之前实现的这部分关于增强机器学业业务家的设备实际上我们支持了一些主要的机器学框架Tensor FlowPattage Onyx还有Tensor Flow 7Touch ServerK-Serve也没有问题Rate刚才也给大家展示了我们把刚才前面列举的主流的Graph Compiler都支持起来了TYM Open VenoTensor RTVCR等等也正是这些众多的这些Graph Compiler帮助我们支持了意购的家族设备下面列举的一些像英伟达AMD Intel GPU或者Zilinx IPJ还有其他CPU其实还有好多我这列举的只是我们验证过的其他的因为有些条件现实我们买不到拿不到文表验证但是我可以说只要这些Graph Compiler能支持我们就能支持我们并没有引入任何的称职改变Graph Compiler不能支持什么东西相反还会发现我们实现的一个潜在的有利数也许你当时装的比如说你在用Tensor FlowTensor Flow不支持IPJ你原来框架不支持因为通过我们以后我们就能支持一年加速设备比如说这IPJ因为Graph Compiler能支持所以某种程度上也帮助你Firmwork也支持的这些依旧加速设备这就是我前面提到的支持的这个依旧加速设备上的增强积极学习完全是自动化关于前面讲的很大的骗我都在推理上推理上我们今年也是做了一些研究当时刚开始并不是太多主要的这么几个三个方向有一个就是很多Wanda实际上提供了这些Community通过这些加速设备上然后去帮助你适配到它的一个依旧加速设备上但是这些加速设备还是跟我前面提的一样你总是要去改一个代码不是拿来直接用的哪怕改一行代码你也是需要改或者你还是需要装什么新的这些Firmwork才能支持这些加速设备我们做的同样的机制Interpose担截下来把所有这些东西封装到背后你什么都不需要去改直接就能加速直接使用这是一个方面另外两个优化的这简单来说它是一些deep learning优化的一些从data-prime或者算法优化也小我们也是希望把这些东西引入进去增强机器学习training的增强但是做了一个简单的实验关于data-processing的优化因为大家如果做trainning的时候你会发觉你的数据总会在CPU和GPU之间来回要切换有这样的开销在那边去我们就在想如果你的GPU你的资源足够的时候我们能不能在你trainning之前就把数据放到GPU里面去把这一份开销减掉了通过我们的interpose也是可以实现的我这里我不知道怎么控制对 在运行对我 首先我们起来然后前面你会看到这边tensor我实际上是这是在Native它一个去年board的Python脚本我之前显示的把它在数据处理load的时候打不出来打印出来你会看到我在不做任何修改的情况下不拦的情况下它的data是放在CPU上因为你看不到枯大任何的影子然后我们就用Native的方式先吹一遍大概是在四分十一秒我看不到这边的这边看不到反正就是如果不做任何我们这个拦截去预先load的数据到GPU上去然后它自己原来的修炼四龙的话需要的时间是三分应该是十一秒左右然后我就会把它拦截起来会起我们的service这时候你看我再打印你会发现我后面跟着divise裤打零那我实际上在它吹紧之前我把的数据已经扔到GPU上去了这时候我们还是按照逻辑再走一遍你会发现最后的时间大概是三分零六还是零七快了四秒钟看上去很少但是这个我主要是想讲两个意思一个是使用我们的循环次数数据就比较少才是四次然后也没多少数据数据越大这个然后提升就会很多另外一个主要是想掩饰大家即使在training里面我们的interpose也可以工作我完全可以实现我看前面说的repeats这些东西放到里面去进行进一步的提升单位就放着差不多是最后吧就是我们接下来会做些什么前面还就是我们主要的实现都在influence然后training只是刚开始做的不一定是太多那希望是今天把这个部分补齐另外一个还想考虑的就是什么意思呢比如说你要用GPU我们希望能跟它切片然后share为什么呢因为GPU的利用率其实还是有问题的就是正好前几天我在公司那边也讲过我看过一个paypalpaypal这么写的一个是它的低利用率它会说20%的GPU在生产环境里面它的显存才是真正使用超过了50%然后只有10%的GPU它显存利用率才超过真正的80%对就是你会看到这个问题一边是GPU很贵大家才能知道一边是算量昂贵 稀缺一边我们的生产环境里面确实没有真正的有效地利用这个GPU另外一个还就是空载率平均空载率另外一个图它上面写的是requestGPU的数目越多你会发觉它真正运行共产生产空的时间也会越多也很容易理解因为你满负的用塞的时候它不是每时每刻都在满负的用塞这个时候GPU的利用虽然确实很低我们希望能把GPU再切一下切得更小一点然后结合调度器这样的话会提升它的利用这个有弹幕今天就不展示了因为也是刚做完不好意思 退出来实际上就是跟多佣的集成因为现在多佣也是一个趋势我们主要考虑一件事情是对一个organization的时候你的GPU资源有可能不光是在onprime你有可能在cloud上去租用不但在一个cloud上去租用有可能还在不同的cloud去租用它怎么才能有效的一致性地使用呢我们希望能做到一个GPU ad service这样的话无论你的GPU资源在哪我们会同意的管理起来交给你使用这也有实现总之这些部分我们希望完整的能集成在锐里面这个我觉得今天下半年也可能会去展示更多这方面的东西但是关于增加机学现在就是刚才我介绍的那些差不多是这样然后还有时间吗反正如果没有时间大家可以用微信找到我或者是email找到我或者现在交流讨论都可以谢谢大家老师你好就是刚才你应该是这里面最核心的是这个interposer是吧就是怎么去hidrag各个框架的一些关键的函数然后我不很理解这个到底是怎么做的因为一般来说我们货多货少要么就是在用户场面去修改用户的代码就是在框架场面去修改代码就是您刚才提到具体是在哪一个场面做的我没有还是分两种语言然后就是Python和C++Python的语言其实很简单我觉得有这么几种方法一个是确保你在Python运行的时候首先运行我们的一些代码在那些代码里面我会告诉你你要load我们一些model因为model里面我会指定一项类似于这种monkin patch你知道吗对类似这样首先要让它确定你每个Python运行的时候要走到我们的model里面去引领保一下monkin patch这样的逻辑其实还有别的方法我大概有这么三四种这是其中一种另外一个就是有些package直接装了以后它就直接可以影响Python的运行逻辑比如说像甚至你可以修改Python运行的profile资金椅子的profile都可以都可以实现这是一个关C++呢稍微就复杂一点我刚才说了你因为需要知道它的Memory你的APS在那我会去捷持你的AI application那我会通过森报找到我关心的一些APS在哪个位置那我在前面我会注射一些代码取个例子简单的说x86也好阿美也好做一些跳转指令然后我会把我的一些处理也会漏到那个内存里面去然后它从这原来进口进去然后进行一斤的判断然后jump到我的内含处里面去处理处理完了然后再jump back回来然后就再出去好 OK我大概理解了好 谢谢铁群老师我想请教一下就是咱们这块网栏和网北的网栏适配不同的GPU网北就劫持这块的逻辑感觉应该是可以独立存在的那为什么要跟瑞有绑定的关系那瑞她本身是更多的是帮你做无感的分布式我就觉得这两个好像是比较独立的为什么她会在最开始的时候你看我们项目里面也没有谈瑞这个事是吧最开始我们项目里面我们当时目的是也是考虑到只要我们支持这些主流的deep learning的GTG区的框架Tenseflow也好拍桃子也好这样就可以了但是瑞现在在我们公司内部外面用的都非常普遍的这样一个平台所以我们要塞进去对 要塞进去要做这件事情因为我们希望你看我是Waver了我们要考虑基础架构的这些优化怎么快速方便有效的那既然瑞部署在我们的环境里面去那我们就需要把瑞也增强这个方也加进去这是我们的这个书发点那你说你把它拆开其实可以 没问题了对所以它会是瑞这个project的一部分还是说它是单独的project我觉得会放上一部分因为我这里面还没讲此该久了的事你看瑞里面它要是跑方可适的时候你需要显示质设定你需不需要GPU需要多少是吧Time Shared这些东西那现在这些意见易购家的设备显然已经不够了那我现在workaround的方法实际的时候我不指定GPU我就指定CPU然后我直接去探测下面的设备这是绕我去了但是将来我如果是完整或者是完美的解决方案需要在这里面加上其他的内包也好或其他的一些实现也好主动的帮助瑞去实现这种不同意见加个设备这个是需要做的然后scadule里面现在它也确实没有我们hardware或者这样的scadule那这部分也是需要我们去加进去的至少在我这个怎么说呢在我这个期望要解决的问题需要实现这些东西的这是一个好的那第二个问题是咱们底下支持的这么多虽然咱们可能不太关注国内的这一块但是国内也有很多的新的这种国产卡那咱们会去支持这些什么卡就是XPU各种不同的硬件加速卡这没有问题其实就是我刚才前面强调的就是说我就能放进去对吧我实际上其实前面我做过Risk 5上的因为Risk 5现在也做GPU我不知道你知道吗他们GPU的实现往往都是我自己提供一个Graph 卡它画的图的时候上面说我上面支持这些机器学框架下面然后通过Graph卡拍了什么Library就支持我的一个Risk 5Base的硬件加速设备是这样讲的它实现的它不是说你在层层follow上写了一个层层follow的程序它不是它实际上是说我支持的是Risk 5这样Base吹进出来的model拍套是吹进出来的model可以通过Graph卡拍的去运行这样子所以我们就是说回到你刚才的问题其实像这种SPU包括Risk 5这样的东西我们都可以通过放进去我只要做的事情一上面跟这些框架拦截的东西都不需要做修改我需要做的事要找到Graph卡拍的放进去而且这地方其实有很多的挑战因为你知道Graph 卡拍的不是说出了个结果然后再返回给你不是这样的你原来的推理的输入然后需要做一些处理然后才能运到它Graph 卡拍里面去做处理处理完了它的post然后结果你又不能直接通过这些框架框架跟你格式可能不一样然后你又还要做一些处理修整一下然后再扔出去这样才能实现自动化还有的一种期望而且Graph 卡拍了它优化的时候它比如像用一些我忘了怎么说它需要压缩还需要量化你知道这些东西吧这时候它需要一些样板数据但拿到模型以后它需要一些样板数据然后做一段处理以后我这才能优化出来这时候怎么办我不能说你现在要用我的项目你先给我一些样板数据我帮你优化也不可以这时候我实现一些方法我会根据模型刚才过去的一些参数构造一些伪数据现在我是这样做的比如说fcb我就这样做的然后用这样构造的一些样板数据进行一个量化然后结果也还可以中间那些挑战率还是比较多的铁军老师问一下问题就是咱们这个yellowstone它其实底下对了很多不同的GPU它每个GPU厂商它其实都有自己的一个compiler包括百年站然后咱们这个实现方式性能会比它视频还是往上升就是性能是吧其实每次都会有人问我这个问题首先就是这个性能不是我爱做决定因为我们是利用graphcompiler本身这个加速的性能回到graphcompiler对它加速性能首先肯定会加速加速的程度依赖于你的模型还有加速设备其实这样的一个状况一般我看到的是百分之三十甚至两倍三倍都有它不同的模型它的体现不一样这是graphcompiler本身对这个加速设备进行的提升这就是为什么我们想用把graphcompiler引进来它自然不会自然会比那些native framework要加速得很好这是原因另外一个是我们引入开销的影响它的性能我们做的一些测试并没有影响因为像pixelcdli我是在装他们的时候举个例子像cdli的时候我是在他的入口拒绝起了跳软弹就可能一两行三行 四行这样的跳软弹然后处理出来基本上是原来graphcompiler是什么样的性能我们就是接近这样的性能百分之九十这样第二个问题就是看你之前工作都在推理测推理测不好理解这个工作相对来说是目标很明确的就是要把速度提升但是移到训练测其实我觉得这个挑战就比较大了因为你训练测你要解决跨节点的问题这是个好问题所以我们推理也是放在后期才做的也是想利用锐的分布式训练加过看能不能做一些目前我觉得我们的实现就是我刚才提供的三点是利用一些算法优化想那个rapids我不知道您有没有知道它会做一些东西我们想不想把这些东西它就怎么说呢我们的实现是希望把这些能加速机器学习训练的东西引入到我们人们做成透明化那如果这些你说额外的是不是需要我再实现一个增强机器学的方法目前还不是我们的重点没有考虑这一块就是这样还有一个就是因为我也在做相关这个工作就是做拦截high-check然后再把这个请求把它forward到远端去执行就是类似远程专用的技术但是我遇到一个情况就是像tensor flow包括pi touch它对它的这个库寒数包括它的引擎都有级别范特斌的一些压缩和加密你是怎么解决这个问题的我们现在很不会碰到那个问题因为你看我是在tensor flow上面的这些high-level的API比如像load of models那个时候我们就停下了实际上它在往下面那边做这种处理我都不做load of models我的目的是什么呢我要拿到那个model我教给他看他在做的事情我们要帮他自动化自动化怎么实现我要解析矛盾就好了刚才我演示那边这些东西所以我们不会碰到你刚才说的那些问题你不会对库达寒数进行劫持没有这库达寒数其实就是涉及到另外一个刚到最后起来的那个第二点说GPUFractionSharon里面肯定会碰到这些东西但是呢我其实正好上周也是做了一些实验因为如果用这个API的这个forwarding或者是remoting面临一个挑战就是你知道英维达它只是避源的吗是吧你这个东西更新换代跟不上太难那我能不能把这个男杰推一下所以我就把他推到这个pixel的角度上去我不要去处理私家家这可以绕我的问题这是我时间我也实际上也简单的就是说把GPU分成0.1 0.2 0.3在pixel的角度是可以做的但是如果你说有些GPU的高低飞扯能不能做甚至是算力的这个风格可能我觉得是绕不开下面的底层的谢谢好谢谢大家