外部ファイルを追跡しない 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() はエラーをスローします。