アーティファクトの構築方法
3 つのステップで W&B Artifact を構築します。1. wandb.Artifact()
でアーティファクト Python オブジェクトを作成する
wandb.Artifact()
クラスを初期化して、アーティファクトオブジェクトを作成します。以下のパラメータを指定します。
- Name: アーティファクトの名前を指定します。名前は一意で説明的、かつ記憶しやすいものにしてください。Artifacts の名前は、W&B アプリ UI でアーティファクトを識別するとき、またそのアーティファクトを使用したいときに使用します。
- Type: タイプを指定します。タイプはシンプルで説明的で、機械学習パイプラインの単一ステップに対応するものでなければなりません。一般的なアーティファクトタイプには
'dataset'
や'model'
があります。
指定した「name」と「type」は、有向非循環グラフを作成するために使用されます。これは、W&B アプリでアーティファクトのリネージを見ることができることを意味します。詳細については、アーティファクトグラフの探索とトラバースをご覧ください。
Artifacts は、たとえ異なる types パラメータを指定しても、同じ名前を持つことはできません。つまり、
cats
という名前のタイプ dataset
のアーティファクトを作成し、同じ名前のタイプ model
のアーティファクトを作成することはできません。wandb.Artifact
クラス定義をご覧ください。
次の例は、データセットアーティファクトを作成する方法を示しています。
2. アーティファクトに 1 つ以上のファイルを追加する
ファイル、ディレクトリ、外部 URI リファレンス(例: Amazon S3)などをアーティファクトメソッドで追加します。たとえば、単一のテキストファイルを追加するには、add_file
メソッドを使用します。
add_dir
メソッドで追加することもできます。ファイルを追加する方法の詳細については、アーティファクトの更新をご覧ください。
3. アーティファクトを W&B サーバーに保存する
最後に、アーティファクトを W&B サーバーに保存します。Artifacts は run に関連付けられます。したがって、run オブジェクトのlog_artifact()
メソッドを使用してアーティファクトを保存します。
log_artifact
の呼び出しは、パフォーマンスを向上させるために非同期で行われます。これにより、ループ内でアーティファクトをログする際に予期しない挙動が生じることがあります。たとえば、アーティファクトにファイルを追加
以下のセクションでは、異なるファイルタイプおよび並行実行からのアーティファクトを構築する方法を説明します。 以下の例では、複数のファイルとディレクトリ構造を持つプロジェクトディレクトリを前提とします。単一ファイルを追加
以下のコードスニペットは、ローカルの単一ファイルをアーティファクトに追加する方法を示しています。'file.txt'
というファイルがあるとします。
name
パラメータの希望するパスを渡して下さい。
API Call | Resulting artifact |
---|---|
artifact.add_file('model.h5') | model.h5 |
artifact.add_file('checkpoints/model.h5') | model.h5 |
artifact.add_file('model.h5', name='models/mymodel.h5') | models/mymodel.h5 |
複数ファイルを追加
以下のコードスニペットは、ローカルのディレクトリ全体をアーティファクトに追加する方法を示しています。API Call | Resulting artifact |
---|---|
artifact.add_dir('images') |
|
artifact.add_dir('images', name='images') |
|
artifact.new_file('hello.txt') | hello.txt |
URI リファレンスを追加
アーティファクトは、URI が W&B ライブラリが扱えるスキームを持つ場合、再現性のためにチェックサムやその他の情報をトラッキングします。add_reference
メソッドを使用して、アーティファクトに外部 URI リファレンスを追加します。 'uri'
文字列を自分の URI で置き換えてください。オプションで、アーティファクト内の name
パラメータの希望するパスを渡して下さい。
http(s)://
: HTTP 上でアクセス可能なファイルへのパス。HTTP サーバーがETag
やContent-Length
レスポンスヘッダーをサポートしている場合、アーティファクトはエタグとサイズメタデータの形でチェックサムをトラッキングします。s3://
: S3 内のオブジェクトまたはオブジェクトプレフィックスへのパス。アーティファクトは、参照されたオブジェクトのためのチェックサムとバージョン管理情報(バケットにオブジェクトバージョン管理が有効になっている場合)をトラッキングします。オブジェクトプレフィックスは、プレフィックスの下にあるオブジェクトを最大 10,000 個まで含むように展開されます。gs://
: GCS 内のオブジェクトまたはオブジェクトプレフィックスへのパス。アーティファクトは、参照されたオブジェクトのためのチェックサムとバージョン管理情報(バケットにオブジェクトバージョン管理が有効になっている場合)をトラッキングします。オブジェクトプレフィックスは、プレフィックスの下にあるオブジェクトを最大 10,000 個まで含むように展開されます。
API call | Resulting artifact contents |
---|---|
artifact.add_reference('s3://my-bucket/model.h5') | model.h5 |
artifact.add_reference('s3://my-bucket/checkpoints/model.h5') | model.h5 |
artifact.add_reference('s3://my-bucket/model.h5', name='models/mymodel.h5') | models/mymodel.h5 |
artifact.add_reference('s3://my-bucket/images') |
|
artifact.add_reference('s3://my-bucket/images', name='images') |
|