如需在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配备了本地盘,您可以挂载使用本地盘,请参见创建本地盘实例。
当前ECI GPU支持的驱动版本为NVIDIA 460.73.01,可支持的CUDA Toolkit版本为11.2。
关于ECS GPU规格族的更多信息,请参见ECS实例规格可购买地域总览和实例规格族。
开启共享GPU调度能力
参见运行共享GPU调度示例为节点开启共享GPU调度能力。
在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。