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

使用方法

最近更新时间2023.09.07 14:56:12

首次发布时间2022.09.30 10:43:57

本文主要介绍在容器服务中使用 mGPU 功能,实现容器共享 GPU 的方法。

说明

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

使用须知

使用 mGPU 功能时,对集群和 GPU 卡有如下环境要求和使用限制。

项目要求

Kubernetes 版本

不低于 v1.20.15-vke.4 版本。
集群 Kubernetes 版本的查看方法,请参见 FAQ

操作系统

使用 veLinux-GPU 1.0(Debian10)。
创建集群时,操作系统 选择使用容器服务提供的 公共镜像,系统会自动为您配置该版本的操作系统。

说明

mGPU 暂不支持使用 veLinux CentOS 兼容版 公共镜像。

内核版本

操作系统内核版本使用 v5.4.143。
创建集群时,操作系统 选择使用容器服务提供的 公共镜像,系统会自动为您配置该版本的操作系统内核。

Nvidia 驱动版本

使用 v470.129.06 版本。
创建 GPU 计算型节点池时,系统会自动为您配置该版本的 Nvidia 驱动。

GPU 显卡支持的显卡类型包括:T4、V100、A100、A30、A10。
mGPU 个数(对应 Container 个数)一个 GPU 上最多可创建 16 个 mGPU。 计算性能会随 mGPU 的创建数量衰减,建议按照容器申请的资源大小,规划单张 GPU 卡可共享部署的 mGPU 个数。
容器个数使用 mGPU 时,单个 Pod 内的容器数建议不超过 5 个。

调度器说明

mGPU 必须与 scheduler-plugin 组件结合使用才能实现容器共享 GPU 调度。scheduler-plugin 组件是拓展原生 kube-scheduler 调度器的调度能力及策略,支持配置 GPU 节点和 GPU 显卡的 binpack/spread 策略,组件详细介绍以及调度策略配置说明,请参见:scheduler-plugin 组件

注意

本场景要求 创建集群 时必须安装 scheduler-plugin 组件,,且首次配置完成后,不允许修改。因此,请在创建集群的 组件配置 步骤,根据实际情况配置 binpack/spread 调度策略。

若创建集群时未修改 scheduler-plugin 组件调度策略,则 mGPU 会采用如下默认调度策略:

GPU 节点调度策略GPU 卡调度策略调度方式适用场景

Spread

Binpack

  • Pod 分散调度到 GPU 分配率低的节点。
  • 容器优先调度到该节点上装箱率高的 GPU 卡。

节点故障隔离性较强,碎片资源相对较少。

步骤一:安装 mgpu 组件

  1. 登录 容器服务控制台
  2. 在顶部导航栏中选择您业务所在的地域。
  3. 在左侧导航栏中选择 集群,单击目标集群。
  4. 在集群管理页面的左侧导航栏中,选择 运维管理 > 组件管理
  5. 组件管理 页面,单击 GPU 页签,找到 mgpu 组件,单击 安装

    说明

    如需使用 mGPU 算力分配策略能力,请确保 mgpu 组件的版本不低于 v0.0.3。详细的说明,请参见 配置 mGPU 算力分配策略

    alt

步骤二:创建 GPU 计算型节点池

说明

当前 mGPU 仅支持 GPU 云服务器。GPU 云服务器中支持 GPU 计算型 ini2、pni2、g1ve、g1tl、g1te 等规格。

  1. 在集群管理页面的左侧导航栏中,单击 节点池
  2. 节点池 页面,根据您的实际需求,参考 创建节点池 中的参数说明,创建节点池。
    其中,部分参数需按如下说明设置:
    • Worker 节点配置 处:计算规格 必须选择 GPU 计算型。该规格的详细介绍,请参见 GPU 计算型
      alt
    • 更多配置 处添加如下两个节点标签:
      alt
      • 设置 节点标签 的 key 为vke.node.gpu.schedule、Value 为mgpu,表示在该节点池中的节点上,开启容器共享 GPU 调度能力和 GPU 显存隔离能力。

        说明

        GPU 调度时使用的更多标签相关说明和注意事项,请参见 GPU 调度标签说明

      • 设置 节点标签 的 key 为vke.volcengine.com/mgpu-compute-policy、Value 取值为fixed-shareguaranteed-burst-sharenative-burst-share时,表示在该节点池中的节点上,配置算力分配策略。

        说明

        配置算力分配策略的详细说明,请参见 配置 mGPU 算力分配策略

步骤三:在工作负载中配置资源配额

本文以创建无状态负载(Deployment)为例。

通过控制台配置

  1. 在集群管理页面的左侧导航栏中,选择 工作负载 > 无状态负载
  2. 无状态负载 页面,创建无状态负载或更新已有的负载。详细操作,请参见 创建无状态负载更新无状态负载
    其中 容器配置 步骤的 资源配额 处,根据需求配置 GPU 资源:
    alt
    • GPU 资源类型 选择 mGPU
    • GPU 算力 输入 0.01~1 的两位小数时,GPU 显存 输入大于等于 256 MiB,步长为 1 的 GPU 显存。显卡类型 默认 不限制显卡,不支持更改。

      注意

      mGPU 推荐的最小 GPU 算力 为 0.05 且步长为 0.05(不足 1 Card 时),最小 GPU 显存 为 1 GiB。该推荐值能够为您的容器间 GPU 共享场景,提供更好的体验。

    • GPU 算力 输入大于等于 1 的整数时,表示使用整张 GPU 卡算力,默认使用 GPU 卡的全部显存,因此 GPU 显存 不可配置。显卡类型 请根据您的实际需求,指定具体显卡类型或选择 不限制显卡

通过 YAML 配置

注意

在 mGPU 使用场景中,requests 必须与 limits 内容完全一致。

通过 YAML 配置 mGPU 资源相关示例如下:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mgpu-deployment # Deployment 名称。
  namespace: default # Deployment 所属命名空间。
spec:
  replicas: 2 # 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:
      labels:
        app: mgpu-deployment

查看 mGPU 监控指标

使用 mGPU 能力后,可查看 mGPU 的各项监控指标。

通过 Prometheus 监控查看

容器服务提供基于托管 Prometheus 服务(VMP)的 Prometheus 监控能力。您可以通过 Prometheus 监控 查看 mGPU 的各项监控指标。详细操作,请参见 Prometheus 监控

说明

邀测·申请试用】:Prometheus 监控 目前处于邀测阶段,如需使用,请提交申请。推荐您使用该功能查看 mGPU 各项监控指标。

通过 mGPU Client 查看

mGPU 提供 mGPU Client(mgpu-cli),支持开发者在终端查看 mGPU 相关指标。

  1. 登录 Pod 所在节点。您可以通过 ECS Terminal 登录,详细操作,请参见 ECS Terminal

  2. 执行如下命令,查看物理显卡信息。

    mgpu-cli	device	info	-a
    

    系统返回如下,其中通过vmem_free_bytes信息,查看 mGPU 场景下显卡被使用的情况。
    alt

    指标名称指标含义
    compute_free_weight设备未分配的算力百分比。
    compute_load_balance_mode容器使用该设备时的负载均衡模式。
    compute_policy设备的算力调度策略。
    compute_qos_enable基于该设备创建的实例是否使能算力 QoS(为 Native Burst 策略预留的字段,当前暂不支持配置该策略)。
    compute_timeslice算力时间片百分比。
    device_major/dev/mgpuX主设备号。
    instance_major/dev/mgpuXinstY/dev/mgpuXctl-$(container_id)主设备号。
    vmem_free_bytes该设备剩余的显存容量,单位: byte。
    nvidia/compute_mps_enable容器内是否使能 MPS 服务(为 Native Burst 策略预留的字段,当前暂不支持配置该策略)。

后续操作

配置 mGPU 算力分配策略