Pour exécuter l'inférence IA, le calcul haute performance ou d'autres charges de travail GPU dans Knative, configurez votre service Knative pour demander des ressources GPU. Vous pouvez attribuer un GPU dédié à un service ou activer le partage GPU afin que plusieurs pods se partagent un seul GPU physique.
Prérequis
Avant de commencer, vérifiez les points suivants :
Knative est déployé dans votre cluster ACK. Pour plus d'informations, consultez la rubrique Déployer Knative.
Configurer un GPU dédié
Ajoutez deux champs au manifeste de votre service Knative :
L'annotation
k8s.aliyun.com/eci-use-specsdansspec.template.metadata.annotations: spécifie le type d'instance ECS accéléré par GPU.La limite de ressource
nvidia.com/gpudansspec.containers.resources.limits: indique le nombre de GPU requis par le conteneur. Ce champ est obligatoire. Si vous l'omettez, le pod ne démarre pas.
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 — omitting it causes the pod to fail at startup.
Familles d'instances GPU prises en charge
| Famille d'instances | Puce 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 |
La famille d'instances gn5 inclut des disques locaux. Pour monter des disques locaux sur des instances de conteneur élastiques, consultez la rubrique Créer une instance de conteneur élastique avec des disques locaux attachés.
Pour obtenir la liste complète des types d'instances ECS accélérés par GPU disponibles dans votre région, consultez la page Types d'instances ECS disponibles pour chaque région. Pour des informations générales sur les familles d'instances, consultez la rubrique Présentation des familles d'instances.
Les instances de conteneur élastiques accélérées par GPU prennent en charge la version 460.73.01 du pilote NVIDIA GPU et la version 11.2 de CUDA Toolkit.
Activer le partage GPU
Le partage GPU permet à plusieurs pods de se partager un seul GPU physique en divisant sa mémoire. Utilisez cette fonctionnalité pour des charges de travail telles que les services d'inférence légers ou les environnements de développement.
Activez le partage GPU sur les nœuds. Pour obtenir des instructions, consultez la rubrique Activer le partage GPU.
-
Dans le manifeste de votre service Knative, définissez
aliyun.com/gpu-memsousspec.containers.resources.limitspour spécifier la taille de la mémoire GPU (en Go) allouée à chaque conteneur.apiVersion: serving.knative.dev/v1 kind: Service metadata: name: helloworld-go namespace: default spec: template: metadata: annotations: autoscaling.knative.dev/maxScale: "100" # Maximum number of pod replicas autoscaling.knative.dev/minScale: "0" # Scale to zero when idle spec: containerConcurrency: 1 # Maximum concurrent requests per pod replica 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 memory allocated to this container, in GB
Étapes suivantes
Bonnes pratiques pour le déploiement de services d'inférence IA dans Knative : déployez des modèles IA en tant que services d'inférence, configurez la mise à l'échelle automatique et gérez l'allocation des ressources GPU.
FAQ sur les GPU : solutions aux problèmes courants liés aux GPU.