Déployez des charges de travail GPU, telles que l'inférence IA et le calcul haute performance (HPC), sur Knative avec la possibilité de partager les GPU entre les pods.
Prérequis
Knative est déployé dans votre cluster.
Configurer les ressources GPU
Ajoutez l'annotation k8s.aliyun.com/eci-use-specs à spec.template.metadata.annotations pour spécifier un type d'instance Elastic Compute Service (ECS) accéléré par GPU. Ajoutez le champ nvidia.com/gpu à spec.containers.resources.limits pour définir le nombre de GPU. Si vous omettez nvidia.com/gpu, le pod génère des erreurs après son démarrage.
Exemple de service Knative avec un 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 # GPU-accelerated ECS instance type
spec:
containers:
- image: registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go:73fbdd56
ports:
- containerPort: 8080
resources:
limits:
nvidia.com/gpu: '1' # Number of GPUs required. Required field.
Familles d'instances GPU prises en charge
| Famille d'instances | Modèle de GPU | Exemple de type d'instance |
|---|---|---|
| gn7i | NVIDIA A10 | ecs.gn7i-c8g1,2xlarge |
| gn7 | — | ecs.gn7-c12g1,3xlarge |
| gn6v | NVIDIA V100 | ecs.gn6v-c8g1.2xlarge |
| gn6e | NVIDIA V100 | ecs.gn6e-c12g1.3xlarge |
| gn6i | NVIDIA T4 | ecs.gn6i-c4g1.xlarge |
| gn5i | NVIDIA P4 | ecs.gn5i-c2g1.large |
| gn5 | NVIDIA P100 | ecs.gn5-c4g1.xlarge |
Pilote GPU pris en charge : NVIDIA 460.73.01. CUDA Toolkit : 11,2. La famille gn5 inclut des disques locaux. Pour monter des disques locaux sur des ECI, consultez Créer une instance de conteneur élastique avec des disques locaux attachés . Pour connaître les types d'instance disponibles par région, consultez Types d'instance ECS disponibles pour chaque région et Présentation des familles d'instances .
Activer le partage de GPU
Le partage de GPU permet à plusieurs pods de partager un GPU physique, ce qui réduit les coûts lorsque les charges de travail ne nécessitent pas un accès dédié au GPU.
Pour activer le partage de GPU :
Activez le partage de GPU pour les nœuds.
-
Ajoutez le champ
aliyun.com/gpu-memàspec.containers.resources.limitsdans votre service Knative pour définir la taille de la mémoire 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" # Specify the GPU memory size.
Étapes suivantes
Bonnes pratiques pour le déploiement de services d'inférence IA dans Knative — déployez des modèles IA, configurez la mise à l'échelle automatique et allouez des ressources GPU.