レジストリからアーティファクトをダウンロードする

W&B Python SDK を使用して、レジストリにリンクされたアーティファクトをダウンロードします。アーティファクトをダウンロードして使用するには、レジストリ名、コレクション名、およびダウンロードしたいアーティファクトバージョンのエイリアスまたはインデックスを知る必要があります。

アーティファクトのプロパティを知ったら、リンクされたアーティファクトへのパスを構築してアーティファクトをダウンロードできます。または、W&B アプリ UI から事前に生成されたコードスニペットをコピーして貼り付けすることで、レジストリにリンクされたアーティファクトをダウンロードすることもできます。

リンクされたアーティファクトへのパスを構築

レジストリにリンクされたアーティファクトをダウンロードするには、そのリンクされたアーティファクトのパスを知っている必要があります。パスは、レジストリ名、コレクション名、およびアクセスしたいアーティファクトバージョンのエイリアスまたはインデックスで構成されます。

レジストリ、コレクション、およびアーティファクトバージョンのエイリアスまたはインデックスを手に入れたら、以下の文字列テンプレートを使用してリンクされたアーティファクトへのパスを構築できます。

# バージョンインデックスを指定したアーティファクト名
f"wandb-registry-{REGISTRY}/{COLLECTION}:v{INDEX}"

# エイリアスを指定したアーティファクト名
f"wandb-registry-{REGISTRY}/{COLLECTION}:{ALIAS}"

中括弧 {} 内の値を、アクセスしたいレジストリ、コレクション、およびアーティファクトバージョンのエイリアスまたはインデックスの名前で置き換えてください。

リンクされたアーティファクトのパスを取得したら、wandb.init.use_artifact メソッドを使用してアーティファクトにアクセスし、その内容をダウンロードします。以下のコードスニペットは、W&B レジストリにリンクされたアーティファクトを使用およびダウンロードする方法を示しています。<> 内の値を自分のものに置き換えてください。

import wandb

REGISTRY = '<registry_name>'
COLLECTION = '<collection_name>'
ALIAS = '<artifact_alias>'

run = wandb.init(
   entity = '<team_name>',
   project = '<project_name>'
   )  

artifact_name = f"wandb-registry-{REGISTRY}/{COLLECTION}:{ALIAS}"
# artifact_name = '<artifact_name>' # Registry App で指定されたフルネームをコピーして貼り付け
fetched_artifact = run.use_artifact(artifact_or_name = artifact_name)  
download_path = fetched_artifact.download()  

.use_artifact() メソッドは、runを作成するとともに、ダウンロードしたアーティファクトをその run の入力としてマークします。 アーティファクトを run の入力としてマークすることにより、W&B はそのアーティファクトのリネージを追跡できます。

runを作成したくない場合は、wandb.Api() オブジェクトを使用してアーティファクトにアクセスできます。

import wandb

REGISTRY = "<registry_name>"
COLLECTION = "<collection_name>"
VERSION = "<version>"

api = wandb.Api()
artifact_name = f"wandb-registry-{REGISTRY}/{COLLECTION}:{VERSION}"
artifact = api.artifact(name = artifact_name)
例: W&B レジストリにリンクされたアーティファクトを使用およびダウンロード

次のコード例は、ユーザーが Fine-tuned Models レジストリにある phi3-finetuned というコレクションにリンクされたアーティファクトをダウンロードする方法を示しています。アーティファクトバージョンのエイリアスは production に設定されています。

import wandb

TEAM_ENTITY = "product-team-applications"
PROJECT_NAME = "user-stories"

REGISTRY = "Fine-tuned Models"
COLLECTION = "phi3-finetuned"
ALIAS = 'production'

# 指定されたチームとプロジェクト内で run を初期化
run = wandb.init(entity=TEAM_ENTITY, project = PROJECT_NAME)

artifact_name = f"wandb-registry-{REGISTRY}/{COLLECTION}:{ALIAS}"

# アーティファクトにアクセスし、それをリネージ追跡のために run の入力としてマーク
fetched_artifact = run.use_artifact(artifact_or_name = name)  

# アーティファクトをダウンロード。ダウンロードされたコンテンツのパスを返します
downloaded_path = fetched_artifact.download()  

APIリファレンスガイドの use_artifactArtifact.download() で可能なパラメータや返り値の種類について詳しく見てください。

事前に生成されたコードスニペットのコピーと貼り付け

W&B は、レジストリにリンクされたアーティファクトをダウンロードするために、Pythonスクリプト、ノートブック、またはターミナルにコピーして貼り付けることができるコードスニペットを作成します。

  1. レジストリアプリに移動します。
  2. アーティファクトを含むレジストリの名前を選択します。
  3. コレクションの名前を選択します。
  4. アーティファクトバージョンのリストからアクセスするバージョンを選択します。
  5. Usage タブを選択します。
  6. Usage API セクションに表示されたコードスニペットをコピーします。
  7. コピーしたコードスニペットを Python スクリプト、ノートブック、またはターミナルに貼り付けます。