大家好,我是星涛,来自磁节跳动的基础架构团队很荣幸能够参与这次的线上分享活动,与大家一起进行交流学习首先简单介绍一下我们团队和我个人的一些情况我们团队主要是负责推动磁节跳动的业务系统、R.I.大数据清除系统的全面源源化的改造和落地在实现资源并值的基础之上通过离在线会和部署等措施来提升磁节数据中心,整体的资源利用率我个人目前主要专注于继续学习场景的源源融化的支持工作本次主要是由我和范达良同学代表我们团队向大家分享磁节跳动技艺构资源的继续学习训练加速实践以下是本次分享的大纲主要是针对GPU资源,分别从离线训练在线推理和在离线统一调度方面进行介绍离线训练场景的话因为磁节的产品主要是以视频和文贝的形式进行展示因此像CVNMP等通用的新的学习技术在字节的重要性不一样而遇它们的模型训练主要使用的是V100和A100的机型V100的话配置有100G网卡I100的话配置有四张200G网卡主要是买出它们模型训练的高网组带宽的要求总之上来说因为离线训练涉及到大量的模型数据的传输网络通信对模型的性能提速至关重要但是传统的TCB传输因为它在数据的传输发送和接收阶段均一需要涉及到内核态和用户带的切换以及数据的拷贝因此它的网络延迟比较高CPU的消耗比较大RDM技术的话是考虑到这些圈线它通过引入一个专门的智能硬件网卡的知识来实现类似于DMI直接内腿访问的技术RDM传输过程中不涉及到了内核态的数据拷贝数据的传输由用户态的BUFF直接通过网卡进行传输因此相比较传统的TCB传输来说它具有更低的延迟和更低的CPU负载以及更高的网络带宽再次接到离线训练场景中我们通过引入RDMI技术来加速模型训练的数据传输从而实现模型训练的提速整个方案的话如下图所示首先在远远生场景下来说去支持RDMI考虑到环境的隔离性和可疑之性首先要解决的问题是RDMI设备的训练化再次我们采用的方案是基于SIOV的PCIe PassRow的解决方案SIOV是一种基于硬件的网络设备的训练化解决方案它可以实现与主机性能基本持平的设备通信在开启了SIOV之后主机会在智能网上创建一个PF和多个VF设备其中VF可以通过共享PF的总线设备通信需要来实现VF的PCR地址的访位第二步的话是我们通过开发SIPLINE来实现VF资源的上报用户在创建POD的时候可以申请对应的资源之后交渡器完成对应的交渡决策具体到单机节点上来说固培的在实际的创建POD时VF设备的分配仍然是由DeviceParding来负责在完成了VF设备的分配之后可能在调用CDR差距时候会把VF设备的PCR地址传递过去CDR拿到了设备的PCR地址之后会找到对应的VF设备最终完成POD的网络的配置之后就是POD就可以通过VF设备进行RDM通信在调度方面的话我们综合考虑任务的训练框架决策特征等从宏观温观两个层次的脱补进行调度决策的优化宏观上来说同一个任务不同的实力会优先或者被强制调度到同一个机房来自同一个机架下面微观上来说在单机层次实现了基于微脱补感知的资源清和性的调度优化在进行GPU资源的分配的时候会考虑到GPU的拓补结构保证为容器分配GPU的拓补最优性同时会考虑网卡和NUMA的清和性在拓补的分配的过程中保证它的容器它的CPUMEMO和GPU设备落在同一个GPUNUMA设备上在线推理方面的话目前使用的进行主要是T4会有少部分的V100不同意理线的纵推图场景它对实验和稳定性的要求比较高因此这部分的工作我们主要是围绕着GPU利润的提升高可用和性能优化方面进行开展为了提升GPU的利用率我们构建了容器化形态下的GPU共享方案把GPU资源的申请力度为小的单卡级别降低到0.1卡的级别在调度的时候支持GPU资源不同的资源类型的调度比如说GPU的算力GPU的显卡GPU的边接码等同时在调度的时候考虑到不同模型的重算力和重显存的不同特性实现了清和性反清和性的调度策略GPU共享方式的话主要是支持继续时间分辨和MPS的两种的并行模式GPU策略的优化的GPU性能优化的上来说与理线训练场景比较类似实现了具威脱不感知的资源清和性的分配策略字节内部大量使用MPS来实现GPU空间利用率的提升但是MPS本身存在了一定的不稳定因素因此我们基于Zadakar的形式实现了MPS的容许化部署把MPS的部署力度从整机所有卡的级别降低到了POD的力度从而降低了MPS的故障域最后在指标监控和管理工具方面的话首先是GNVML和DCGM从维度和力度两个方面扩展了GPU指标的监控维度方面主要是指从GPU的算力显存的监控扩展到它的空间利用率它的PCIe字节朔以及温度等指标的监控力度方面的话是把GPU的算力显存的利用力监控由卡级别进行到了服务和进程的级别最后实现了内部版本的英伟达的SMI管理的工具解决了容金内部无法查看GPU进程的通点在保证隔离性安全隔离性的前提下支持用户在容金内进行debug和性能的调忧以上就是我本次分享的主要内容接下来的时间由范德亮同学进行之后的分享大家好我叫范德亮很高兴能够和星涛一起参加本届的CNCF大会接下来将有我介绍后面的情况我主要会从我们GPU做在离线统一的支援出浪以及我们未来的工作这两个方向进行去介绍首先我们介绍下我们GPU支援统一的出浪我们在线的GPU支援主要是部署在在线的GPU KBS支援池上离线的主要是部署在离线的KBS支援池上二者之间目前是处于一个比较相对割裂的一个状态正如我们前面所言我们在线主要是依赖一迪布署来进行在线图里服务的部署然后离线训练我们正在统一的统一的这个进行去演进使得能够在同一个KBS的这么一个训练支援支持我们多种多样的深度学习的框架不仅是同步还是异步还是Tense Floor还是Petouch还是支援的一个框架那在这样一套体系之下我们就能够比较好的去做我们在离线GPU混布和支援出浪的一个事情我们在线推理的这个GPU的话是存在着非常严重的就是非常明显的波风和波谷的支援特征在白天的时候支援利用率是非常高的当时到了网上凌晨三四点四五点的时候其实支援利用率就非常低了那我们有着这么多规模的这个卡如果说我们不能好好的利用这些支援的话那对我们来说也是一种非常大的支援的浪费同时我们训练部分对支援的这个要求是越来越多数据量包括场景都是越来越丰富因而我们需要通过一定的触状的手段使得我们在线波谷的支援能够被我们离线所训练的所利用起来因此我们就继续波波谷剪成VK来统一的网程我们在线和离线两个这个支援的一个打通具体来说我们在线推理的这个支援词我们会有一个HPA的Controller和社区的HPA其实是非常类似的我们会去监听我们服务的GPU支援CPU等支援各种的利用率然后同时也会关注我们同一个服务下我们最多能够有多少个副本最少必须得保留多少个副本成了保证我们服务的高可靠那在这样的情况下我们就是在白天的话我们会把他副本开得比较高到了网上的时候我们就根据他GPU支援率利用率然后进行他副本的一个动态的一个说龙然后说龙出来的这个支援我们会有一个VKController的一个形式它是部署在我们在线推理的继续中会去统计我们有多少支援是可用的而且这部分支援是能够被我们VK所使用的好那这个统计之后我们离线训练的这个支援词我们就部署了Vocoplat它会连到我们对应后端的在线推理的并且去港资我们VKController所收集到的支援其他的可用率同时我们这些支援能可用的支援就会在我们的Vocoplat中进行去表达然后我们离线训练因为我们已经在把所有的训练让我们都统一的往一种形态去演技并且我们也在多个层次从operator层次包括和我们训练的框下无论是hollowed什么bytePS我们都会靠和浓错的相关的机制以及弹性相关能力的支持从而我们就能够比较好的去运对训练过程中VocS数量变多和变少这样的一个场景也能够比较好的应对我们异常的一种被杀死的这种场景从而保证我们整个训练任务不会因为我当个VocC被杀死而导致它的整个任务的失败具体来说我们的Vocoplat港资到我们在线推理资源词的资源变化以后我们的elastic training operator会港资Vocoplat里面的资源的数量同时我们目前的策略暂时是坐在elastic training operator层面的然后它就会根据我们训练副本中训练任务中它最多需要多少个replicat最少是多少个replicat它的优先级等等以及目前有多少个replicat包括这个Vocoplat它反应后装资源词能够有的资源量来进行把这些资源量以一个比较好的公平性的方式分配给我们连线训练的各个VocC然后连线训练的VocC分配之后本质上就是去调这些replicat从而使得我们replicat更多的就能够调度到我们的在线推理的这个词词上去从而提升我们训练的一个并行度最终加快的一个效率接下来就介绍一下我们未来的一个这个工作然后未来的工作主要集中在双方面一方面我们要支持更多易购的资源我们目前imedia的这个厂商的资源占了我们绝大部分当时我们也不排除AMD的GPU包括等等其他厂商跟具有性价比的这种资源这在里面只要本质上能够丰富我们的这个业务能够有经济性上更好的一个收益在里面非常愿意去尝试的第二个就是我们期望能进一步的扩充好我们调度以余从目前来看我们GPU的话其实当期层面既有为脱补相关的这个调度的以余里面如何去更好的平衡UMAGPU 网卡等各方面的亲合性使用非常大的一个挑战第二点我们也要去更关注说我们机防脱补维度的一个调度那具体来说我们S0S1S2交换机下它的这一个网络收敛比其实是不一样的如果在S0下说的训练任务是能够比较好的充分利用它的带框每当夸S0它可能就会带来网络的一些性能方面的冲突或者说下降越是到上产的话它的网络性能相对来说影响是非常大的无论是自身的训练还是对其他服务的影响所以我们尽可能的期望同一个训练任务它的在土补上是尽可能的在同一个S0上其实是在一个S1上最后是在S2上但是我们是严格禁止它夸一个S2的交换机因为这样子对我们的这个机防的这个收敛比对性能和其他服务的影响是非常大的好然后所以我们就在此基础上我们是希望更丰富我们一些SIM相关的语譯能够让调入器自动的感知到当我提一个训练任务我指定它的卡的型号它自动会搜是否有S0能够先网住S0先网我们情愿是将它调度到同一个S0下其实是S1最后是S2这样的一个调度语譯第三点就是我们把在线和离线会做进一步的支援此相关的这个融合同时在调度语譯上还会进行做更多的这种融合以及在弹性策略上可以构建统一的弹性策略具体来说就是我们会把在线推理和离线训练的辞职做进一步的融合之后我们的KBS机群就已经不会再去气氛这是在线和离线只有对任务高优和低优的一个胖断然后在多个KBS机群之间我们会构建统一的一个联邦层联邦层它具有全级的视角那全级的视角我们就能够很好的从联邦的这个维度选择说我这个训练的任务在机防拓扑在机防的数据清合性网络等各方面引入更多的调度因素使得我的任务和子机群之间有更好的一个匹配能力其次我们在调度区域方面我们把它统一之后我们在一个调度区域上完全的去实现我们在线和离线的一套统一的这个调度的这个能力使得我们对于高优和低优的任务再能保住它的调度预浴上上的前底下也能够对它的吞吐率包括那个调度的latency有比较好的一个圈行或者说一个比较好的一个支持然后那个第三点就是我们会构建统一的在离线的HPA的这个策略这个也非常好理解因为我们在线推理的话主要是deployment为主那deployment对它的HPA最终的反应就在调它的一个replay卡同样我们离线训练也终究往一的operator的方向去演进在这个技术之上我们对离线训练的这个任务的话我们通过调它的replay卡也能够调整它walk的这个数量使得它在我们能够有比较好的一个训练的一个加速一个很像的扩展能力那在这样的前提之下我们同一个辞职下的K8S我们既跑了高优也跑了低优的任务那这个高优的这个在线推理到了凌晨是吧它的这个资源利用力很低我们统门的策略的话就会把它的副本书给缩下来缩下来之后它就能够很及时的去把缩下来的这个资源以某种形式以某种公平性的能力分配给我们离线训练所需要的这个任务从而使得我们能够达成一个很好的实实的粗浪和资源匹配的机制的能力所以本质上都是调根据在线资源的利用率调它的replicar然后根据我说出来的资源我又去分配给线训练的那种本质上也是调它的一个replicar从而能够达到很好的一个联动好这个您的分享就到这里谢谢大家