阿里云cGPU容器技术详解,用尽每一寸GPU!

阿里云cGPU容器技术通过一个内核驱动,为容器提供虚拟的GPU设备,从而实现了显存和算力的隔离,支持容器调度GPU资源,为客户提效降本,业界其他的GPU共享方案如NVIDIA MPS、NVIDIA vGPU和 rCUDA类似方案,阿里云cGPU容器技术,用尽每一寸GPU!

阿里云cGPU容器技术
阿里云cGPU容器技术

阿里云cGPU容器技术

阿里云异构计算GPU团队推出了cGPU方案,相比其他方案,这是一个颠覆性的创新:通过一个内核驱动,为容器提供了虚拟的 GPU 设备,从而实现了显存和算力的隔离;通过用户态轻量的运行库,来对容器内的虚拟 GPU 设备进行配置。阿里云异构计算 cGPU 在做到算力调度与显存隔离的同时,也做到了无需替换 CUDA 静态库或动态库;无需重新编译 CUDA 应用;CUDA,cuDNN 等版本随时升级无需适配等特性。

GPU容器共享技术cGPU的架构图
GPU容器共享技术cGPU的架构图

为了提高GPU硬件资源的利用率,需要在单张显卡上运行多个容器,并在多个容器间隔离GPU应用。cGPU通过自研的内核驱动为容器提供虚拟的GPU设备,在保证性能的前提下隔离显存和算力,为充分利用GPU硬件资源进行训练和推理提供有效保障

业界其他的GPU共享方案:

NVIDIA MPS:NVIDIA MPS(NVIDIA Multi-Process Service)是 NVIDIA 公司为了进行 GPU 共享而推出的一套方案,由多个 CUDA 程序共享同一个 GPU context,从而达到多个 CUDA 程序共享 GPU 的目的。同时,在 Volta GPU 上,用户也可以通过 CUDA_MPS_ACTIVE_THREAD_PERCENTAGE 变量设定每个 CUDA 程序占用的 GPU 算力的比例。然而由于多个 CUDA 程序共享了同一个 GPU context,这样引入的问题就是:当一个 CUDA 程序崩溃或者是触发 GPU 错误的时候,其他所有 CUDA 程序的任务都无法继续执行下去了,而这对于容器服务是灾难性的问题。

NVIDIA vGPU:NVIDIA vGPU 方案是 GPU 虚拟化的方案,可以对多用户的强 GPU 隔离方案。它主要应用于虚拟化平台中,每个 vGPU 的显存和算力都是固定的,无法灵活配置;另外 vGPU 的使用需要额外从 NVIDIA 公司购买 license,这里我们就不再详细讨论。

rCUDA类似方案:业内还有一种常用方案是通过替换 CUDA 库实现 API 层面的转发,然后通过修改显存分配,任务提交等 API 函数来达到多个容器共享 GPU 的目的。这种方案的缺点是需要对静态链接的程序重新编译,同时在 CUDA 库升级的时候也需要进行修改来适配新版本。

GPU容器共享技术cGPU的优势

  • 兼容性好:不仅适配标准的Docker和Containerd工作方式,而且还无缝兼容Kubernetes工作方式。
  • 操作简单:无需重编译AI应用,运行时无需替换CUDA库。
  • 资源灵活划分:物理GPU的资源任意划分。例如,GPU显存动态划分,支持M级划分、GPU利用率动态划分,算力支持最小2%粒度的划分。
  • GPU实例规格无限制:适用于GPU裸金属实例,虚拟化实例,vGPU实例等各种GPU实例。
  • 应用场景丰富:支持在离线混部业务(即在线业务和离线业务)、支持CUDA AI和渲染应用场景。
  • 功能强大:具备高优先级的抢占功能和较高的可运维能力,支持热升级、支持多卡划分功能。

cGPU技术特性

  • 支持容器调度GPU:将GPU资源做更细颗粒度的切分,提高资源利用率,提效降本
  • 完整隔离:同时支持GPU的显存和算力隔离,避免不同进程之间的应用相互争抢资源、相互影响
  • 更加简单:AI应用无需重编译,无需构建新的容器镜像进行cuda库替换,对客户环境无侵入

cGPU技术常见使用场景

  • 使用cGPU服务隔离GPU资源,实现多个容器共用一张显卡;
  • 在容器ACK集群上通过GPU共享调度框架实现多个容器运行在同一个GPU设备上的目标;
  • 实现GPU成本优化最佳实践,利用阿里云cGPU技术将一定数量的应用跑到一块GPU卡上,以提高利用率;
  • 配额中心自助管理GPU配额,在配额中心快速查找GPU配额信息,根据业务需要自助提交配额申请,并跟踪配额申请状态。

cGPU容器组件的部署

阿里云GPU实例上使用cGPU容器的能力已开放,cGPU依赖 Docker 和 NVIDIA Docker,在使用 cGPU 前,请确保环境可以正常创建带 GPU 的容器服务。

下载cGPU安装包:

wget http://cgpu.oss-cn-hangzhou.aliyuncs.com/cgpu-0.8.tar.gz

解压后执行sh install.sh命令安装。

安装后使用以下命令验证是否安装成功:

lsmod | grep cgpu
cgpu_km 71355 0

更多关于阿里云阿里云cGPU容器技术的安装说明,请以官方页面为准:阿里云GPU服务器官方详解

原创文章,作者:阿里云服务器使用教程,如若转载,请注明出处:https://aliyunfuwuqi.com/gpu/3481/