GPU虚拟化

《AntMan: Dynamic Scaling on GPU Clusters for Deep Learning》论文阅读笔记
Abstract
如何在大规模GPU集群上有效调度深度学习工作, 对于工作性能,系统吞吐量和硬件利用率至关重要。
- 随着深度学习的工作量变得更加复杂,它变得越来越具有挑战性。
本文将介绍Antman, 这是一种深入学习的基础设施,该基础架构共同设计了集群调度程序,并已在阿里巴巴部署在生产中,以管理数以万计的每日深度学习工作。

《GaiaGPU:Sharing GPUs in Container Clouds》论文笔记
Abstract
- 对于云服务的提供商, 如何在容器间共享GPU, 是一个有吸引力的问题
- 容器的轻量与伸缩性
- GPU强大的并行计算能力
- 在云环境,容器需要使用一个或多个GPU来满足资源需要的同时, 容器独占式的GPU往往使用率很低
- 我们提出GaiaGPU,能够在容器间共享显存和算力
- 将物理GPU划分为多个虚拟GPU
- 采用弹性资源分配和动态资源分配来提高资源利用率
- 实验结果显示, 有效的实现了容器间资源的分配和隔离的同时,平均只增加了1.015%的开销。
Introduction
- 容器化是一种虚拟化技术
- 涉及到量身定制一个标准操作系统,方便它在一个物理机上运行由多个用户处理的不同应用程序
- 与VM模拟底层硬件不同
- 容器模拟的是操作系统
- 轻量,可伸缩,易部署
- 微服务打包与发布应用的事实标准
- 云服务提供商整合容器编排框架(如k8s)到基础架构中来提供容器云
- GPU 图像处理单元
- 有很强的并行处理能力
- 因为一个芯片上集成了数以千计的计算核
- GPU被广泛用于计算密集型任务,以加快计算
- 随着技术的发展趋势,现代GPU内将集成入越来越多的计算资源
- CUDA是多功能GPU最流行的平台,提供了API方便GPU的使用
- 卓越的性能吸引了很多云提供商将GPU引入云环境
- 在云环境中,部署在容器中的一个应用程序可能需要一个或多个GPU才能执行,
- 而另一方面,应用程序的专用GPU资源导致资源不足。
- 因此,如何在不同的容器中共享GPU对大多数云提供商都非常感兴趣
- 有很强的并行处理能力
- GPU虚拟化技术是在隔离的虚拟环境(例如VM, 容器)之间共享GPU的技术
- 多数的GPU虚拟化技术应用于VM, 容器间的虚拟化技术还在起始阶段
- 现阶段的基于容器的GPU虚拟化技术有以下局限性
- 需要特定的硬件设备(NVIDIA GRID)
- 将一整个GPU分配给单个容器, 不能共享 (NVIDIA Docker)
- 容器间只能共享GPU显存 (ConvGPU)
- 只支持单个GPU (ConvGPU)
- 我们提出GaiaGPU,能够在容器间透明地共享显存和算力
- 用户不用修改容器镜像来共享底层GPU
- 我们使用k8s的device plugin 框架将物理GPU划分为多个虚拟GPU
- 每个镜像可以按需分配一个或者多个vGPU
- 提供了两者方式在运行时更改镜像资源
- 弹性资源分配:暂时改变资源
- 动态资源分配:永久改变资源
- 用户不用修改容器镜像来共享底层GPU
- vGPU包括GPU显存和计算资源
- 共享显存
- 容器包含GPU显存的一小部分
- vGPU分配的是GPU的物理内存
- 共享计算资源
- 共享计算资源意味着每个容器都拥有GPU线程的一部分以并行执行计算。
- VGPU的计算资源由GPU的利用率衡量(采样时段内, 容器使用GPU的时间比例)
- 共享显存
- 总结:本文做了如下贡献
- 提出了GaiaGPU:一种在容器间透明共享显存与算力的方法
- 采用弹性分配和动态分配的方式提高了资源的利用率
- 进行了四个实验来验证GaiaGPU的性能。结果:实现了容器间资源的分配和隔离的同时,平均只增加了1.015%的开销。
Related Work
GPU虚拟化
被应用于在多个虚拟环境之间分享GPU, 极大地提高了应用性能