You need to enable JavaScript to run this app.
导航
指定 VCI 规格创建 GPU 计算型实例
最近更新时间:2025.01.17 14:40:36首次发布时间:2022.05.09 14:46:16

弹性容器实例支持指定 VCI 规格来创建 VCI 实例。本文主要介绍指定 VCI 规格创建 GPU 计算型 实例的方法。

使用限制

GPU 计算型 中每个规格族支持的地域和可用区不同,详情请参见 地域和可用区

前提条件

Kubernetes 方式创建

创建 Pod 或者工作负载(包括 Deployment、StatefulSet、Job、CronJob)时,通过添加 Annotation,指定 VCI 规格创建实例。

Annotation 说明,如下所示。

Annotation KeyAnnotation Value 示例值说明是否必填

vci.vke.volcengine.com/preferred-instance-types

vci.g1v.8xlarge

GPU 计算型 中的实例规格。
指定实例规格时,包含 GPU 型号、数量、CPU 数量、内存数量等。可通过定义各容器的请求(Request)、上限(Limit)来指定该容器的 vCPU、内存、GPU 数量。规格详细信息,请参见 GPU 计算型

说明

  • 按照指定的实例规格计费。计费说明,请参见 产品计费
  • 该 Annotation 的 通用型 取值说明,请参见 指定 VCI 规格创建通用型实例
  • 支持指定多个规格族(Annotation Value),多个规格族之间以半角逗号(,)分隔,并按照前后顺序排列优先级。

本场景必填

vci.vke.volcengine.com/gpu-driver-version

tesla-470.129.06

指定 GPU 计算型实例的驱动版本。Annotation Value 格式为:tesla-{NVIDIA 驱动版本}

根据preferred-instance-family中指定的 GPU 计算型规格不同,此处支持配置的{NVIDIA 驱动版本}也不同,详细说明,请参见下方 不同规格对应的驱动版本 表格。

说明

未设置该 Annotation 时,系统自动指定与您所选 GPU 计算型规格对应的默认 NVIDIA 驱动版本。

非必填

不同规格对应的驱动版本

实例规格NVIDIA 驱动版本推荐的 CUDA 版本

gni3

535.161.07(默认)

  • NVIDIA 470.129.06:使用该版本驱动时,推荐使用 CUDA 11.4 版本。
  • NVIDIA 535.161.07:使用该版本驱动时,推荐使用 CUDA 12.2 版本。

注意

建议使用与驱动版本相匹配的 CUDA 版本,否则可能影响 GPU 性能。

gni2

  • 470.129.06(默认)
  • 535.161.07

ini2

  • 470.129.06(默认)
  • 535.161.07

g1v

  • 470.129.06(默认)
  • 535.161.07

以创建无状态负载(Deployment)为例,完整的示例代码如下所示:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      annotations:
        vke.volcengine.com/burst-to-vci: enforce  #强制使用 VCI。
        vci.vke.volcengine.com/preferred-instance-types: vci.g1v.8xlarge #指定实例 GPU 规格。
        vci.vke.volcengine.com/gpu-driver-version: tesla-470.129.06 #指定实例的 GPU 驱动。
      labels:
        app: nginx
    spec:
      containers:
        - image: cr-cn-beijing.volces.com/tw/nginx:1.0 # 容器镜像的地址和版本,请配置为您自己的镜像地址。
        imagePullPolicy: Always
        name: nginx
        resources:
          requests:  #指定容器的 vCPU、内存、GPU。
            cpu: "500m"      
            memory: "1024Mi"
            nvidia.com/gpu: 1 #可以同时指定 limit 和 request,但值必须相等。
          limits:
            cpu: "1"      
            memory: "2048Mi"
            nvidia.com/gpu: 1 #指定 container gpu 数量(同原生)。

说明

Pod.spec.container[].resources的 GPU 设置,需与原生 Kubernetes 能力和限制相同:

  • 使用<vendor>.com/gpu指定 GPU 资源。
  • 必须指定limit
  • 可以同时指定limitrequest,但值必须相等。
  • 可以不指定rquest,Kubernetes 默认将limit值作为request值。
  • 不共享 GPU,不支持超售。
  • GPU 数量必须是整数。

控制台方式创建

  1. 在 VPC-CNI 集群中安装 nvidia-device-plugin 组件。详细操作,请参见 安装组件
    alt
  2. 创建工作负载 时,配置以下参数:
    1. 配置 基本信息 时:算力类型 选择 弹性容器实例 VCI
      alt
    2. 配置 容器配置 时:资源配额 处,配置 GPU 资源。
      配置如下图红框中的参数,其中 GPU 资源类型 选择 Nvidia,其余参数按实际需求配置。

      说明

      VCI 场景中暂不支持使用 mGPU 资源类型。

      alt
    3. 配置 高级配置 时:VCI 规格配置 处,配置实例规格。
      alt

创建 GPU 型实例注意事项

  1. 分别计算 Pod 的 CPU、内存、GPU 的上限合计数值:
    • CPU 合计数值 = Pod 内 所有 Init 容器的 CPU 上限最大值所有应用容器的 CPU 上限之和 两者中,数值较大者。
    • 内存合计数值 = Pod 内 所有 Init 容器的内存上限最大值所有应用容器的内存上限之和 两者中,数值较大者。
    • GPU 合计数值 = Pod 内 所有 Init 容器的 GPU 上限最大值所有应用容器的 GPU 上限之和 两者中,数值较大者。
    • 若 Pod 内某个容器未设置 CPU 上限、内存上限、或者 GPU 上限,则该项的数值以 0 计算。
  2. 根据 annotation 指定的 value 从 GPU 计算型 中获取对应的 vCPU、内存、GPU 等数值(以下简称规格数值)。
  3. 合计数值规格数值 必须符合以下全部条件:
    • Pod.spec.container[].resources.limit.'<vendor>.com/gpu' 中的<vendor>必须与实例规格族 GPU 对应的供应商一致。

      说明

      当前 GPU 显卡为 NVIDIA 显卡。因此<vendor>nvidia

    • 合计数值 中的 GPU 取值必须大于 0。
    • 合计数值 中的 CPU、内存、GPU 取值必须都小于或等于规格数值 中的对应数值。

      注意

      合计数值小于规格数值时,将按规格数值创建实例和计费。若 Container 内指定的 GPU 数值小于规格数值可能会造成资源浪费,请合理规划实例规格。