导读
近年来,人工智能技术的快速发展对高效率智能计算系统的需求越来越大。在58同城平台内部,越来越多的服务使用深度学习模型和技术来驱动,这些工作负责具有一些典型的特性:例如在线推理服务请求的“高峰低谷”现象,导致部分时段系统资源利用率偏低;离线训练集群则存在部门之间资源争抢、分配不公等问题,导致GPU集群吞吐量下降。购置和维护GPU加速器设置带来了昂贵的开销,如何改善AI计算平台的资源使用效率成为了亟需解决的问题。
2021年11月3号,18:00~21:00,由58同城和天津大学主办的58技术沙龙《AI集群资源调度和应用混部》正式与大家见面了!本次沙龙由58同城AI Lab后端高级架构师、AI平台部负责人陈兴振和天津大学智能与计算学部副教授、天津市先进网络技术与应用重点实验室云计算研究室负责人赵来平出品,邀请了58同城后端资深开发工程师陈泽龙、高级开发工程师侯法超,天津大学2019级硕士生李方舒、2019级博士生杨亚南就高效的集群资源调度和细粒度的在线离线作业混部展开分享,沙龙全程直播,吸引了538人观看。
主办方:58技术委员会、AI Lab、天津大学智能与计算学部
本次沙龙的视频录像、PPT资料如下。
分享嘉宾:
赵来平
天津大学智能与计算学部副教授,天津市先进网络技术与应用重点实验室云计算研究室负责人
赵来平 ,天津大学智能与计算学部副教授 。研究方向:数据中心,云计算,智能计算系统。天津市先进网络技术与应用重点实验室云计算研究室负责人。在TPDS、TCC、TSC、SC、Eurosys、JSA、ICDCS、ICPP、HPDC等计算系统领域国际顶级期刊和会议发表论文40余篇,参与专著编写2部。主持参与国家重点研发计划“云计算与大数据”专项,国家自然科学基金联合基金重点、青年、面上基金,天津市人工智能重点等科研项目10余项。
视频回顾:
分享嘉宾:
陈泽龙,58同城TEG-AILab后端资深开发工程师
陈泽龙,58同城TEG-AI Lab后端资深开发工程师,2019年7月加入58,主要负责58人工智能平台WPAI的深度学习平台和向量检索平台相关开发工作。2016年硕士毕业于中国科学院大学,曾就职于中科院信工所从事后台开发工作。
视频回顾:
PPT下载:
关注“58AILab”公众号—部门介绍—联系我们—添加小秘书微信(WubaAILab)备注 “AI集群资源调度和应用混部技术沙龙” 即可获取。
陈泽龙:是在kubernetes外部自己实现并部署的一个调度器。 观众:这个调度系统用的刚才哪个插件?任务画像能具体举一个实际例子吗?以及怎么用的?陈泽龙:调度系统用到了原生的kube-scheduler和Coscheduling插件。任务画像包括任务训练用到的资源如GPU/CPU/显存/内存配额、资源实际使用率、训练时长、等待时长、使用的资源类型等数据。如一个任务历史训练多次我们会计算出这个任务GPU、CPU、内存、显存平均使用率、峰值使用率、平均训练时长、平均等待时长等数据。任务画像数据主要用于训练任务调度时的优先级权重计算、资源自动调整。优先级权重计算:在基础权重分值上,使用率均值达标则增加权重20,不达标则反之;等待时长超过10分钟后,开始每10分钟增加1~5的权重分值,增加量随增加次数递增,封顶为5;使用部门资源的基础分值为100w分,借用资源1000分,确保优先级高于借用资源任务,且为以后功能扩展留有调整余地。资源自动调整:GPU建议值取最近3次运行GPU使用率均值和显存使用率峰值较大者除以90%;CPU配置上限取最近3次的CPU峰值除以50%;CPU配置请求取最近3次的CPU均值除以50%。陈泽龙:针对任务每次训练记录,实时数据采集采用Flink流式分析,采用滚动窗口,每5分钟计算一次任务节点的CPU/GPU等数据的平均值和最大值,如果首次采集,则直接新建一条记录,否则,和数据库中数据按运行时间求加权平均值,并更新记录的数据,而采用这种方式,运行时长统计是当前窗口中最早和最晚的记录时间差,存在数据偏差,因此每天会定时从HDFS中拉取数据副本,通过Spark分析整天数据,得到更准确的运行时长及资源使用率均值及最大值,直接更新对应的训练记录数据,供后续画像构建和资源调整使用。陈泽龙:任务画像由任务基本信息、资源配置、训练配置、资源使用数据、资源调度情况数据、任务训练状态这六大类组成,可以帮助实现任务的优先级及资源自动调整等功能。陈泽龙:配置项目基本一致,当然也存在一定区别,比如CPU任务没有GPU的配置数据。任务之间各配置项的内容和数据不是共用的。 观众:GPU调度力度是什么样子的,有卡级别以下更细粒度的吗?陈泽龙:平台基于gpu-manager实现了vGPU调度,最小可以分配百分之一份额的GPU卡;当GPU使用率不高时,会调整使用vGPU资源进行模型训练,将剩余部分分配给其他任务使用,提升GPU资源利用率。陈泽龙:平台提供离在线混部调度,来实现资源利用率的进一步提升,混部资源池指的是专门用来进行离在线混合部署的机器资源。 观众:在优先级调度策略下当前部门资源充足时训练中的任务会被抢占kill掉吗?陈泽龙:只有当新调度的任务没有资源可以满足使用时,才会抢占集群中优先级较低的任务的资源。而所有使用部门资源任务所占用的资源总和不会超过集群整体资源(采购到的部门资源和集群备用资源),当部门资源充足时,任务会使用部门资源(优先级高于借用资源),集群资源充足或集群资源不充足(资源被使用借用资源任务占用,新任务会优先抢占这些借用任务的资源),均不会被新调度任务抢占。分享嘉宾:
李方舒,天津大学2019级硕士生
李方舒,天津大学2019级TankLab实验室研究生,目前主要从事分布式深度学习训练加速方面的研究,相关工作已发表在国际知名高性能计算会议HPDC。
视频回顾:
PPT下载:
关注“58AILab”公众号—部门介绍—联系我们—添加小秘书微信(WubaAILab)备注 “AI集群资源调度和应用混部技术沙龙” 即可获取。
观众:可预测和不可预测作业怎么定义的?这里是先让作业运行一段时间再预测?李方舒:可预测性的作业需要同时满足以下三个条件:(1)训练的损失值随着迭代周期(Epoch)下降,(2)作业训练N个迭代周期后,其损失值低于α,(3)作业训练 N个迭代周期后,相邻迭代周 期的损失值下降不小于β,其中 α,β,N是预先确定的值,这三个值随着作 业的改变而变化。该定义中的三个条件缺一不可,条件(1)确保作业是逐步收 敛的,条件(2)和(3)确保作业可以稳定快速的收敛于目标损失值。当一个DDL作业不满足上述三个条件中的任意一个,该作业即为不可预测作业。不可预测作业往往收敛性较差,甚至不具有收敛性,因此会在训练过程中被用户主动终止。 观众:动态作业优先级调度策略,每个作业的优先级影响因素有哪些?在集群整体资源紧张时低优先级的任务会不会饿死?李方舒:为了实现作业的动态优先级调度,统一可预测作业和不可预测作业的调度,AITurbo设计了波达计数法来确定作业的调度优先级。这是用于选举投票的一种策略,每个投票者按照偏好对候选人列表进行排序,排序越靠前的候选人得分越高。通过综合所有投票者的排序得分,选举出最终的获胜者。作业的得分是其在队列中排 序分数,不同队列的排序分数之和为当前作业的总分。但是,由于不可预测作业只出现在LAS队列中,而可预测作业既出现在LAS队列中,又出现在正效益队列或负效益队列中,因此直接使用波达计数法对不可预测作业是不公平的。为了解决该问题,AITurbo将LAS队列拆分为两个独立的子队列,包括可预测LAS队列和不可预测LAS队列,两个队列中的作业都是按照其获得的服务数升序排序。因此,可预测作业的总分为作业在可预测LAS队列与正效益队列/负效益队列中的排序得分之和,为了公平比较,不可预测作业的总分为该作业在不可预测LAS队列中的排序分数的两倍。最终,我们将可预测作业和不可预测作业统一合并,按照总分降序排序。分享嘉宾:
侯法超,58同城TEG-AI Lab后端高级开发工程师
侯法超,58同城TEG-Al Lab后端高级工程师,目前主要从事58人工智能平台WPAI的深度学习平台开发工作。2021年4月加入58,2017年本科毕业于青岛科技大学,曾就职于天润融通负责呼叫中心及AI平台研发工作。
视频回顾:
PPT下载:
关注“58AILab”公众号—部门介绍—联系我们—添加小秘书微信(WubaAILab)备注 “AI集群资源调度和应用混部技术沙龙” 即可获取。
侯法超:针对双十一这种情况,因为已经有一部分离线训练作业调度到混部,因此会缩减一部分离线资源池的资源,加入到混部及在线。混部资源池是动态变化的,当在线流量非常大的时候,会将混部资源池中的节点驱逐,并加入到在线资源池,直到所有混部节点全部加入在线,如果此时在线服务流量还在涨,那就要将离线资源池的节点加入在线资源池了。 观众:离在线quota使用率阈值是怎么得到的,阈值怎么设计?离在线quota使用率阈值是怎么得到的,阈值怎么设计?侯法超:当前我们监控数据全部接入Prometheus,可以拿到所有Pod的实时监控数据(包括quota request),对不同GPU类型服务器,也有对应监控,再结合K8s节点元数据信息,使用Flink即可实时计算出每个资源组的quota使用率。离在线混部需要优先保证在线任务的稳定运行,因此阈值的设计会基于在线资源池quota使用率,为提高在线资源使用率,在线扩容阈值一般会设计的比较高,例如90%或95%,当超过该阈值时需要进行快速扩容,以保证在线弹性伸缩的正常扩容,而期望阈值可以根据实际情况在80%左右,以保证在线低谷时可以出让比较多的服务器到给离线作业运行。侯法超:在线出让的过程中,为了保证在线服务的稳定性,在线资源池出让过程中采用一个节点一个节点出让的形式,防止批量出让导致在线服务的波动。 观众:如果训练任务历史记录失效了怎么处理离线任务调度?侯法超:如果没有历史记录,或所有记录都是失败的,默认作为长时任务去调度。 观众:kafka拉取到大量的在线pending event后,具体触发节点迁移逻辑是怎样的,如何保证节点不被超需迁移?侯法超:根据Pending事件我们可以拿到Pod详细描述的,以此确认每个Pod所需要什么样的资源类型,然后选择混部节点进行回收。在此期间一个Pod可能会有多次Pending事件,因此我们使用Redis记录每个Pod的Pending Event是否被处理,以防止超需迁移。 观众:在线资源,混部资源,离线资源,这个数量设置怎么确定?侯法超:这个数量根据我们业务情况来设定了,离线资源池会保证离线训练任务,尤其是长时作业的稳定,在线资源池+混部资源池 实际组成组成动态资源池(具体由离在线混部系统确认每个节点是在线还是混部),我们只需要确认离线资源池的大小,剩下的都属于在线和混部资源池。侯法超:在线节点驱逐主要是在线节点选择,我们会尽量选择在线Pod数量少的节点,这里要注意的是需要先标记为该节点不允许在线进行调度,再进行驱逐,避免在线驱逐后又调度到当前节点的情况。 观众:如何判断该离线作业可以驱赶到混部资源池执行?侯法超:混部资源池中离线作业有一定概率被驱逐,因此将离线作业分为长时作业和短时作业,最近7天的平均运行时间大于12小时及分布式任务定为长时作业,这类作业如果被驱逐重跑成本比较高,而小于12小时的定为短时作业,只有短时离线作业可以调度到混部。 观众: 如果在线出现大量pending,也依然是一分钟触发一次迁移吗?侯法超:在线Pending的与基于在线quota的扩容流程是类似的,都是批量迁移,如果有大量在线Pending,则会触发同等数量Pending的在线回收。
分享嘉宾:
杨亚南,天津大学2019级博士生
杨亚南,天津大学网络与云计算课题组(NCC)2019级博士生,致力于云计算系统资源管控和服务性能优化相关研究,相关成果发表在Eurosys、SC、TPDS等国际知名会议。目前正在从事无服务器计算(函数计算)相关研究。
视频回顾:
PPT下载:
关注“58AILab”公众号—部门介绍—联系我们—添加小秘书微信(WubaAILab)备注 “AI集群资源调度和应用混部技术沙龙” 即可获取。
观众:云数据中心场景习下的干扰是如何刻画的?有总结出哪类服务受影响更大吗?杨亚南:云数据中心内部应用间的干扰是时刻存在的,即便采用了VM等虚拟化隔离技术,由于系统底层资源的无序竞争及互相抢占(比如缓存和内存带宽争用,总线锁等),使得应用的性能变得不稳定。干扰的刻画一般通过测量的方法,比如度量在线服务的响应时间(95分位或99分位尾延迟),离线作业的完成时间等。一般来说,在线业务属于交互类应用且包含大量的分布式组件调用,面临的干扰场景也更为复杂,同时用户对响应时延的变化比较敏感,因此干扰对于线业务的性能影响更大。 观众:在Rhythm的控制过程中,loadLimit和slackLimit两个阈值是怎么确定的?杨亚南:loadLimit和slackLimit是区分式混部系统的2个系统控制阈值,loadLimit用于决策何时进行混部,slackLimit用来决策混部多少BE作业。loadLimit由刻画得出,通过不断提高在线服务的负载,观察延迟波动并记录其发生突变时的servpod负载大小,即“负载拐点”。slackLimit由一套启发式算法探索得出,其中servpod的贡献度被定义为迭代步长,进行多次探索之后可以为每个servpod得到一个不同的slackLimit设定。 观众:CPU、网络、磁盘I/O隔离所采用的的隔离手段是什么?杨亚南:对于CPU的隔离采用的是Intel的RDT( Resource Director Technology)技术,用于划分进程间CPU核心和cache的使用,该机制在Xeon系列部分处理器上被支持,最新的Xeon Gold系列处理器支持DRAM的隔离。对于CPU频率的管理采用的是DVFS技术,用于限定BE作业的功耗。网络的隔离采用的是tc流控工具,由于实验中采用的负载对于磁盘I/O占用较小,所以没有进行磁盘I/O隔离。由于采用了总-分的控制架构,这些隔离机制在Rhythm的agent节点中都是可扩展的。 观众:干扰主要是指时间上的波动干扰吗?应用组件间的组合状态是否会导致大量干扰?以及如何进行干扰预测?杨亚南:在灰度干扰场景下,多个云应用共享服务器的资源,不同的应用又包含多个组件的调用关系,在时间和空间维度上都会产生干扰。时间维度上的干扰指的是作业可能在任意时刻到达、执行或结束,业务负载也会随时间发生变动,从而给服务带来不同的性能影响;空间维度上的干扰指的是不同应用之间的组件会部分共机部署或重叠执行,争用资源导致性能下降。为了解决这个问题,Gsight构建了一个机器学习模型对上述两个维度的特征进行时空编码,从而预测干扰。
58同城AI Lab隶属TEG技术工程平台群,成立于2018年5月,目前部门人数规模70+,包括算法、后端、大数据、产品人员。AI Lab旨在推动AI技术在58同城的落地,打造AI中台能力,以提高前台业务人效、收入和用户体验。
欢迎关注部门微信公众号:58AILab