外部ファイルをトラッキングしない artifact をログすると、W&Bはartifact のファイルをW&Bサーバーに保存します。これは、W&B Python SDKでartifact をログする場合のデフォルトの動作です。外部ファイルをトラッキングする artifact をログすると、W&Bはobject のETagやサイズなど、そのobject に関するメタデータをログします。バケット でオブジェクトのバージョン管理が有効になっている場合は、バージョンIDもログされます。
external cloud storage bucket内のartifactをトラッキングする
W&B Python SDKを使用して、W&Bの外部に保存されたファイルへの参照をトラッキングします。wandb.init()でrunを初期化します。wandb.Artifact()でartifactオブジェクトを作成します。- artifactオブジェクトの
wandb.Artifact.add_reference()methodを使用して、バケット pathへの参照を指定します。 run.log_artifact()でartifactのメタデータをログします。
datasets/mnist/ ディレクトリには、画像のコレクションが含まれています。datasets/mnist/ ディレクトリ内の画像をデータセット artifact としてトラッキングするには、次を指定します。
"mnist"など、artifact の名を指定します。- artifact オブジェクト (
wandb.Artifact(type="dataset")) を作成するときに、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、Backblaze B2 Cloud Storage、MinIO を含む、Amazon S3互換のあらゆるインターフェースをサポートしています。以下で説明するスクリプトは、
AWS_S3_ENDPOINT_URL 環境変数で S3互換サーバー (Backblaze B2 の場合は https://s3.us-west-001.backblazeb2.com など) を指定すれば、これらのプロバイダでそのまま動作します。external cloud storage bucket から artifact をダウンロードする
W&B は、artifact のログ時に記録されたメタデータを使用して reference artifact をダウンロードする際、基盤となるバケットからファイルを取得します。バケットでオブジェクトのバージョン管理が有効になっている場合、W&B は artifact がログされた時点でのファイルの状態に対応するオブジェクトのバージョンを取得します。バケットの内容が変化しても、artifact はトレーニング run 中のバケットのスナップショットとして機能するため、特定のモデルがどのデータの正確なバージョンでトレーニングされたかをいつでも参照できます。 次のコードサンプルは、reference artifact をダウンロードする方法を示しています。artifact をダウンロードする API は、reference artifact と非 reference artifact のどちらでも同じです。W&B では、ワークフローの一環としてファイルを上書きする場合は、ストレージバケットで’オブジェクトのバージョン管理’を有効にすることを推奨しています。バージョン管理が有効になっていれば、artifact のログ後にファイルが上書きされていても、artifact のダウンロード時に W&B は常にそのファイルの正しいバージョンを取得できます。ユースケースに応じて、オブジェクトのバージョン管理を有効にする手順を参照してください: AWS, Google Cloud, Azure.
バケットから外部データを追加してダウンロードする
次のコードサンプルでは、データセットを Amazon S3 バケットにアップロードし、reference artifact としてトラッキングした後、それをダウンロードします。Google Cloud または Azure で、参照によって artifact をトラッキングする方法をエンドツーエンドで解説した以下のReportsをご覧ください。
クラウドストレージの認証情報
W&B は、使用しているクラウドプロバイダに応じたデフォルトの方法で認証情報を探します。使用される認証情報について詳しくは、各クラウドプロバイダのドキュメントを参照してください。
AWS では、バケットが設定済みユーザーのデフォルトリージョンにない場合、バケットのリージョンに合わせて
AWS_REGION 環境変数を設定する必要があります。
ファイルシステム上のartifactをトラッキングする
データセットにアクセスする一般的な方法の 1 つは、トレーニングジョブを実行するすべてのマシンで、リモートファイルシステムの NFS マウントポイントを利用できるようにすることです。これはクラウドストレージバケットの代替手段になり得ます。トレーニングスクリプトからは、ファイルがローカルのファイルシステム上にあるように見えるためです。 ファイルシステム内のartifactをトラッキングするには、次の手順を実行します。wandb.init()でrunを初期化します。wandb.Artifact()でartifact オブジェクトを作成します。- artifact オブジェクトの
wandb.Artifact.add_reference()methodを使用して、ファイルシステムパスへの参照を指定します。 run.log_artifact()でartifactのメタデータをログします。
< >) で囲まれた値は、ご自身の値に置き換えてください。
file:// プレフィックスです。2 つ目の構成要素は、ファイルシステムのルート / です。残りの構成要素は、トラッキングしたいディレクトリまたはファイルへのパスです。
たとえば、/mount に次のような構造のファイルシステムがマウントされているとします。
datasets/mnist/ ディレクトリをデータセットのartifactとしてトラッキングするには、次のコードスニペットを使用できます。
/mount/datasets/mnist/ 配下に保存されているファイルを参照するreference artifact mnist:latest が作成されます。
同様に、models/cnn/my_model.h5 に保存されているモデルをトラッキングするには、次のコード例を使用できます。
外部ファイルシステムからartifactをダウンロードする
参照先のファイルシステムから、reference artifact ではない artifact と同じ API を使用してファイルをダウンロードします。wandb.init()でrunを初期化します。- ダウンロードするartifactを指定するには、
wandb.Run.use_artifact()methodを使用します。 - artifactの
wandb.Artifact.download()methodをcallして、参照先のファイルシステムからファイルをダウンロードします
/mount/datasets/mnist の内容を artifacts/mnist:v0/ ディレクトリにコピーします。
Artifact.download() は、artifact を再構築できない場合にエラーをスローします。たとえば、artifact に上書きされたファイルへの参照が含まれていると、その artifact は再構築できなくなるため、Artifact.download() はエラーをスローします。