Les bacs à sable GPU sont en préversion privée : votre organisation doit figurer sur une liste d’autorisation, même si elle utilise déjà des bacs à sable CPU uniquement. Pour demander l’accès, contactez votre équipe de compte ou écrivez à forge-support@coreweave.com. Tant que votre organisation ne figure pas sur cette liste, les requêtes de création de bacs à sable GPU échouent avec l’erreur
CWSANDBOX_GPU_NOT_ALLOWED.L’isolation dépend du mode de placement
La virtualisation GPU n’est prise en charge que sur la capacité sans serveur. Sur un cluster CKS qui vous appartient, les sandbox GPU ne sont pas virtualisés.Avant de commencer
Vous avez besoin des éléments suivants :- Les bacs à sable GPU doivent être activés pour votre organisation.
-
Une clé API Forge pour les exemples sans serveur. Le placement CKS nécessite un jeton d’accès à l’API CoreWeave disposant de l’action de gestion des identités et des accès (IAM)
SANDBOX_USER. Voir Choisir et obtenir des identifiants d’authentification. -
Le client Python,
cwsandbox1.14.2 ou version ultérieure :
Fonctionnement des demandes de GPU
Les mêmes règles s’appliquent dans les deux modes de placement :- Une demande de GPU réserve des GPU, et rien d’autre. Définissez explicitement le CPU et la mémoire, en les dimensionnant en fonction du travail que vous exécuterez en parallèle du GPU. Si vous omettez les valeurs de CPU et de mémoire, les valeurs
defaultCpuetdefaultMemoryde la politique peuvent s’appliquer, mais l’allocation résultante doit tout de même respecter les exigences de ressources de la politique. - Les bacs à sable obtiennent des GPU entiers. Les GPU ne sont ni partagés, ni partitionnés, ni découpés en tranches de temps entre les bacs à sable.
- Une sandbox s’exécute sur un seul Nœud. Sur une capacité sans serveur, une sandbox obtient exactement 1 GPU. Sur votre cluster CKS, la plus grande sandbox occupe un Nœud complet, et le nombre de GPU correspondant dépend du type de GPU. Sur un Nœud doté de 8 GPU, une sandbox CKS peut demander de 1 à 8 GPU. Une demande portant sur plusieurs GPU nécessite qu’autant de GPU libres, ainsi que le CPU et la mémoire demandés, soient disponibles simultanément sur un même Nœud.
- Le type de GPU est un filtre, pas un menu. La clé facultative
typedoit correspondre exactement, casse comprise, à l’un des types de GPU annoncés par l’exécuteur. Omettez-la pour accepter n’importe quel GPU dont dispose l’exécuteur.
Exécuter une sandbox GPU sur une capacité sans serveur
Le placement sans serveur ne nécessite ni exécuteur ni politique qui vous soit propre. CoreWeave fournit la politique et le matériel. Les sandboxes GPU s’exécutent dans une machine virtuelle et conviennent donc à l’exécution de code non fiable.GPU disponibles
La capacité sans serveur repose sur un seul modèle de GPU, la NVIDIA RTX PRO 6000 Blackwell Server Edition. Seules les sandboxes à 1 GPU sont prises en charge sur la capacité sans serveur. Pour exécuter une sandbox avec plus d’un GPU, utilisez votre cluster CKS.
Deux types d’instance en sont équipés : High Memory et Standard Memory. Ils diffèrent par la RAM de l’hôte, et non par le GPU, et présentent tous deux le même type de GPU à une sandbox. Vous ne choisissez donc pas le type d’instance sur lequel une sandbox est placée.
Omettez la clé
type dans la requête de GPU afin que la plateforme attribue un GPU issu du calcul managé par CoreWeave. Le champ reste accepté ici, mais il sert de filtre et non de sélecteur : un type qui ne correspond à aucun exécuteur échoue avec CWSANDBOX_RUNNER_UNAVAILABLE. Un exécuteur qui reçoit un type non pris en charge le rejette avec CWSANDBOX_PLACEMENT_CONSTRAINT_UNSATISFIED.
Utilisez resources pour choisir le CPU et la mémoire en plus du nombre de GPU, comme le montre l’exemple suivant.
Le disque ne se demande pas avec le CPU, la mémoire et le GPU, mais séparément : ResourceOptions ne comporte aucun champ de disque. Le système de fichiers racine du conteneur est un stockage éphémère node-local dont la sandbox ne réserve aucune part ; la commande df exécutée dans la sandbox indique donc le système de fichiers du nœud plutôt qu’un quota propre à la sandbox. Pour disposer d’un chemin dédié accessible en écriture, déclarez un volume temporaire :
medium="memory" : un volume en mémoire doit déclarer une taille, et le total des volumes en mémoire d’un même conteneur ne peut pas dépasser 80 % de sa requête de mémoire.
Ne définissez pas non plus runtime_class. Une requête de GPU sélectionne d’elle-même la classe de runtime de machine virtuelle GPU, et une classe de runtime que vous imposez est appliquée telle quelle : si vous imposez la classe CPU en plus d’une requête de GPU, vous obtenez donc une sandbox qui ne peut pas accéder au GPU.
Créer la sandbox
DéfinissezFORGE_API_KEY sur votre clé API Forge, puis exécutez l’exemple suivant. Il crée une sandbox dotée de 1 GPU, de 2 CPU et de 8 Gio de mémoire, puis affiche le GPU détecté par nvidia-smi.
- Python
- TypeScript
Cet exemple transmet une clé API Forge via Le dict
AuthHeaders.resources à plat attribue les mêmes valeurs aux demandes de ressources et aux limites. "gpu": 1 est un raccourci pour "gpu": {"count": 1}. Le mode sans serveur ne prend en charge qu’un seul GPU par sandbox ; laissez donc le nombre à 1.La propriété resource_gpu renvoie l’allocation GPU confirmée par la plateforme, par exemple {'count': 1}.Exécuter une sandbox GPU sur votre cluster CKS
Avec le placement sur CKS, ce sont vos administrateurs qui décident quels GPU les bacs à sable peuvent utiliser, et en quelle quantité. L’exécuteur propose les types de GPU présents sur les Nœuds du cluster, et la politique qui lui est associée délimite ce qu’une sandbox peut demander.Prérequis
Avant de demander un GPU sur CKS, assurez-vous de disposer des éléments suivants :- Un cluster CKS doté de nœuds GPU et d’un exécuteur à l’état
Ready. Voir Utiliser votre propre infrastructure de calcul. - Une politique sur cet exécuteur qui autorise les GPU. Le champ
maxGpuCountsousresourcesplafonne le nombre de GPU qu’une sandbox peut demander : omettez-le pour ne fixer aucun plafond, ou définissez-le sur0pour refuser les demandes de GPU. LaissezdefaultGpuRuntimeClassnon défini afin que les sandboxes GPU s’exécutent avec la classe de runtime par défaut du cluster. Les classes de runtime GPU basées sur Kata, commecw-kata-nvidia-gpu, ne sont pas prises en charge sur les clusters CKS des clients. Pour la description de chaque champ, voir Configurer une politique de sandbox. - L’action IAM
SANDBOX_USERet un jeton d’accès à l’API CoreWeave, défini dansCWSANDBOX_API_KEY.
Trouver les types de GPU de votre exécuteur
Chaque exécuteur expose les types de GPU dont disposent ses nœuds. Listez-les avant de choisir untype :
type. La correspondance est sensible à la casse : B200 et b200 ne désignent donc pas le même type. Pour filtrer plutôt les exécuteurs par type de GPU, transmettez gpu_type à list_runners(). Pour en savoir plus, voir Découvrir les exécuteurs disponibles.
Créer la sandbox
L’exemple suivant déploie une sandbox sur CKS avec 2 GPU d’un type donné, 8 CPU et 32 Gio de mémoire. Remplacez[GPU-TYPE] par l’un des types proposés par votre exécuteur, ou supprimez la clé type pour accepter n’importe quel GPU de l’exécuteur. Laissez runtime_class non défini afin que la sandbox utilise la classe de runtime par défaut du cluster.
runner_ids=["[RUNNER-ID]"]. L’allocation confirmée dans resource_gpu indique uniquement le nombre, par exemple {'count': 2}, même si vous avez demandé un type.
Le nombre de GPU est plafonné par le maxGpuCount de la politique et par le nombre de GPU libres sur un seul Nœud. Une requête qui dépasse le plafond de la politique échoue avec CWSANDBOX_RESOURCE_CEILING_EXCEEDED. Si vous indiquez un type que l’exécuteur ne propose pas, ou dont la casse diffère, aucun exécuteur éligible n’est trouvé et la requête échoue avec CWSANDBOX_RUNNER_UNAVAILABLE.
Images de conteneur
L’exemple suivant utilise la capacité sans serveur et la clé API Forge configurée précédemment. Dans une sandbox GPU, la plateforme fournit le pilote NVIDIA et l’outilnvidia-smi, si bien que l’image par défaut voit déjà le GPU. Pour exécuter des applications CUDA, utilisez une image qui embarque le runtime CUDA et les bibliothèques dont votre code a besoin, comme une image pytorch/pytorch ou nvidia/cuda.
Choisissez une image adaptée au GPU. La RTX PRO 6000 Blackwell Server Edition a une capacité de calcul 12.0 (sm_120), qui nécessite CUDA 12.8 ou une version ultérieure, et PyTorch 2.7 est la première version compilée pour cette architecture. Une image plus ancienne affiche quand même correctement le nom du GPU, car celui-ci est lu dans les métadonnées du périphérique via le pilote, mais elle échoue dès le premier lancement de noyau avec CUDA error: no kernel image is available for execution on the device. Au lieu de vous fier au nom du périphérique, vérifiez que votre framework liste bien sm_120 :
Erreurs courantes
Étapes suivantes
- Configuration du bac à sable décrit chaque champ
ResourceOptions, les classes QoS et les délais d’expiration. - Configurer une politique de sandbox explique les contraintes de GPU, de classe de runtime et de ressources que les administrateurs définissent sur un exécuteur CKS.
- Premiers pas présente les bacs à sable sans serveur limités au CPU ainsi que les identifiants d’authentification.
- Utiliser votre propre capacité de calcul explique comment configurer l’exécuteur et créer votre premier sandbox sur un cluster.