Cette page explique comment déployer des charges de travail de conteneur GPU sur la référence (SKU) Google Distributed Cloud (GDC) Sandbox AI Optimized.
Déployer des charges de travail de conteneur GPU
La référence GDC Sandbox AI Optimized inclut quatre GPU NVIDIA H100 80 Go HBM3 dans le cluster d'infrastructure de l'organisation. Ces GPU sont accessibles à l'aide du nom de ressource nvidia.com/gpu-pod-NVIDIA_H100_80GB_HBM3. Cette section explique comment mettre à jour une configuration de conteneur pour utiliser ces GPU.
Les GPU de la référence GDC Sandbox AI Optimized sont associés à un projet préconfiguré, "sandbox-gpu-project". Vous devez déployer votre conteneur à l'aide de ce projet dans le cluster org-1-infra pour utiliser les GPU.
Avant de commencer
Pour exécuter des commandes sur le cluster d'infrastructure de l'organisation, assurez-vous que vous disposez du kubeconfig du cluster
org-1-infra, comme décrit dans Utiliser des clusters :- Configurez et authentifiez-vous avec la ligne de commande
gdcloud. - Générez le fichier kubeconfig pour le cluster d'infrastructure de l'organisation et attribuez son chemin d'accès à la variable d'environnement
KUBECONFIG.
- Configurez et authentifiez-vous avec la ligne de commande
Pour exécuter les charges de travail, vous devez disposer du rôle
sandbox-gpu-admin. Par défaut, le rôle est attribué à l'utilisateurplatform-admin. Vous pouvez attribuer le rôle à d'autres utilisateurs en vous connectant en tant queplatform-adminet en exécutant la commande suivante :kubectl --kubeconfig ${KUBECONFIG} create rolebinding ${NAME} --role=sandbox-gpu-admin \ --user=${USER} --namespace=sandbox-gpu-projectPour autoriser le trafic réseau vers votre conteneur, vous devez disposer d'une règle de réseau de projet. Pour plus d'informations, consultez la section Créer une règle de réseau.
Configurer un conteneur pour utiliser des ressources GPU
Ajoutez les champs
.containers.resources.requestset.containers.resources.limitsà la spécification de votre conteneur pour demander des GPU pour la charge de travail. Tous les conteneurs du projet sandbox-gpu-project peuvent demander jusqu'à quatre GPU au total dans l'ensemble du projet. L'exemple suivant demande un GPU dans le cadre de la spécification du conteneur.apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment namespace: sandbox-gpu-project labels: app: nginx spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:latest resources: requests: nvidia.com/gpu-pod-NVIDIA_H100_80GB_HBM3: 1 limits: nvidia.com/gpu-pod-NVIDIA_H100_80GB_HBM3: 1
Les conteneurs nécessitent également des autorisations supplémentaires pour accéder aux GPU. Pour chaque conteneur qui demande des GPU, ajoutez un
.containers.securityContextaccordantsecurityContext.seLinuxOptionsde typeunconfined_tau conteneur.apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment namespace: sandbox-gpu-project labels: app: nginx spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:latest resources: requests: nvidia.com/gpu-pod-NVIDIA_H100_80GB_HBM3: 1 limits: nvidia.com/gpu-pod-NVIDIA_H100_80GB_HBM3: 1 securityContext: seLinuxOptions: type: unconfined_tAppliquez le fichier manifeste de votre conteneur :
kubectl apply -f ${CONTAINER_MANIFEST_FILE_PATH} \ -n sandbox-gpu-project \ --kubeconfig ${KUBECONFIG}