本文介绍如何使用ECI GPU实例,使用ECI GPU可以通过GPU对应的docker镜像直接跑在ECI上,不需要安装tensorflow,cuda toolkit等软件,比如tensorflow/tensorflow:1.13.1-gpu, nvidia/cuda。当前ECI GPU支持的驱动版本NVIDIA 418.87,可支持的CUDA Toolkit版本是10.0。

GPU规格

ECI支持通过指定ECS GPU规格进行GPU实例的创建。

支持的ECS GPU规格族包括:

  • GPU计算型实例规格族gn6v(NVIDIA V100),例如:ecs.gn6v-c8g1.2xlarge。
  • GPU计算型实例规格族gn6i(NVIDIA T4),例如:ecs.gn6i-c4g1.xlarge。
  • GPU计算型实例规格族gn5(NVIDIA P100),例如:ecs.gn5-c4g1.xlarge。
  • GPU计算型实例规格族gn5i(NVIDIA P4),例如:ecs.gn5i-c2g1.large。

完整的ECS GPU规格定义,请参见实例规格族

Kubernetes方式

pod声明中增加annotations: k8s.aliyun.com/eci-use-specs。

  • 在Pod metadata中添加指定规格的annotations。
  • 【必须】在Container的resources中申明GPU资源,添加nvidia.com/gpu属性。
警告 您在使用GPU实例的过程中,除了需要在Pod的metadata中添加指定规格的annotations,还必须在Container的resource中明确指定nvidia.com/gpu属性值,属性值为卡的个数。
apiVersion: apps/v1beta2 # for versions before 1.8.0 use apps/v1beta1
kind: Deployment
metadata:
  name: nginx-gpu-demo-1
  labels:
    app: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
      annotations:
        k8s.aliyun.com/eci-use-specs: ecs.gn5i-c4g1.xlarge
    spec:
      containers:
      - name: nginx
        image: registry-vpc.cn-beijing.aliyuncs.com/eci_open/nginx:1.15.10 # replace it with your exactly <image_name:tags>
        resources:
            limits:
              nvidia.com/gpu: '1'    # !!!注意,必须指定该值,否则Pod应用启动后会报错。
        ports:
        - containerPort: 80

OpenAPI方式

CreateContainerGroup

ECI API已经有介绍, 对于GPU的支持,需要在请求参数中增加一项。

请求参数中增加:

名称 类型 是否必须 描述
InstanceType String 实例规格

Container中增加

名称 类型 是否必须 描述
Gpu Integer 容器级别gpu个数

其中InstanceType使用ECS实例规格标识。在CreateContainerGroup创建ECI GPU实例的时候,InstanceType 需要给定,如果这个参数未给定,但是指定了Container中的Gpu,请求会返回错误;

ECI GPU实例是container级别的使用,所有container使用的Gpu个数加起来不能大于InstanceType中规定的个数,如果大于则CreateContainerGroup请求会返回错误。

UpdateContainerGroup

与CreateContainerGroup相似,如果要更新container中gpu的数量的话,UpdateContainerGroup的API接口也需要在container中加入Gpu参数:

Container中增加

名称 类型 是否必须 描述
Gpu Integer 容器级别gpu个数