助力深度学习!阿里开源可插拔 GPU 共享调度工具( 七 )

[
(https://www.atatech.org/articles/132268#7)核心功能模块:

  • GPU Share Scheduler Extender: 利用 Kubernetes 的调度器扩展机制 , 负责在全局调度器 Filter 和 Bind 的时候判断节点上单个 GPU 卡是否能够提供足够的 GPU Mem , 并且在 Bind 的时刻将 GPU 的分配结果通过 annotation 记录到 Pod Spec 以供后续 Filter 检查分配结果 。

  • GPU Share Device Plugin: 利用 Device Plugin 机制 , 在节点上被 Kubelet 调用负责 GPU 卡的分配 , 依赖 scheduler Extender 分配结果执行 。

[
(https://www.atatech.org/articles/132268#8)具体流程:

  1. 资源上报
    GPU Share Device Plugin 利用 nvml 库查询到 GPU 卡的数量和每张 GPU 卡的显存 , 通过ListAndWatch()将节点的 GPU 总显存(数量 显存)作为另外 Extended Resource 汇报给 Kubelet; Kubelet 进一步汇报给 Kubernetes API Server 。 举例说明 , 如果节点含有两块 GPU 卡 , 并且每块卡包含 16276MiB , 从用户的角度来看:该节点的 GPU 资源为 162762 = 32552; 同时也会将节点上的 GPU 卡数量 2 作为另外一个 Extended Resource 上报 。

    推荐阅读