Skip to main content
QUICK REVIEW

[论文解读] Salus: Fine-Grained GPU Sharing Primitives for Deep Learning Applications

Peifeng Yu, Mosharaf Chowdhury|arXiv (Cornell University)|Feb 12, 2019
Advanced Neural Network Applications被引用 27
一句话总结

Salus 引入了两种细粒度的 GPU 共享原语——快速作业切换和内存共享,以实现在共享 GPU 上对未经修改的深度学习工作负载的高效整合执行。通过支持动态调度和内存打包,Salus 将平均训练作业完成时间提升了 3.19 倍,超参数调优的 GPU 利用率提升了 2.38 倍(相较于非共享)和 7 倍(相较于 NVIDIA MPS),推理利用率提升了 42 倍(相较于非共享)和 7 倍(相较于 NVIDIA MPS),且开销极低。

ABSTRACT

GPU computing is becoming increasingly more popular with the proliferation of deep learning (DL) applications. However, unlike traditional resources such as CPU or the network, modern GPUs do not natively support fine-grained sharing primitives. Consequently, implementing common policies such as time sharing and preemption are expensive. Worse, when a DL application cannot completely use a GPU's resources, the GPU cannot be efficiently shared between multiple applications, leading to GPU underutilization. We present Salus to enable two GPU sharing primitives: fast job switching and memory sharing, in order to achieve fine-grained GPU sharing among multiple DL applications. Salus implements an efficient, consolidated execution service that exposes the GPU to different DL applications, and enforces fine-grained sharing by performing iteration scheduling and addressing associated memory management issues. We show that these primitives can then be used to implement flexible sharing policies such as fairness, prioritization, and packing for various use cases. Our integration of Salus with TensorFlow and evaluation on popular DL jobs show that Salus can improve the average completion time of DL training jobs by $3.19\ imes$, GPU utilization for hyper-parameter tuning by $2.38\ imes$, and GPU utilization of DL inference applications by $42\ imes$ over not sharing the GPU and $7\ imes$ over NVIDIA MPS with small overhead.

研究动机与目标

  • 解决深度学习工作负载中因粗粒度、整 GPU 分配导致的 GPU 资源利用率低下问题。
  • 在无需修改多个未经修改的深度学习应用的前提下,实现 GPU 资源的高效时间共享和抢占。
  • 通过动态内存分区和在单个 GPU 上打包小型作业,提升内存利用率。
  • 在共享 GPU 环境中支持灵活的调度策略,如公平性、优先级和打包。
  • 与现有深度学习框架(如 TensorFlow)无缝集成,同时将性能开销降至最低。

提出的方法

  • 引入一种整合执行服务,无需修改应用程序即可跨多个深度学习作业管理 GPU 访问。
  • 采用快速作业切换技术,实现作业间的低延迟上下文切换,支持时间共享和抢占。
  • 设计 GPU 通道抽象,实现作业间动态内存分区和高效内存共享,适应不同内存使用模式。
  • 将深度学习内存使用分为三类,并对每类应用定制化的内存管理策略,提升内存分配效率。
  • 采用迭代级调度协调作业执行,平衡 GPU 资源上的负载。
  • 与 TensorFlow 集成,并通过轻量级运行时层暴露原语,最大限度降低性能影响。

实验结果

研究问题

  • RQ1如何在不修改现有框架的前提下,高效地在深度学习工作负载中实现细粒度 GPU 共享?
  • RQ2在共享 GPU 上启用动态作业切换和内存共享,其性能和利用率提升效果如何?
  • RQ3能否通过 GPU 级原语有效实现如公平性、优先级和打包等灵活调度策略?
  • RQ4所提出的共享机制与现有方案(如 NVIDIA MPS 和基于容器的 GPU 分配)相比表现如何?
  • RQ5在保持与复杂深度学习框架兼容性的同时,启用细粒度共享的开销有多大?

主要发现

  • 与非共享及非抢占调度相比,Salus 将深度学习训练作业的平均完成时间提升了 3.19 倍。
  • 超参数调优工作负载的 GPU 利用率相比非共享提升了 2.38 倍,相比 NVIDIA MPS 提升了 7 倍。
  • 推理工作负载的 GPU 利用率相比非共享提升了 42 倍,相比 NVIDIA MPS 提升了 7 倍,且性能开销极低。
  • Salus 能够高效实现如最短剩余时间优先(SRTF)等调度策略,减少队头阻塞。
  • 与 TensorFlow 的集成稳定,不会导致崩溃,而 NVIDIA MPS 在多实例场景下使用 TensorFlow 时则会出现崩溃。
  • Salus 的表现优于 SP+MPS+OC 配置,后者在评估中表现出极差的可用性。

更好的研究,从现在开始

从论文设计到论文写作,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。