ボリュームタイプを選択する
1 つの run 内の作業スペースにはスクラッチボリュームを使用します。サンドボックスを越えて存続するデータや、複数のサンドボックスが同時に読み取るデータ (共有データセットやモデルの重みなど) には登録済み Volume を使用します。
スクラッチボリューム
スクラッチボリュームの例ではauth を省略し、CWSANDBOX_API_KEY に設定された CoreWeave API アクセストークンを使用しています。Forge APIキーを使用する場合は、はじめにの手順に従い、生成された AuthHeaders を Sandbox.run() に渡してください。
スクラッチボリュームはサンドボックスとともに作成され、サンドボックスとともに破棄されます。volumes リスト内で ScratchVolumeOptions を使用して宣言します。
ScratchVolumeOptions は以下のフィールドを受け入れます:
ストレージ媒体を選択する
StorageMedium.DISK はボリュームをローカルディスクでバックアップします。StorageMedium.MEMORY は tmpfs でバックアップします。これは高速ですが、マウントするコンテナーのメモリリクエストとポリシーのメモリ上限にカウントされます。
無制限の RAM バックアップボリュームはノードを枯渇させる可能性があるため、MEMORY ボリュームは size を宣言する必要があります。絶対量として、またはサンドボックスの解決済みメモリリクエストの整数パーセンテージ (例: "50%") として指定できます。パーセンテージ形式は MEMORY の場合のみ有効です。DISK ボリュームは絶対サイズを使用する必要があります。
複数のコンテナーにスクラッチボリュームをマウントする
mount_path は、ボリュームをプライマリコンテナーにマウントするための便利な機能です。マルチコンテナーのサンドボックスでは、mount_path を省略し、代わりに各コンテナーでマウントを宣言してください。これにより、複数のコンテナーが同じボリュームにアクセスできるようになります。
登録済み Volume
以下の例では、CKS クラスター内の PVC と、CWSANDBOX_API_KEY に設定した CoreWeave API アクセストークンを使用します。PVC-backed Volume を登録またはマウントする前に、独自のコンピュートを使用するの手順を完了してください。
登録済み Volume は、いずれかのクラスターに既に存在する PersistentVolumeClaim (PVC) を参照します。登録すると、サンドボックスにクラスター自体へのアクセス権を付与せずに、そのクレームをマウントできるようになります。Volume はメタデータ上の参照です。CoreWeave がデータをコピーすることはなく、Volume を削除してもクレームには影響しません。
どのマウントも同じクレームを直接参照するため、あるサンドボックスから書き込んだ内容は、それをマウントしている他のすべてのサンドボックスから確認できます。
Volume を登録
Volume.create() は、Volume を VALIDATING 状態で即座に返します。その後、コントロールプレーンがクレームが存在し、使用可能であることを確認します。マウントする前に wait_until_ready() でポーリングしてください。
ソースと
read_only フラグも作成後は不変です。description のみ後で変更できます。PvcVolumeSource は以下のフィールドを取ります。
Volume.create() で read_only=True を設定すると、Volume 自体のプロパティとして読み取り専用になります。この設定は下限であり、デフォルトではありません。書き込み可能な Volume ではマウントを読み取り専用にできますが、読み取り専用の Volume に書き込むマウントはできません。
登録済み Volume をマウントする
ID でRegisteredVolumeOptions を使用して Volume をマウントします。開始時に Volume が READY でない場合、サンドボックスは CWSANDBOX_VOLUME_NOT_READY で失敗します。
RegisteredVolumeOptions には name、volume_id、および / 以外の絶対 mount_path が必要です。また、sub_path を受け入れ、登録時に設定された sub_path と組み合わせることができ、read_only も指定できます。
サンドボックスは、マウントした Volumes を attached_volume_ids に反映します。
ローカリティと配置
Volume のlocality は配置を制約するかどうかを report します:
cluster_local: Volume は 1 つのクラスターに存在するため、それをマウントするサンドボックスはそのクラスターのランナーにスケジュールされます。PVC-backed の Volume は cluster-local です。global: Volume は任意のクラスターから到達可能で、配置を制約しません。
CWSANDBOX_VOLUME_PLACEMENT_CONFLICT で失敗します。
登録済み Volume の管理
組織内の Volume を一覧表示、検査、更新、登録解除するには、以下のオペレーションを使用します。Volume.list() は自動的にページネーションを行い、states と runner_ids のフィルターを受け入れます。delete() は allow_missing=True を受け入れ、これによりすでに削除された Volume の削除が成功し、例外を送出する代わりに成功します。
非ターミナル状態のサンドボックスがまだマウントしている Volume を削除しようとすると CWSANDBOX_VOLUME_IN_USE で失敗し、Python クライアントはこれを VolumeInUseError として送出します。まず関連付けたサンドボックスを停止してください。
Volume の状態
登録済み Volume は、そのライフサイクルを通じて次の状態に遷移します。wait_until_ready() は READY になるまで繰り返し確認します。Volume が ERROR または DELETING に達した場合は VolumeError、先にタイムアウトした場合は VolumeWaitTimeoutError が送出されます。
失敗の理由
この表を使用して、サンドボックスとVolumeの操作が返す可能性のある失敗の理由を解釈してください。関連リソース
サンドボックスの関連機能の詳細については、以下のリソースを参照してください:- ファイルシステムスナップショット: サンドボックスのファイルシステムを永続化および復元します。
- Grant sandboxes access to AI Object Storage: サンドボックス内からバケットの読み書きを行います。
- Sandbox configuration: その他のサンドボックス作成オプション
- Distributed File Storage: 登録済み Volume が指す PersistentVolumeClaims を作成します。