多GPU训练,如何比较好的资源调度做到程序稳定(多GPU的调度策略)?
NVIDIA 中国区HPC/DL 解决方案架构师程帅:
这是一个就是GPU集群管理调度的一个问题,现在主流的GPU系统在国内可以分成2部分,一类是交通系统,一类是基于容器的一个比如K8S的调度编排的一个调度系统。K8S里面是支持了GPU设备的自发现,然后你只是去提交GPU的一个请求的个数以及GPU资源的类型,然后它会自动去帮你去做调度。另外的话是以HPC为传统的那种,比如说PPS或SLAM调度,SLAM里面也有支持GPU设备的一个自我调度,然后把GPU设备作为一个计算对象可以去请求。当然由于GPU系统的拓扑结构是一样的,不同的调度算法,给你分配的GPU资源可能会存在一些GPU拓扑不是最优的情况。然后针对这种情况,不管是SLAM还是K8S系统,NVIDIA写了一个拓扑自我检测的小程序算法,它可以很好的集成到K8S以及SLAM里面,然后在做GPU资源分配时,根据这个算法去分配GPU资源,以保证你分配的CPU资源是最优的,拓扑最优,而且也会保证以后的分配,对以后资源的拓扑最优也会有保证。