メインコンテンツへスキップ
Serverless Sandboxes はパブリックプレビューです。
分離環境でコードを実行するための W&B Serverless Sandboxes を作成します。単一のサンドボックスを起動してその中でコマンドを実行し、セッション を使って複数のサンドボックスを管理できます。各サンドボックスは、独自のファイルシステム、ネットワーク、プロセス空間を持つ専用のコンテナー内で実行されます。
デフォルトでは、サンドボックスは python:3.11 をベースイメージとして使用します。別のイメージを使用するには、Sandbox.run() または SandboxDefaultscontainer_image を渡してください。W&B はパブリックなコンテナーイメージのみをサポートします。次のコードスニペットは、python:3.15 イメージでサンドボックスを作成し、その中で python --version を実行します。

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

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

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

先にサンドボックスを作成し、後からその中で処理を実行する場合は、コマンドを指定せずに Sandbox.run() を呼び出します。
このパターンは、対話型かつ複数ステップのワークフローに便利です。サンドボックス内でコマンドを run する方法については、コマンドを run するを参照してください。

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

Sandbox.run() にコマンドを渡すこともできます。サンドボックス が 1 つのジョブを開始から終了まで実行する場合は、このパターンを使用してください。メインプロセスが終了すると、サンドボックス は COMPLETED or FAILED などの終了状態に入ります。 Sandbox.run() に渡したコマンドは、サンドボックス のメインプロセスとして起動されます。
Sandbox.run() は、コマンドを監視し、完了を待機するために使用できる Sandbox オブジェクトを返します。たとえば、コマンドの完了を待って結果を取得するには、次のようにします。

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

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