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