本文介绍调度GPU资源的不同方法,包括使用Kubernetes默认GPU调度、提升GPU资源使用率的共享GPU调度、以及加速任务执行的GPU拓扑感知调度。
普通GPU调度
申请Kubernetes GPU集群后,通过运行TensorFlow的GPU实验环境,关于如何使用Kubernetes默认调度器独占GPU,请参见使用Kubernetes默认GPU调度。
您也可通过使用GPU节点标签自定义调度,具体操作,请参见使用节点标签自定义GPU调度。
共享GPU调度
阿里云容器服务Kubernetes版ACK(Container Service for Kubernetes)开源了GPU共享调度之后,您能在阿里云、AWS、GCE和自己数据中心的容器集群上通过GPU共享调度框架实现多个容器运行在同一个GPU设备上的目标。ACK开源GPU共享调度降低了使用GPU的经济成本。通过隔离,限制运行在同一个GPU上的多个容器能够按照自己申请的资源使用量运行,避免因为其资源用量超标影响同一个GPU上的其他容器的正常工作,同时也使更小颗粒度的使用GPU提供了可能。想进一步了解:
关于什么是共享GPU调度,请参见共享GPU调度概述。
关于如何开启共享GPU,请参见安装共享GPU组件;关于如何关闭共享GPU显存隔离能力,请参见关闭共享GPU显存隔离能力。
关于如何使用共享GPU调度,请参见运行共享GPU示例、监控和隔离GPU资源、基于节点池管理共享GPU。
GPU拓扑感知调度
Kubernetes对节点的GPU拓扑信息不感知,调度过程中对GPU的选择比较随机,选择不同的GPU组合训练速度会存在较大的差异。基于以上问题,ACK基于Scheduling Framework机制,实现GPU拓扑感知调度,在节点的GPU组合中选择具有最优训练速度的组合。关于如何使用GPU拓扑感知调度,请参见以下文档: