Run の外部でアーティファクトをログする
W&B は、run の外部でアーティファクトをログするときに run を作成します。各アーティファクトは run に属し、run はプロジェクトに属します。アーティファクト (バージョン) もコレクションに属し、タイプを持ちます。wandb artifact put
コマンドを使用して、W&B の run の外部でアーティファクトを W&B サーバーにアップロードします。アーティファクトを属させたいプロジェクトの名前とアーティファクトの名前 (project/artifact_name
) を指定します。必要に応じて、タイプ (TYPE
) を指定します。以下のコードスニペットでは、アップロードしたいアーティファクトのファイルパスに PATH
を置き換えてください。
W&B の外部でアーティファクトをトラッキングする
W&B Artifacts をデータセットのバージョン管理やモデルのリネージに使用し、リファレンスアーティファクトを使用して W&B サーバーの外部に保存されたファイルをトラッキングします。このモードでは、アーティファクトはファイルに関するメタデータ (例えば、URL、サイズ、チェックサム) のみを保存します。基礎データはシステムから離れることはありません。ファイルとディレクトリーを W&B サーバーに保存する方法については、クイックスタートを参照してください。 以下は、リファレンスアーティファクトを作成し、それをワークフローに最適に組み込む方法を説明します。Amazon S3 / GCS / Azure Blob Storage リファレンス
W&B Artifacts をデータセットとモデルのバージョン管理に使用して、クラウドストレージバケットでのリファレンスをトラッキングします。アーティファクトリファレンスを使用すると、既存のストレージレイアウトに変更を加えることなく、バケットの上にシームレスにトラッキングをレイヤリングできます。 Artifacts は基礎となるクラウドストレージベンダー (AWS、GCP、Azure など) を抽象化します。次のセクションで説明される情報は、Amazon S3、Google Cloud Storage、Azure Blob Storage に共通して適用されます。W&B Artifacts は、MinIO を含む任意の Amazon S3 互換インターフェースをサポートしています。
AWS_S3_ENDPOINT_URL
環境変数を MinIO サーバーを指すように設定すれば、以下のスクリプトはそのまま動作します。mnist/
の下には、私たちのデータセットである画像のコレクションがあります。アーティファクトでそれをトラッキングしましょう:
デフォルトでは、W&B はオブジェクトプリフィックスを追加する際に 10,000 オブジェクトの制限を課しています。この制限は、
add_reference
の呼び出しで max_objects=
を指定することによって調整できます。mnist:latest
は、通常のアーティファクトと非常に似た外観と挙動を持っています。唯一の違いは、アーティファクトが S3/GCS/Azure オブジェクトに関するメタデータ (例えば、ETag、サイズ、バージョン ID) のみを含んでいることです (バケットにオブジェクトのバージョン管理が有効になっている場合)。
W&B は、使用するクラウドプロバイダーに基づいてクレデンシャルを探すデフォルトのメカニズムを使用します。クラウドプロバイダーからのドキュメントを読み、使用されるクレデンシャルについて詳しく学びましょう。
クラウドプロバイダー | クレデンシャルドキュメント |
---|---|
AWS | Boto3 ドキュメント |
GCP | Google Cloud ドキュメント |
Azure | Azure ドキュメント |
AWS_REGION
環境変数をバケットリージョンに一致させる必要があります。
このアーティファクトを通常のアーティファクトのように扱うことができます。アプリ UI では、ファイルブラウザを使用してリファレンスアーティファクトの内容を閲覧したり、完全な依存関係グラフを探索したり、アーティファクトのバージョン履歴をスキャンしたりできます。
画像、オーディオ、ビデオ、ポイントクラウドといったリッチメディアは、バケットの CORS 設定によってアプリ UI で適切にレンダリングされない可能性があります。バケットの CORS 設定で app.wandb.ai を許可リストに追加することで、アプリ UI でこれらのリッチメディアが正しくレンダリングされるようになります。パネルは、プライベートバケットの場合アプリ UI でレンダリングされないかもしれません。もし会社が VPN を使用している場合は、VPN 内の IP をホワイトリストに追加するようにバケットのアクセスポリシーを更新できます。
リファレンスアーティファクトをダウンロードする
すべてを結び付ける
次のコード例は、トレーニングジョブに供給される Amazon S3、GCS、または Azure 上のデータセットをトラッキングするために使用できる単純なワークフローを示しています:GCP または Azure のリファレンスでのアーティファクトのトラッキング方法についてのエンドツーエンドのガイドを読むには、次のレポートをご覧ください:
ファイルシステムリファレンス
データセットへの高速アクセスのためのもう一つの一般的なパターンは、NFS マウントポイントをトレーニングジョブを実行するすべてのマシンでリモートファイルシステムに公開することです。これは、クラウドストレージバケットよりもさらに簡単なソリューションになる可能性があります。トレーニングスクリプトの視点からは、ファイルはちょうどローカルファイルシステムに置かれているかのように見えるからです。幸運にも、その使いやすさは、ファイルシステムへのリファレンスをトラッキングするために Artifacts を使用する場合にも当てはまります。ファイルシステムがマウントされているかどうかに関係なくです。 次の構造を持つファイルシステムが/mount
にマウントされていると仮定します:
mnist/
の下には、私たちのデータセットである画像のコレクションがあります。アーティファクトでそれをトラッキングしましょう:
add_reference
の呼び出しで max_objects=
を指定することによって調整できます。
URL のトリプルスラッシュに注目してください。最初のコンポーネントは、ファイルシステムリファレンスの使用を示す file://
プレフィックスです。二番目は、データセットのパス /mount/datasets/mnist/
です。
結果として得られるアーティファクト mnist:latest
は通常のアーティファクトのように見え、機能します。唯一の違いは、アーティファクトがファイルに関するメタデータ (サイズや MD5 チェックサムなど) のみを含んでいることです。ファイル自体はシステムから離れることはありません。
このアーティファクトを通常のアーティファクトのように操作できます。UI では、ファイルブラウザを使用してリファレンスアーティファクトの内容を閲覧したり、完全な依存関係グラフを探索したり、アーティファクトのバージョン履歴をスキャンしたりできます。ただし、アーティファクト自体にデータが含まれていないため、UI では画像、オーディオなどのリッチメディアをレンダリングできません。
リファレンスアーティファクトをダウンロードするのは簡単です:
download()
操作は参照されたパスからファイルをコピーして、アーティファクトディレクトリを構築します。上記の例では、/mount/datasets/mnist
の内容がディレクトリ artifacts/mnist:v0/
にコピーされます。アーティファクトが上書きされたファイルへのリファレンスを含む場合、download()
はエラーを投げます。アーティファクトがもはや再構築できないからです。
すべてをまとめると、ここにマウントされたファイルシステムの下のデータセットをトラッキングして、トレーニングジョブに供給するために使用できる簡単なワークフローがあります: