サンドボックスでコマンドを実行し、出力と終了コードを読み取り、エラーを確認できます。これらの機能を使用して、サンドボックス内でスクリプト、トレーニングジョブ、その他のプロセスを実行し、その結果をプログラムで確認できます。
サンドボックスでコマンドを実行する
- 単一のコマンド: コマンドを
Sandbox.run()に渡し、完了するまで待機するためにSandbox.wait_until_complete()を呼び出します。バッチ ジョブ、テスト、またはトレーニングに適しています。 - 複数のコマンド: 引数なしで
Sandbox.run()を呼び出し、その後で各ステップごとにSandbox.exec()を使用します。セットアップ、実行、結果の取得を組み合わせるワークフローに適しています。
1 つのコマンドを実行する
Sandbox.run() に渡し、続けて Sandbox.wait_until_complete() を呼び出して、サンドボックスが終了状態になるまで待機します。
次の例では、python train.py を実行するサンドボックスを起動し、サンドボックスが完了するまで最大 3600 秒待機します。
複数のコマンドを順番に実行する
Sandbox.exec() を使用して各コマンドを実行し、その完了を待機します。
次の例では、メインコマンドを指定せずにサンドボックスを起動し、その後、同じサンドボックス内で 2 つのコマンドを順番に実行します。
Sandbox.exec() メソッドは、サンドボックス内でコマンドを実行し、Process オブジェクトを返します。返されたオブジェクトを使用して、コマンドの完了を待機し、出力を読み取り、終了コードを確認できます。
Sandbox.exec() とそのパラメーターの詳細については、CoreWeave Sandboxes のリファレンスドキュメントにある Sandbox.exec() を参照してください。
追加のコマンドを実行できるようにサンドボックスを実行し続ける
Sandbox.exec() でほかのコマンドを実行している間もサンドボックスを使用できるように、長時間実行されるメインプロセスでサンドボックスを起動したいことがあります。
次の例では、sleep infinity をメインプロセスとしてサンドボックスを起動し、その後、Sandbox.exec() を使用してサンドボックス内でトレーニングスクリプトを実行します。
出力と終了コードを確認する
Sandbox.exec() は Process オブジェクトを返します。Process.result() を呼び出すと、コマンドの完了を待機して結果を取得できます。Process.result() には、標準出力 (stdout)、標準エラー (stderr)、終了コード (returncode) が含まれます。
終了コードを使用して、コマンドが成功したかどうかを判断できます。慣例として、終了コードが 0 の場合は成功を示します。考えられる終了コードとその意味は、コマンドによって異なります。
たとえば、次のコードスニペットは、標準出力 (stdout) と終了コード (returncode) を出力する Python コマンドを実行します。コマンドの完了後、標準出力、標準エラー、終了コードがコンソールに出力されます。
サンドボックス実行エラーを確認する
check=True (Sandbox.exec(check=True)) を指定します。コマンドが 0 以外の終了コードで終了すると、SandboxExecutionError が発生します。この例では、スクリプト might_fail.py を実行して結果を確認します。