W&B サーバーの外に保存されているファイルを追跡・利用するには、リファレンス Artifacts を使用します。一般的な外部ストレージソリューションには、CoreWeave AI Object Storage、Amazon Simple Storage Service (Amazon S3) バケット、GCS バケット、Azure blob、HTTP ファイルサーバー、NFS シェアなどがあります。 リファレンス Artifacts は、通常(非リファレンス)の Artifacts と同様に動作します。主な違いは、リファレンス Artifacts にはファイルサイズや MD5 チェックサムなどのファイルに関する メタデータ のみが含まれる点です。ファイル自体がお客様のシステムから外に出ることはありません。 リファレンス Artifacts は、通常の Artifacts と同じように操作できます。W&B App では、ファイルブラウザを使用してリファレンス Artifact の内容を閲覧したり、完全な依存関係グラフを探索したり、Artifact のバージョン履歴をスキャンしたりできます。ただし、データ自体が Artifact 内に含まれていないため、UI 上で画像や音声などのリッチメディアをレンダリングすることはできません。Documentation Index
Fetch the complete documentation index at: https://wb-21fd5541-update-training-api-26.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
外部ファイルを追跡しない Artifact を ログ に記録する場合、W&B は Artifact のファイルを W&B サーバーに保存します。これは、W&B Python SDK で Artifacts を ログ に記録する際のデフォルトの 振る舞い です。外部ファイルを追跡する Artifact を ログ に記録する場合、W&B はオブジェクトの ETag やサイズなどの メタデータ を ログ に記録します。バケットでオブジェクトの バージョン管理 が有効になっている場合は、バージョン ID も ログ に記録されます。
外部バケット内の Artifact を追跡する
W&B Python SDK を使用して、W&B の外部に保存されているファイルへの参照を追跡します。wandb.init()で run を初期化します。wandb.Artifact()で Artifact オブジェクトを作成します。- Artifact オブジェクトの
wandb.Artifact.add_reference()メソッドを使用して、バケットパスへの参照を指定します。 run.log_artifact()で Artifact の メタデータ を ログ に記録します。
datasets/mnist/ ディレクトリー には画像のコレクションが含まれています。この datasets/mnist/ ディレクトリー を Datasets Artifact として追跡するには、以下のように指定します。
- Artifact に
"mnist"などの名前を付けます。 - Artifact オブジェクトを構築する際、
typeパラメータ を"dataset"に設定します (wandb.Artifact(type="dataset"))。 wandb.Artifact.add_reference()を呼び出す際に、datasets/mnist/ディレクトリー へのパスを Amazon S3 URI (s3://my-bucket/datasets/mnist/) として提供します。run.log_artifact()で Artifact を ログ に記録します。
mnist:latest を作成します。
W&B Artifacts は、CoreWeave Storage や MinIO を含む、あらゆる Amazon S3 互換インターフェースをサポートしています。以下のスクリプトは、環境変数
AWS_S3_ENDPOINT_URL を CoreWeave Storage または MinIO サーバーを指すように設定することで、両方のプロバイダーでそのまま動作します。外部バケットから Artifact をダウンロードする
リファレンス Artifact をダウンロードする際、W&B は Artifact が ログ に記録されたときに記録された メタデータ を使用して、基盤となるバケットからファイルを取得します。バケットでオブジェクトの バージョン管理 が有効になっている場合、W&B は Artifact が ログ に記録された時点のファイルの状態に対応するオブジェクト バージョン を取得します。バケットの内容が変化しても、Artifact が トレーニング run 中のバケットの スナップショット として機能するため、特定の モデル が トレーニング された際の正確な バージョン の データ を常に参照できます。 以下の コードスニペット は、リファレンス Artifact をダウンロードする方法を示しています。Artifact をダウンロードするための API は、リファレンス Artifact と非リファレンス Artifact の両方で共通です。ワークフローの一部としてファイルを上書きする場合は、ストレージバケットで「オブジェクトの バージョン管理 (Object Versioning)」を有効にすることをお勧めします。バージョン管理 が有効であれば、Artifact が ログ に記録された後にファイルが上書きされたとしても、Artifact をダウンロードする際に W&B は常に正しい バージョン のファイルを取得できます。ユースケース に応じて、オブジェクトの バージョン管理 を有効にするための手順を確認してください: AWS, Google Cloud, Azure
外部バケットからの追加とダウンロード
以下の コードスニペット は、データセット を Amazon S3 バケットにアップロードし、それをリファレンス Artifact で追跡してからダウンロードする例です。Google Cloud または Azure でリファレンスによって Artifacts を追跡する方法のエンドツーエンドのチュートリアルについては、以下の レポート を参照してください。
クラウドストレージの認証情報
W&B は、使用しているクラウドプロバイダーに基づいたデフォルトの認証情報検索メカニズムを使用します。使用される認証情報の詳細については、各クラウドプロバイダーの ドキュメント を参照してください。| クラウドプロバイダー | 認証情報ドキュメント |
|---|---|
| CoreWeave AI Object Storage | CoreWeave AI Object Storage documentation |
| AWS | Boto3 documentation |
| Google Cloud | Google Cloud documentation |
| Azure | Azure documentation |
AWS_REGION 環境変数を設定する必要があります。
ファイルシステム内の Artifact を追跡する
データセット への アクセス における一般的なパターンは、トレーニング ジョブを実行するすべてのマシンに対して、リモートファイルシステムへの NFS マウントポイントを公開することです。トレーニングスクリプト の観点からはファイルがローカルの ファイルシステム にあるように見えるため、これはクラウドストレージバケットの代替ソリューションとなります。 ファイルシステム 内の Artifact を追跡するには:wandb.init()で run を初期化します。wandb.Artifact()で Artifact オブジェクトを作成します。- Artifact オブジェクトの
wandb.Artifact.add_reference()メソッドを使用して、ファイルシステムパスへの参照を指定します。 run.log_artifact()で Artifact の メタデータ を ログ に記録します。
< >) で囲まれた 値 は、ご自身のものに置き換えてください。
file:// プレフィックスです。2 番目のコンポーネントは ファイルシステム のルート / です。残りのコンポーネントは、追跡したい ディレクトリー またはファイルへのパスです。
例として、/mount にマウントされた ファイルシステム が以下の構造を持っているとします。
datasets/mnist/ ディレクトリー を Datasets Artifact として追跡したい場合、以下の コードスニペット を使用できます。
/mount/datasets/mnist/ の下に保存されているファイルを指すリファレンス Artifact mnist:latest が作成されます。
同様に、models/cnn/my_model.h5 に保存されている モデル を追跡するには、以下の コードスニペット を使用できます。
外部ファイルシステムから Artifact をダウンロードする
リファレンスされた ファイルシステム からファイルをダウンロードするには、非リファレンス Artifact と同じ API を使用します。wandb.init()で run を初期化します。wandb.Run.use_artifact()メソッドを使用して、ダウンロードしたい Artifact を指定します。- Artifact の
wandb.Artifact.download()メソッドを呼び出して、参照先の ファイルシステム からファイルをダウンロードします。
/mount/datasets/mnist の内容を artifacts/mnist:v0/ ディレクトリー にコピーします。
Artifact.download() は、Artifact を再構成できない場合にエラーをスローします。例えば、上書きされたファイルへの参照が Artifact に含まれている場合、Artifact を再構成できなくなるため、Artifact.download() はエラーをスローします。