You need to enable JavaScript to run this app.
导航

mGPU 多卡共享

最近更新时间2023.09.01 16:32:32

首次发布时间2023.04.13 12:02:23

容器服务提供 mGPU 多卡共享功能,在双层调度的基础上,单个容器可使用同一节点上的多张 GPU 卡共同提供算力和显存资源,打破同一个容器使用算力/显存局限于一张 GPU 卡的束缚,提高 GPU 碎片化资源利用率。本文为您详细介绍如何使用 mGPU 多卡共享功能。

说明

邀测·申请试用】:该功能目前处于邀测阶段,如需使用,请提交申请。

前提条件

  • 已经创建集群并完成 mGPU 相关基础资源配置,包括:安装 mGPU 组件、创建 GPU 节点。详细介绍参见:mGPU 使用方法
  • 已经将 GPU 节点和工作负载的算力分配策略配置为native-burst-share,详细介绍参见:配置 mGPU 算力分配策略

使用限制

  • mGPU 多卡共享功能,仅在native-burst-share算力分配策略下生效,否则无法满足多卡调度需求。
  • 本场景依赖的多个组件存在版本限制,推荐新建集群和节点直接使用最新版组件;若期望使用已有集群和节点搭建该场景,请提交 工单申请 获取技术支持,升级组件版本。详细限制如下:
依赖组件版本限制查看方法

Kubernetes

  • v1.20.15-vke.13 及以上的 1.20 版本
  • v1.24.10-vke.7 及以上的 1.24 版本

前往控制台的集群基本信息页面查看,详细介绍参见:如何查看集群的 Kubernetes 版本?

mGPU 驱动07.34.4 及以上登录 mGPU 所属云服务器,执行mgpu-cli version命令即可查看 mGPU 驱动版本。
mGPU 组件v0.2.0 及以上前往控制台的组件管理页面查看,详细操作步骤参见:查看组件

操作步骤

本文以创建无状态负载(Deployment)为例进行介绍,详细创建步骤参见:创建无状态负载

方式一:通过控制台配置

  1. 创建无状态负载的容器配置步骤,在资源配额中启用多卡共享配置,并按需配置 GPU 算力、GPU 显存和 GPU 卡数。

alt

配置项说明
GPU 资源类型多卡共享仅在 mGPU 资源类型生效,本场景选择 mGPU
多卡共享配置默认关闭,本场景需 开启 此配置。开启后,将为工作负载提供 mGPU 多卡调度能力,即单个容器可以使用多张 GPU 卡提供算力和显存。

GPU 算力

配置当前容器所需的 GPU 算力,这些算力将由多张 GPU 卡以等分的形式共同提供。需同时满足以下配置要求:

  • 只能填写 0.01~1 的两位小数、大于 1 的一位小数或正整数。例如:0.01、1.2 或 2。

  • 单卡算力=GPU 算力/GPU 卡数,计算结果的精度不能超过 0.01。

GPU 显存

配置当前容器所需的 GPU 显存总和,这些显存将由多张 GPU 卡以等分的形式共同提供。
配置要求:单卡显存=GPU 显存/GPU 卡数,计算结果换算成 MiB 后,需为 1024~81920 之间的整数。

GPU 卡数多卡共享场景下,用来共同提供算力和显存的 GPU 卡数,配置范围:1~8 的整数。
显卡类型配置 Pod 需要调度的 GPU 节点。默认不限制型号,配置型号后将按照所选型号指定 GPU 节点。
  1. 完成容器配置后单击 下一步:高级配置,进入高级配置步骤。启用多卡共享场景,将默认配置两条实例注解,不允许删除或修改,否则无法满足多卡调度需求。
  • vke.volcengine.com/container-multiple-gpu: "2":GPU 卡数,例如 "1,2,3",与容器一一对应,分别表示各容器所需使用的卡数,若不能对应将报错。
  • vke.volcengine.com/mgpu-compute-policy: native-burst-share:GPU 算力分配策略,多卡共享场景固定配置为 native-burst-share。

alt

  1. 完成所有配置后,单击 确定,将开始创建无状态负载。

方式二:通过 YAML 配置

GPU 多卡共享功能通过实例注解(Annotation)实现,除了常规配置外,还需要增加以下两条实例注解配置。

  • vke.volcengine.com/container-multiple-gpu: "2":GPU 卡数,例如 "1,2,3",与容器一一对应,分别表示各容器所需使用的卡数,若不能对应将报错。
  • vke.volcengine.com/mgpu-compute-policy: native-burst-share:GPU 算力分配策略,多卡共享场景固定配置为 native-burst-share。

通过 YAML 配置 mGPU 多卡共享的示例如下:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mgpu-deployment # Deployment 名称。
  namespace: default # Deployment 所属命名空间。
spec:
  replicas: 1 # Pod 实例个数。 
  selector:
    matchLabels:
      app: mgpu-deployment
  template:
    spec:
      containers:
      - name: mgpu-container # 容器名称。
        image: nginx:1.14.2 # 容器镜像地址。
        resources:
         requests:   #与 limits 保持一致
           vke.volcengine.com/mgpu-memory: 4096
           vke.volcengine.com/mgpu-core: 30
         limits:
           vke.volcengine.com/mgpu-memory: 4096   # GPU 显存,单位为 MiB,此处表示 GPU 显存为 4 GiB。
           vke.volcengine.com/mgpu-core: 30      # GPU 算力百分比,此处表示配置 30% 的 GPU 算力。
        ports:
        - containerPort: 80
    metadata:
      annotations:
        vke.volcengine.com/container-multiple-gpu: "2" # GPU 卡数,例如 "1,2,3",与容器一一对应,分别表示各容器所需使用的卡数。
        vke.volcengine.com/mgpu-compute-policy: native-burst-share # GPU 算力分配策略,多卡共享场景固定配置为 native-burst-share。
      labels:
        app: mgpu-deployment