在Knative中使用GPU资源并开启共享GPU

如需在Knative中部署AI任务、高性能计算等需要GPU资源的工作负载,您可以在Knative Service中指定GPU规格,创建GPU实例。您也可以为节点开启共享GPU调度能力,允许多个Pod共享同一个GPU,提高GPU使用率。

前提条件

已在集群中部署Knative,请参见部署Knative

使用GPU

您可以通过在Knative Service中添加spec.template.metadata.annotation下的k8s.aliyun.com/eci-use-specs字段指定GPU规格,然后通过spec.containers.resources.limits下的nvidia.com/gpu字段声明GPU资源。

示例如下。

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: helloworld-go
spec:
  template:
    metadata:
      labels:
        app: helloworld-go
      annotations:
        k8s.aliyun.com/eci-use-specs: ecs.gn5i-c4g1.xlarge  # 指定支持的ECS GPU规格。
    spec:
      containers:
        - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go:73fbdd56
          ports:
          - containerPort: 8080
          resources:
            limits:
              nvidia.com/gpu: '1'    # 容器所需的GPU个数,必须指定该值,否则Pod启动后将会报错。

支持指定的ECS GPU规格族如下:

  • GPU计算型实例规格族gn7i(NVIDIA A10),例如ecs.gn7i-c8g1.2xlarge。

  • GPU计算型实例规格族gn7,例如ecs.gn7-c12g1.3xlarge。

  • GPU计算型实例规格族gn6v(NVIDIA V100),例如ecs.gn6v-c8g1.2xlarge。

  • GPU计算型实例规格族gn6e(NVIDIA V100),例如ecs.gn6e-c12g1.3xlarge。

  • GPU计算型实例规格族gn6i(NVIDIA T4),例如ecs.gn6i-c4g1.xlarge。

  • GPU虚拟化型实例规格族vgn6i-vws(NVIDIA T4),例如:ecs.vgn6i-m4-vws.xlarge、ecs.vgn6i-m8-vws.2xlarge。

  • GPU计算型实例规格族gn5i(NVIDIA P4),例如ecs.gn5i-c2g1.large。

  • GPU计算型实例规格族gn5(NVIDIA P100),例如ecs.gn5-c4g1.xlarge。

    gn5配备了本地盘,您可以挂载使用本地盘,请参见创建本地盘实例

说明

开启共享GPU调度能力

  1. 参见运行共享GPU调度示例为节点开启共享GPU调度能力。

  2. 在Knative Service中通过aliyun.com/gpu-mem字段配置GPU显存大小。示例如下。

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: helloworld-go
      namespace: default
    spec:
      template:
        metadata:
          annotations:
            autoscaling.knative.dev/maxScale: "100"
            autoscaling.knative.dev/minScale: "0"
        spec:
          containerConcurrency: 1
          containers:
          - image: registry-vpc.cn-hangzhou.aliyuncs.com/hz-suoxing-test/test:helloworld-go
            name: user-container
            ports:
            - containerPort: 6666
              name: http1
              protocol: TCP
            resources:
              limits:
                aliyun.com/gpu-mem: "3" # 设置GPU显存大小

相关文档

  • 在Knative中部署AI模型推理任务时,您可以配置自动扩缩容、灵活分配GPU资源等功能,提高AI推理服务能力和GPU资源利用率,请参见在Knative中部署AI模型推理服务的最佳实践

  • 关于使用GPU的过程中可能遇到的FAQ及对应解决方案,请参见GPU FAQ