メインコンテンツへスキップ
W&B Sandboxes はプライベートプレビュー段階にあり、招待制でのみ利用できます。利用登録を希望する場合は、サポート または担当の AISE にお問い合わせください。
W&B でサンドボックスを作成できます。各サンドボックスは、独自のファイルシステム、ネットワーク、プロセス空間を持つ専用のコンテナー内で実行されます。
デフォルトでは、サンドボックスは python:3.11 をベースイメージとして使用します。別のイメージを使用するには、Sandbox.run() または SandboxDefaultscontainer_image を渡してください。W&B はパブリックなコンテナーイメージのみをサポートします。次のコードスニペットは、python:3.15 イメージでサンドボックスを作成し、その中で python --version を実行します。
from wandb.sandbox import Sandbox

with Sandbox.run(container_image="python:3.15") as sandbox:
    sandbox.exec(["python", "--version"]).result()

サンドボックスを作成する

Sandbox.run() を使用して、サンドボックスを作成し、起動します。このメソッドは、環境とやり取りするために使用できる Sandbox オブジェクトを返します。
W&B では、ブロックを抜けるときにサンドボックスが自動的に停止されるよう、コンテキストマネージャー (with ステートメント) を使用することを推奨しています。エラーが発生した場合でも同様です。
次の例では、デフォルトのコンテナーイメージ (python:3.11) を使用してサンドボックスを作成します。
from wandb.sandbox import Sandbox

with Sandbox.run() as sandbox:
    print(sandbox)
サンドボックス内でコマンドを実行する方法については、コマンドを run するを参照してください。サンドボックスのライフサイクルと状態については、サンドボックスのライフサイクルを参照してください。

メイン コマンドを指定せずにサンドボックスを開始する

先にサンドボックスを作成し、後からその中で処理を実行する場合は、コマンドを指定せずに Sandbox.run() を呼び出します。
from wandb.sandbox import Sandbox

with Sandbox.run() as sandbox:
    print(sandbox)
このパターンは、対話型かつ複数ステップのワークフローに便利です。サンドボックス内でコマンドを run する方法については、コマンドを run するを参照してください。

メインコマンドを指定して サンドボックス を開始する

Sandbox.run() にコマンドを渡すこともできます。サンドボックス で 1 つのジョブを開始から終了まで実行させる場合は、このパターンを使用してください。メインプロセスが終了すると、サンドボックス は COMPLETED or FAILED などの終了状態に入ります。 Sandbox.run() に渡したコマンドは、サンドボックス のメインプロセスとして起動されます。
from wandb.sandbox import Sandbox

sandbox = Sandbox.run("python", "train.py")
Sandbox.run() は、コマンドを監視し、完了を待機するために使用できる Sandbox オブジェクトを返します。たとえば、コマンドの完了を待って結果を取得するには、次のようにします。
from wandb.sandbox import Sandbox

sandbox = Sandbox.run("python", "train.py")

# 必要に応じてコマンドの完了を待機する
sandbox.wait_until_complete().result()

セッションで複数のサンドボックスを作成する

Session を使用すると、複数のサンドボックスを作成して管理できます。セッションが閉じられると (たとえば with ブロックを終了したとき) 、そのセッションで作成されたすべてのサンドボックスは自動的に停止します。 必要に応じて、SandboxDefaults オブジェクトをセッションに渡して、そのセッションで作成されるすべてのサンドボックスに適用する再利用可能なデフォルト設定を定義できます。たとえば、セッション内のすべてのサンドボックスに対して、デフォルトのコンテナーイメージ、ネットワーク設定、または最大有効期間を指定できます。 session.sandbox() は、まだ開始されていないサンドボックスを返します。Sandbox.exec()Sandbox.read_file()、またはその他の操作を呼び出すと、自動的に開始されます。 次のコードスニペットは、デフォルト設定 (SandboxDefaults) を使用する 2 つのサンドボックスを作成するセッションを作成します。
from wandb.sandbox import Session, SandboxDefaults

defaults = SandboxDefaults(
    container_image="python:3.11",
    max_lifetime_seconds=300,
    tags=("batch-job",),
)

with Session(defaults) as session:
    sandbox1 = session.sandbox()
    sandbox2 = session.sandbox()

    print(sandbox1)
    print(sandbox2)