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

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

使用限制

前提条件

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 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 数值小于规格数值可能会造成资源浪费,请合理规划实例规格。