W&B Sandboxes est en préversion privée, disponible sur invitation uniquement. Pour demander à y accéder, contactez l’
assistance ou votre AISE.
Utilisez les opérations sur les fichiers pour partager des données entre votre environnement local et un sandbox. Vous pouvez lire des fichiers depuis un sandbox, y écrire des fichiers ou y monter des fichiers et répertoires locaux.
Par exemple, vous pouvez écrire un script Python dans un sandbox, l’exécuter, puis récupérer le fichier de sortie dans votre environnement local. Vous pouvez également monter un répertoire de données d’entraînement dans un sandbox pour une tâche de machine learning.
Choisissez la méthode d’accès aux fichiers appropriéeMontez des fichiers ou des répertoires lorsque vous voulez que le sandbox accède à des données locales sans les copier.Lisez et écrivez des fichiers lorsque vous voulez transférer de petits fichiers entre votre environnement local et le sandbox, ou lorsque vous voulez enregistrer localement la sortie du sandbox.
Écrire un fichier dans la sandbox
Transférez un fichier de votre environnement local vers le sandbox à l’aide de la méthode Sandbox.write_file().
from pathlib import Path
from wandb.sandbox import Sandbox
# Chemin du fichier local que vous souhaitez écrire dans le sandbox
text_file = Path("hello.txt")
with Sandbox.run() as sandbox:
# Écrire un fichier dans le sandbox
sandbox.write_file("hello.txt", text_file.read_bytes()).result()
Voir la documentation de référence de la classe Sandbox pour obtenir la liste complète des paramètres et des options de Sandbox.write_file().
Lire un fichier depuis le sandbox
Enregistrez un fichier du sandbox sur votre environnement local à l’aide de la méthode Sandbox.read_file().
from pathlib import Path
from wandb.sandbox import Sandbox
with Sandbox.run() as sandbox:
# La démo crée un fichier dans le sandbox pour le lire ensuite
sandbox.exec(["sh", "-c", "echo 'Hello, world.' > hello.txt"]).result()
# Enregistrer le fichier sur la machine locale (pas dans le sandbox)
content = sandbox.read_file("hello.txt").result() # b"Hello, world.\n"
Path("hello.txt").write_bytes(content)
Voir la documentation de référence de la classe Sandbox pour consulter la liste complète des paramètres et des options de Sandbox.read_file().
Monter un fichier ou un répertoire
Utilisez des fichiers montés pour fournir des fichiers locaux au sandbox au moment de sa création. Contrairement à Sandbox.write_file(), qui transfère des fichiers vers un sandbox en cours d’exécution, les fichiers montés sont disponibles dès le démarrage du sandbox. Les fichiers montés apparaissent dans le sandbox au chemin que vous indiquez.
Les fichiers montés sont en lecture seule dans le sandbox. Si vous devez modifier des fichiers dans le sandbox, utilisez plutôt Sandbox.write_file().
Dans l’extrait de code suivant, les fichiers locaux train.py et requirements.txt sont montés dans le répertoire racine du sandbox. Le sandbox installe les dépendances à partir de requirements.txt, puis exécute train.py.
from pathlib import Path
from wandb.sandbox import Sandbox, NetworkOptions
mounted_files = [
{"mount_path": "requirements.txt", "file_content": Path("requirements.txt").read_bytes()},
{"mount_path": "train.py", "file_content": Path("train.py").read_bytes()},
]
print("Démarrage du sandbox...")
with Sandbox.run(mounted_files=mounted_files) as sandbox:
# Les fichiers montés sont disponibles dans le sandbox aux chemins de montage spécifiés
print("Installation des dépendances...")
result = sandbox.exec(["pip", "install", "-r", "requirements.txt"], check=True).result()
print(result.stdout)
print("Exécution du script...")
result = sandbox.exec(["python", "train.py"]).result()
print(result.stdout)