@session.function(), qui permet d’exécuter des fonctions Python dans des sandboxes. Il s’adresse aux développeurs qui souhaitent déporter des calculs Python ponctuels vers des environnements isolés sans avoir à gérer eux-mêmes le cycle de vie d’un sandbox. Il explique comment définir des fonctions distantes, quels types d’arguments et de valeurs de retour l’API prend en charge, et dans quels cas cette API est la plus adaptée.
Choisir l’authentification
Ces exemples s’exécutent sur une capacité sans serveur, sauf si une section précise CKS. Choisissez l’identifiant d’authentification du compte propriétaire de vos sandboxes. Pour obtenir une clé ou un jeton, consultez Choisir et obtenir des identifiants d’authentification. Exécutez les commandes d’installation dans un environnement virtuel Python actif. Enregistrez le code Python de l’onglet correspondant à votre identifiant d’authentification sous le nomsandbox_auth.py, dans le même répertoire que les scripts Python que vous exécutez depuis cette page. Ce fichier enregistre le mode d’authentification choisi, et non votre identifiant d’authentification lui-même. Les exemples importent AUTH depuis ce fichier et le transmettent explicitement à chaque nouvelle sandbox ou session.
- Clé API Forge
- Jeton d’accès à l’API CoreWeave
Utilisez votre clé API Forge via la stratégie d’authentification W&B du SDK :
sandbox_auth.py
placement_mode="cks" lors de la création de la sandbox ou dans SandboxDefaults. Créer une session avec auth=AUTH authentifie également les sandboxes qui lui appartiennent. Conservez le même identifiant d’authentification pour vous reconnecter aux sandboxes, les lister ou les nettoyer.
Aperçu
L’API de décorateur de fonction vous permet d’exécuter des fonctions Python dans des conteneurs sandbox isolés. Utilisez-la pour exécuter à distance des traitements Python distincts tout en conservant un code appelant simple :Utilisation de base
Définir des fonctions
Décorez les fonctions avec@session.function() :
Appeler des fonctions
Appelez.remote() sur la fonction décorée pour l’exécuter dans le sandbox :
Méthodes d’exécution
Exécuter en parallèle avec map()
Exécutez sur plusieurs entrées :Exécuter en local avec local()
Exécutez le code en local, sans sandbox, ce qui est pratique pour les tests :Types des arguments et des valeurs de retour
Les fonctions distantes transmettent les arguments et les valeurs de retour au format JSON. Ils doivent donc être sérialisables en JSON : dictionnaires, listes, chaînes de caractères, nombres, booléens etNone.
TypeError avant le démarrage de la sandbox :
Example output
return value is not JSON-serializable.
Les objets JSON n’acceptent que des clés de type string. Un dictionnaire dont les clés sont des entiers, des nombres à virgule flottante ou des booléens est rejeté plutôt que converti : ainsi, les types que reçoit votre fonction dans la sandbox correspondent à ceux que vous avez transmis.
Pour manipuler des tableaux NumPy, des DataFrames pandas ou des instances de classes personnalisées, convertissez-les en valeurs compatibles avec JSON avant d’appeler la fonction, puis reconstruisez-les à l’intérieur de celle-ci :
Closures et variables globales
Variables de closure
Les fonctions capturent les variables de leur portée englobante :Variables globales
Le décorateur sérialise avec la fonction les variables globales auxquelles elle fait référence :Image de conteneur
Remplacez l’image de conteneur pour certaines fonctions :Gestion des erreurs
Les exceptions levées par une fonction se propagent jusqu’à l’appelant :Quand utiliser les fonctions plutôt que les sandboxes
Utilisez le tableau suivant pour déterminer laquelle de l’API du décorateur de fonction ou de l’API sandbox convient le mieux à votre charge de travail.Limitations
L’API de fonctions est volontairement simple. Pour les flux de travail complexes :- Nouvelles tentatives et backoff : implémentez-les dans le code appelant.
- Dépendances entre tâches et DAG : utilisez un orchestrateur de flux de travail comme Airflow ou Prefect.
- Ordonnancement complexe : utilisez directement l’API de sandbox.