Registry
W&B Registry は現在パブリックプレビュー中です。
こちらの セクションで、デプロイメントタイプに対して有効にする方法を学んでください。
W&B Registry は、組織内の artifact バージョンの厳選された中央リポジトリです。組織内で許可 を持っている ユーザー は、所属する Teams に関係なく、すべての artifact のライフサイクルをダウンロード 、共有、および共同で管理できます。
Registry を使用して、artifact の バージョン を追跡 し、artifact の使用状況と変更の履歴を監査し、artifact のガバナンスとコンプライアンスを確保し、モデル CI/CD などのダウンストリーム プロセス を自動化 できます。
要約すると、W&B Registry を使用して以下を行います。
上の図は、“Model” および “Dataset” コア registry とカスタム registry を含む Registry App を示しています。
基本を学ぶ
各組織には、モデル および データセット artifact を整理するために使用できる Models および Datasets という 2 つの registry が最初から含まれています。組織のニーズに基づいて他の artifact タイプ を整理するために、追加の registry を作成 できます。
各registry は、1 つ以上のコレクション で構成されています。各コレクションは、明確なタスクまたは ユースケース を表します。
artifact を registry に追加するには、まず特定の artifact バージョン を W&B に ログ します 。artifact を ログ するたびに、W&B はその artifact に バージョン を自動的に割り当てます。artifact バージョン は 0 からインデックスを開始するため、最初の バージョン は v0
、2 番目の バージョン は v1
のようになります。
artifact を W&B に ログ したら、その特定の artifact バージョン を registry 内のコレクションにリンクできます。
「リンク」という用語は、W&B が artifact を保存する場所と、registry 内で artifact に アクセス できる場所とを接続するポインタを指します。artifact をコレクションにリンクしても、W&B は artifact を複製しません。
例として、次の コード 例は、“my_model.txt” という名前のモデル artifact をコア registry の “first-collection” という名前のコレクションに ログ してリンクする方法を示しています。
W&B run を初期化します。
artifact を W&B に ログ します。
artifact バージョン をリンクするコレクションと registry の名前を指定します。
artifact をコレクションにリンクします。
この Python コード を スクリプト に保存して実行します。W&B Python SDK バージョン 0.18.6 以降が必要です。
import wandb
import random
# Artifact を追跡するために W&B run を初期化します。
run = wandb. init(project= "registry_quickstart" )
# ログ できるようにシミュレートされたモデルファイルを作成します
with open("my_model.txt" , "w" ) as f:
f. write("Model: " + str(random. random()))
# Artifact を W&B に ログ します
logged_artifact = run. log_artifact(
artifact_or_path= "./my_model.txt" ,
name= "gemma-finetuned" ,
type= "model" # artifact タイプを指定します
)
# artifact を公開するコレクションと registry の名前を指定します
COLLECTION_NAME = "first-collection"
REGISTRY_NAME = "model"
# artifact を registry にリンクします
run. link_artifact(
artifact= logged_artifact,
target_path= f "wandb-registry- { REGISTRY_NAME} / { COLLECTION_NAME} "
)
返された run オブジェクトの link_artifact(target_path = "")
メソッドで指定したコレクションが、指定した registry 内に存在しない場合、W&B は自動的にコレクションを作成します。
ターミナル に表示される URL は、W&B が artifact を保存する プロジェクト に移動します。
Registry App に移動して、 ユーザー と組織の他のメンバーが公開する artifact バージョン を表示します。これを行うには、まず W&B に移動します。[アプリケーション] の下の左側のサイドバーで Registry を選択します。“Model” registry を選択します。registry 内に、リンクされた artifact バージョン を持つ “first-collection” コレクションが表示されます。
artifact バージョン を registry 内のコレクションにリンクすると、組織のメンバーは、適切な権限を持っている場合、artifact バージョン の表示、ダウンロード、管理、ダウンストリーム オートメーション の作成などを行うことができます。
artifact バージョン が (たとえば、
run.log_artifact()
を使用して) メトリクス を ログ する場合、詳細ページからその バージョン の メトリクス を表示したり、コレクションのページから artifact バージョン 全体で メトリクス を比較したりできます。
registry でリンクされた artifact を表示 を参照してください。
W&B Registry を有効にする
デプロイメントタイプに基づいて、次の条件を満たして W&B Registry を有効にします。
デプロイメントタイプ
有効にする方法
Multi-tenant Cloud
アクションは不要です。W&B Registry は W&B App で利用できます。
専用クラウド
アカウントチームにお問い合わせください。ソリューションアーキテクト (SA) チームが、インスタンスのオペレーターコンソール内で W&B Registry を有効にします。インスタンスがサーバーリリースバージョン 0.59.2 以降であることを確認してください。
Self-Managed
ENABLE_REGISTRY_UI
という名前の 環境変数 を有効にします。サーバー で 環境変数 を有効にする方法の詳細については、これらのドキュメント を参照してください。セルフマネージドインスタンスでは、インフラストラクチャ 管理者 がこの 環境変数 を有効にして true
に設定する必要があります。インスタンスがサーバーリリースバージョン 0.59.2 以降であることを確認してください。
開始するためのリソース
ユースケース に応じて、W&B Registry を開始するための次のリソースをご覧ください。
チュートリアルビデオをご覧ください。
W&B の Model CI/CD コースを受講して、次の方法を学びましょう。
W&B Registry を使用して、artifact の管理と バージョン 管理、リネージ の追跡、さまざまなライフサイクルステージでのモデル のプロモーションを行います。
Webhook を使用して、モデル 管理 ワークフロー を自動化します。
registry を外部 ML システム および ツール と統合して、モデル の 評価 、監視、および デプロイメント を行います。
レガシー Model Registry から W&B Registry への移行
レガシー Model Registry は、正確な日付はまだ決定されていませんが、廃止が予定されています。レガシー Model Registry を廃止する前に、W&B はレガシー Model Registry のコンテンツを W&B Registry に移行します。
レガシー Model Registry から W&B Registry への移行 プロセス の詳細については、レガシー Model Registry からの移行 を参照してください。
移行が行われるまで、W&B はレガシー Model Registry と新しい Registry の両方をサポートします。
レガシー Model Registry を表示するには、W&B App の Model Registry に移動します。ページの上部に、レガシー Model Registry App UI の使用を有効にするバナーが表示されます。
ご質問がある場合、または移行に関する懸念について W&B Product Team と話したい場合は、support@wandb.com までご連絡ください。
1 - Registry types
W&B は、コアレジストリ と カスタムレジストリ の2種類のレジストリをサポートしています。
コアレジストリ
コアレジストリは、特定の ユースケース ( Models と Datasets ) のためのテンプレートです。
デフォルトでは、Models レジストリは "model"
artifact タイプを受け入れるように設定され、Dataset レジストリは "dataset"
artifact タイプを受け入れるように設定されています。管理者は、追加の受け入れ可能な artifact タイプを追加できます。
上の図は、W&B Registry App UI の Models と Dataset コアレジストリと、Fine_Tuned_Models というカスタムレジストリを示しています。
コアレジストリは、組織の可視性 を持っています。レジストリ管理者は、コアレジストリの可視性を変更できません。
カスタムレジストリ
カスタムレジストリは、"model"
artifact タイプまたは "dataset"
artifact タイプに制限されません。
初期の データ 収集から最終的な モデル の デプロイメント まで、機械学習 パイプライン の各ステップに対してカスタムレジストリを作成できます。
たとえば、トレーニング された モデル のパフォーマンスを評価するために、キュレーションされた データセット を整理するために「Benchmark_Datasets」というレジストリを作成できます。このレジストリ内には、「User_Query_Insurance_Answer_Test_Data」というコレクションがあり、トレーニング 中に モデル が見たことのない ユーザー の質問と、対応する専門家によって検証された回答のセットが含まれている場合があります。
カスタムレジストリは、組織または制限付きの可視性 を持つことができます。レジストリ管理者は、カスタムレジストリの可視性を組織から制限付きに変更できます。ただし、レジストリ管理者は、カスタムレジストリの可視性を制限付きから組織の可視性には変更できません。
カスタムレジストリの作成方法については、カスタムレジストリの作成 を参照してください。
まとめ
次の表は、コアレジストリとカスタムレジストリの違いをまとめたものです。
Core
Custom
可視性
組織の可視性のみ。可視性は変更できません。
組織または制限付き。可視性は組織から制限付きの可視性へ変更できます。
メタデータ
事前設定されており、 ユーザー は編集できません。
ユーザー が編集できます。
Artifact タイプ
事前設定されており、受け入れられた artifact タイプは削除できません。 ユーザー は追加の受け入れられた artifact タイプを追加できます。
管理者は、受け入れられたタイプを定義できます。
カスタマイズ
既存のリストにタイプを追加できます。
レジストリ名、説明、可視性、および受け入れられた artifact タイプを編集します。
2 - Create a custom registry
カスタムレジストリは、使用できるアーティファクトのタイプに対する柔軟性と制御を提供し、レジストリの可視性を制限できます。
コアレジストリとカスタムレジストリの完全な比較については、レジストリの種類 の概要表を参照してください。
カスタムレジストリの作成
カスタムレジストリを作成するには:
https://wandb.ai/registry/ にある Registry App に移動します。
Custom registry 内で、Create registry ボタンをクリックします。
Name フィールドにレジストリの名前を入力します。
必要に応じて、レジストリに関する説明を入力します。
Registry visibility ドロップダウンから、レジストリを表示できるユーザーを選択します。レジストリの可視性オプションの詳細については、レジストリの可視性の種類 を参照してください。
Accepted artifacts type ドロップダウンから、All types または Specify types を選択します。
(Specify types を選択した場合) レジストリが受け入れる1つ以上のアーティファクトタイプを追加します。
Create registry ボタンをクリックします。
アーティファクトタイプは、レジストリの設定に保存されると、レジストリから削除できません。
たとえば、次の図は、ユーザーが作成しようとしている Fine_Tuned_Models
という名前のカスタムレジストリを示しています。レジストリは、レジストリに手動で追加されたメンバーのみに Restricted されています。
可視性の種類
レジストリの可視性 は、誰がそのレジストリにアクセスできるかを決定します。カスタムレジストリの可視性を制限すると、指定されたメンバーのみがレジストリにアクセスできるようになります。
カスタムレジストリには、次の2つのタイプのレジストリ可視性オプションがあります。
可視性
説明
Restricted
招待された組織メンバーのみがレジストリにアクセスできます。
Organization
組織内のすべてのユーザーがレジストリにアクセスできます。
チーム管理者またはレジストリ管理者は、カスタムレジストリの可視性を設定できます。
Restricted の可視性でカスタムレジストリを作成したユーザーは、レジストリ管理者として自動的にレジストリに追加されます。
カスタムレジストリの可視性の構成
チーム管理者またはレジストリ管理者は、カスタムレジストリの作成中または作成後に、カスタムレジストリの可視性を割り当てることができます。
既存のカスタムレジストリの可視性を制限するには:
https://wandb.ai/registry/ にある Registry App に移動します。
レジストリを選択します。
右上隅にある歯車アイコンをクリックします。
Registry visibility ドロップダウンから、目的のレジストリ可視性を選択します。
Restricted visibility を選択した場合:
このレジストリへのアクセスを許可する組織のメンバーを追加します。Registry members and roles セクションまでスクロールし、Add member ボタンをクリックします。
Member フィールドに、追加するメンバーのメールアドレスまたはユーザー名を追加します。
Add new member をクリックします。
チーム管理者がカスタムレジストリを作成するときに、カスタムレジストリの可視性を割り当てる方法の詳細については、カスタムレジストリの作成 を参照してください。
3 - Configure registry access
Registry の管理者は、Registry の設定を構成することで、Registry のロールを設定 、ユーザーを追加 、または ユーザーを削除 できます。
ユーザーの管理
ユーザーまたは Teams の追加
Registry の管理者は、個々の ユーザー または Teams 全体を Registry に追加できます。 ユーザー または Teams を Registry に追加するには:
Registry (https://wandb.ai/registry/ ) に移動します。
ユーザー または Teams を追加する Registry を選択します。
右上隅にある歯車アイコンをクリックして、Registry の 設定 にアクセスします。
Registry access セクションで、Add access をクリックします。
Include users and teams フィールドに、1 つ以上の ユーザー 名、メールアドレス、または Teams 名を指定します。
Add access をクリックします。
Registry での ユーザー ロールの設定 、または Registry ロールの権限 について詳細をご覧ください。
ユーザー または Teams の削除
Registry の管理者は、個々の ユーザー または Teams 全体を Registry から削除できます。 ユーザー または Teams を Registry から削除するには:
Registry (https://wandb.ai/registry/ ) に移動します。
ユーザー を削除する Registry を選択します。
右上隅にある歯車アイコンをクリックして、Registry の 設定 にアクセスします。
Registry access セクションに移動し、削除する ユーザー 名、メールアドレス、または Teams を入力します。
Delete ボタンをクリックします。
Teams から ユーザー を削除すると、その ユーザー の Registry へのアクセス権も削除されます。
Registry ロール
Registry 内の各 ユーザー は、その Registry で何ができるかを決定する Registry ロール を持っています。
W&B は、ユーザー または Teams が Registry に追加されると、デフォルトの Registry ロールを自動的に割り当てます。
エンティティ
デフォルトの Registry ロール
Teams
Viewer
ユーザー (管理者以外)
Viewer
組織の管理者
Admin
Registry の管理者は、Registry 内の ユーザー および Teams のロールを割り当てまたは変更できます。
詳細については、Registry での ユーザー ロールの設定 を参照してください。
W&B ロールの種類 W&B には、2 種類のロールがあります。Teams ロール と Registry ロール です。
Teams でのロールは、Registry でのロールに影響を与えたり、関係したりすることはありません。
次の表に、ユーザー が持つことができるさまざまなロールと、その権限を示します。
権限
権限グループ
Viewer
Member
Admin
コレクションの詳細を表示する
Read
X
X
X
リンクされた Artifact の詳細を表示する
Read
X
X
X
使用法: use_artifact を使用して Registry 内の Artifact を消費する
Read
X
X
X
リンクされた Artifact をダウンロードする
Read
X
X
X
Artifact のファイルビューアーからファイルをダウンロードする
Read
X
X
X
Registry を検索する
Read
X
X
X
Registry の 設定 と ユーザー リストを表示する
Read
X
X
X
コレクションの新しい自動化を作成する
Create
X
X
新しい バージョン が追加されたときに Slack 通知をオンにする
Create
X
X
新しいコレクションを作成する
Create
X
X
新しいカスタム Registry を作成する
Create
X
X
コレクションカード (説明) を編集する
Update
X
X
リンクされた Artifact の説明を編集する
Update
X
X
コレクションのタグを追加または削除する
Update
X
X
リンクされた Artifact から エイリアス を追加または削除する
Update
X
X
新しい Artifact をリンクする
Update
X
X
Registry で許可されている種類のリストを編集する
Update
X
X
カスタム Registry 名を編集する
Update
X
X
コレクションを削除する
Delete
X
X
自動化を削除する
Delete
X
X
Registry から Artifact のリンクを解除する
Delete
X
X
Registry で許可されている Artifact の種類を編集する
Admin
X
Registry の表示設定 (Organization または Restricted) を変更する
Admin
X
Registry に ユーザー を追加する
Admin
X
Registry で ユーザー のロールを割り当てるか変更する
Admin
X
継承された権限
Registry での ユーザー の権限は、個人または Teams メンバーシップによって割り当てられた、その ユーザー に割り当てられた最高の特権レベルによって異なります。
たとえば、Registry の管理者が Nico という ユーザー を Registry A に追加し、Viewer Registry ロールを割り当てるとします。次に、Registry の管理者が Foundation Model Team という Teams を Registry A に追加し、Foundation Model Team に Member Registry ロールを割り当てます。
Nico は Foundation Model Team のメンバーであり、Member は Registry のメンバーです。Member は Viewer よりも多くの権限を持っているため、W&B は Nico に Member ロールを付与します。
次の表は、ユーザー の個々の Registry ロールと、メンバーである Teams の Registry ロールとの間で競合が発生した場合の、最高の権限レベルを示しています。
Teams Registry ロール
個々の Registry ロール
継承された Registry ロール
Viewer
Viewer
Viewer
Member
Viewer
Member
Admin
Viewer
Admin
競合がある場合、W&B は ユーザー の名前の横に最高の権限レベルを表示します。
たとえば、次の画像では、Alex は smle-reg-team-1
Teams のメンバーであるため、Member ロールの特権を継承しています。
Registry ロールの構成
Registry (https://wandb.ai/registry/ ) に移動します。
構成する Registry を選択します。
右上隅にある歯車アイコンをクリックします。
Registry members and roles セクションまでスクロールします。
Member フィールド内で、権限を編集する ユーザー または Teams を検索します。
Registry role 列で、ユーザー のロールをクリックします。
ドロップダウンから、ユーザー に割り当てるロールを選択します。
4 - Create a collection
コレクション とは、レジストリ内のリンクされた artifact バージョンのセットです。各コレクションは、明確なタスクまたはユースケースを表します。
たとえば、コア Dataset レジストリ内には複数のコレクションが存在する場合があります。各コレクションには、MNIST、CIFAR-10、ImageNet など、異なるデータセットが含まれています。
別の例として、「chatbot」というレジストリがあり、モデル artifact のコレクション、データセット artifact の別のコレクション、ファインチューンされたモデル artifact の別のコレクションが含まれている場合があります。
レジストリとそのコレクションをどのように編成するかは、あなた次第です。
W&B Model Registry に精通している場合は、登録済みモデルをご存知かもしれません。Model Registry の登録済みモデルは、W&B Registry ではコレクションと呼ばれるようになりました。
コレクションタイプ
各コレクションは、1 つ、かつ 1 つのみの artifact の タイプ を受け入れます。指定するタイプは、あなたと組織の他のメンバーがそのコレクションにリンクできる artifact の種類を制限します。
artifact のタイプは、Python などのプログラミング言語のデータ型に似ていると考えることができます。このアナロジーでは、コレクションは文字列、整数、または浮動小数点数を格納できますが、これらのデータ型の組み合わせは格納できません。
たとえば、「データセット」 artifact タイプを受け入れるコレクションを作成するとします。これは、タイプ「データセット」を持つ将来の artifact バージョンのみをこのコレクションにリンクできることを意味します。同様に、モデル artifact タイプのみを受け入れるコレクションには、タイプ「model」の artifact のみをリンクできます。
artifact オブジェクトを作成するときに、artifact のタイプを指定します。wandb.Artifact()
の type
フィールドに注意してください。
import wandb
# Initialize a run
run = wandb. init(
entity = "<team_entity>" ,
project = "<project>"
)
# Create an artifact object
artifact = wandb. Artifact(
name= "<artifact_name>" ,
type= "<artifact_type>"
)
コレクションを作成するときは、定義済みの artifact タイプのリストから選択できます。利用可能な artifact タイプは、コレクションが属するレジストリによって異なります。
artifact をコレクションにリンクする、または新しいコレクションを作成する前に、コレクションが受け入れる artifact のタイプを調べてください 。
コレクションが受け入れる artifact のタイプを確認する
コレクションにリンクする前に、コレクションが受け入れる artifact タイプを調べてください。コレクションが受け入れる artifact タイプは、W&B Python SDK を使用してプログラムで、または W&B App を使用してインタラクティブに調べることができます。
その artifact タイプを受け入れないコレクションに artifact をリンクしようとすると、エラーメッセージが表示されます。
W&B App
Python SDK (Beta)
受け入れられる artifact タイプは、ホームページのレジストリカード、またはレジストリの設定ページにあります。
どちらの方法でも、まず W&B Registry App に移動します。
Registry App のホームページ内で、そのレジストリのレジストリカードまでスクロールすると、受け入れられる artifact タイプを表示できます。レジストリカード内の灰色の水平方向の楕円は、そのレジストリが受け入れる artifact タイプを示しています。
たとえば、上記の画像は、Registry App ホームページの複数のレジストリカードを示しています。Model レジストリカード内には、model と model-new の 2 つの artifact タイプが表示されています。
レジストリの設定ページ内で受け入れられる artifact タイプを表示するには:
設定を表示するレジストリカードをクリックします。
右上隅にある歯車アイコンをクリックします。
受け入れられる artifact タイプ フィールドまでスクロールします。
W&B Python SDK を使用して、レジストリが受け入れる artifact タイプをプログラムで表示します。
import wandb
registry_name = "<registry_name>"
artifact_types = wandb. Api(). project(name= f "wandb-registry- { registry_name} " ). artifact_types()
print(artifact_type. name for artifact_type in artifact_types)
上記のコードスニペットでは run を初期化しないことに注意してください。これは、W&B API をクエリするだけで、experiment、artifact などを追跡しない場合は、run を作成する必要がないためです。
コレクションが受け入れる artifact のタイプがわかったら、コレクションを作成 できます。
コレクションを作成する
レジストリ内にインタラクティブまたはプログラムでコレクションを作成します。コレクションの作成後に、コレクションが受け入れる artifact のタイプを変更することはできません。
プログラムでコレクションを作成する
wandb.init.link_artifact()
メソッドを使用して、artifact をコレクションにリンクします。target_path
フィールドに、コレクションとレジストリの両方を次の形式のパスとして指定します。
f "wandb-registry- { registry_name} / { collection_name} "
ここで、registry_name
はレジストリの名前、collection_name
はコレクションの名前です。プレフィックス wandb-registry-
をレジストリ名に必ず追加してください。
存在しないコレクションに artifact をリンクしようとすると、W&B は自動的にコレクションを作成します。存在するコレクションを指定すると、W&B は artifact を既存のコレクションにリンクします。
上記のコードスニペットは、プログラムでコレクションを作成する方法を示しています。<>
で囲まれた他の値を必ず独自の値に置き換えてください。
import wandb
# Initialize a run
run = wandb. init(entity = "<team_entity>" , project = "<project>" )
# Create an artifact object
artifact = wandb. Artifact(
name = "<artifact_name>" ,
type = "<artifact_type>"
)
registry_name = "<registry_name>"
collection_name = "<collection_name>"
target_path = f "wandb-registry- { registry_name} / { collection_name} "
# Link the artifact to a collection
run. link_artifact(artifact = artifact, target_path = target_path)
run. finish()
インタラクティブにコレクションを作成する
次の手順では、W&B Registry App UI を使用してレジストリ内にコレクションを作成する方法について説明します。
W&B App UI の Registry App に移動します。
レジストリを選択します。
右上隅にある コレクションを作成 ボタンをクリックします。
名前 フィールドにコレクションの名前を入力します。
タイプ ドロップダウンからタイプを選択します。または、レジストリがカスタム artifact タイプを有効にする場合は、このコレクションが受け入れる 1 つまたは複数の artifact タイプを入力します。
必要に応じて、説明 フィールドにコレクションの説明を入力します。
必要に応じて、タグ フィールドに 1 つまたは複数のタグを追加します。
バージョンのリンク をクリックします。
プロジェクト ドロップダウンから、artifact が保存されているプロジェクトを選択します。
Artifact コレクションドロップダウンから、artifact を選択します。
バージョン ドロップダウンから、コレクションにリンクする artifact バージョンを選択します。
コレクションを作成 ボタンをクリックします。
5 - Link an artifact version to a registry
Artifact の バージョンをコレクションにリンクして、組織内の他のメンバーが利用できるようにします。
Artifact をレジストリにリンクすると、その Artifact がそのレジストリに「公開」されます。そのレジストリへのアクセス権を持つ ユーザー は、コレクション内のリンクされた Artifact の バージョン にアクセスできます。
言い換えれば、Artifact をレジストリ コレクションにリンクすると、その Artifact の バージョン がプライベートなプロジェクトレベルのスコープから、共有の組織レベルのスコープに移行します。
Artifact をコレクションにリンクする
Artifact の バージョン を、インタラクティブまたはプログラムでコレクションにリンクします。
Artifact をレジストリにリンクする前に、そのコレクションが許可する Artifact の type を確認してください。コレクションの type について詳しくは、
コレクションを作成する の「コレクション の type」をご覧ください。
ユースケース に基づいて、以下のタブに記載されている手順に従って、Artifact の バージョン をリンクしてください。
Artifact の バージョン がメトリクスを ログ に記録している場合 (たとえば、
run.log_artifact()
を使用するなど)、その バージョン の詳細ページからその バージョン のメトリクスを表示したり、Artifact のページから Artifact の バージョン 全体のメトリクスを比較したりできます。
レジストリ内のリンクされた Artifact を表示する を参照してください。
Python SDK
Registry App
Artifact browser
wandb.init.Run.link_artifact()
を使用して、プログラムで Artifact の バージョン をコレクションにリンクします。
Artifact をコレクションにリンクする前に、コレクションが属するレジストリがすでに存在することを確認してください。レジストリが存在することを確認するには、W&B App UI の Registry アプリ に移動し、レジストリの名前を検索します。
target_path
パラメータ を使用して、Artifact の バージョン のリンク先となるコレクションとレジストリを指定します。ターゲット パス は、プレフィックス「wandb-registry」、レジストリの名前、およびフォワード スラッシュで区切られたコレクションの名前で構成されます。
wandb-registry-{REGISTRY_NAME}/{COLLECTION_NAME}
以下の コードスニペット をコピーして貼り付け、既存のレジストリ内のコレクションに Artifact の バージョン をリンクします。「<>」で囲まれた 値 を自分の 値 に置き換えます。
import wandb
# Run を初期化する
run = wandb. init(
entity = "<team_entity>" ,
project = "<project_name>"
)
# Artifact オブジェクトを作成する
# type パラメータ は、Artifact オブジェクト の type と
# コレクション の type の両方を指定します
artifact = wandb. Artifact(name = "<name>" , type = "<type>" )
# Artifact オブジェクト にファイルを追加します。
# ローカルマシン 上のファイルへの パス を指定します。
artifact. add_file(local_path = "<local_path_to_artifact>" )
# Artifact のリンク先のコレクションとレジストリを指定します
REGISTRY_NAME = "<registry_name>"
COLLECTION_NAME = "<collection_name>"
target_path= f "wandb-registry- { REGISTRY_NAME} / { COLLECTION_NAME} "
# Artifact をコレクションにリンクする
run. link_artifact(artifact = artifact, target_path = target_path)
Artifact の バージョン を Model Registry または Dataset registry にリンクする場合は、Artifact の type をそれぞれ "model"
または "dataset"
に設定します。
Registry App に移動します。
Artifact の バージョン をリンクするコレクションの名前の横に マウス を合わせます。
詳細を表示 の横にある ミートボール メニュー アイコン (3 つの水平ドット) を選択します。
ドロップダウンから、新しい バージョン をリンク を選択します。
表示されるサイドバーから、Team ドロップダウンから チーム の名前を選択します。
Project ドロップダウンから、Artifact を含むプロジェクトの名前を選択します。
Artifact ドロップダウンから、Artifact の名前を選択します。
バージョン ドロップダウンから、コレクションにリンクする Artifact の バージョン を選択します。
W&B App のプロジェクト の Artifact ブラウザ (https://wandb.ai/<entity>/<project>/artifacts
) に移動します。
左側のサイドバーにある Artifact アイコンを選択します。
レジストリにリンクする Artifact の バージョン をクリックします。
バージョン の概要 セクション内で、レジストリにリンク ボタンをクリックします。
画面の右側に表示されるモーダルから、レジストリ モデル を選択 メニュー ドロップダウンから Artifact を選択します。
次のステップ をクリックします。
(オプション) エイリアス ドロップダウンから エイリアス を選択します。
レジストリにリンク をクリックします。
Registry アプリ で、リンクされた Artifact の メタデータ、バージョン データ、使用状況、リネージ 情報を表示します。
レジストリ内のリンクされた Artifact を表示する
Registry アプリ で、メタデータ、リネージ、使用状況情報など、リンクされた Artifact に関する情報を表示します。
Registry アプリ に移動します。
Artifact をリンクしたレジストリの名前を選択します。
コレクションの名前を選択します。
コレクションの Artifact がメトリクスを ログ に記録する場合は、メトリクスの表示 をクリックして バージョン 全体のメトリクスを比較します。
Artifact の バージョン のリストから、アクセスする バージョン を選択します。バージョン 番号は、v0
から始まるリンクされた各 Artifact の バージョン にインクリメントに割り当てられます。
Artifact の バージョン に関する詳細を表示するには、バージョン をクリックします。このページのタブから、その バージョン のメタデータ (ログ に記録されたメトリクスを含む)、リネージ、および使用状況情報を表示できます。
バージョン タブ内の フルネーム フィールドに注意してください。リンクされた Artifact のフルネームは、レジストリ、コレクション名、および Artifact の バージョン の エイリアス または インデックス で構成されます。
wandb-registry-{REGISTRY_NAME}/{COLLECTION_NAME}:v{INTEGER}
プログラムで Artifact の バージョン にアクセスするには、リンクされた Artifact のフルネームが必要です。
トラブルシューティング
Artifact をリンクできない場合は、以下に示す一般的な確認事項を再確認してください。
個人の アカウント から Artifact を ログ に記録する
個人の Entity で W&B に ログ に記録された Artifact は、レジストリにリンクできません。組織内の チーム Entity を使用して Artifact を ログ に記録していることを確認してください。組織の チーム 内で ログ に記録された Artifact のみ、組織のレジストリにリンクできます。
Artifact をレジストリにリンクする場合は、チーム Entity で Artifact を ログ に記録していることを確認してください。
チーム Entity を検索する
W&B は、チーム の名前を チーム の Entity として使用します。たとえば、チーム の名前が team-awesome の場合、チーム Entity は team-awesome
です。
次の方法で チーム の名前を確認できます。
チーム の W&B プロファイル ページに移動します。
サイト の URL をコピーします。これは https://wandb.ai/<team>
の形式です。<team>
は チーム の名前と チーム の Entity の両方です。
チーム Entity から ログ に記録する
wandb.init()
で run を初期化するときに、Entity として チーム を指定します。run を初期化するときに entity
を指定しない場合、run はデフォルト の Entity を使用します。これは チーム Entity である場合とそうでない場合があります。
import wandb
run = wandb. init(
entity= '<team_entity>' ,
project= '<project_name>'
)
run.log_artifact を使用して、または Artifact オブジェクト を作成し、次にファイルを Artifact オブジェクト に追加して、Artifact を run に ログ に記録します。
artifact = wandb. Artifact(name= "<artifact_name>" , type= "<type>" )
Artifact の ログ 方法について詳しくは、Artifact を構築する をご覧ください。
Artifact が個人の Entity に ログ に記録されている場合は、組織内の Entity に再度 ログ に記録する必要があります。
W&B App UI でレジストリの パス を確認する
UI を使用してレジストリの パス を確認するには、空のコレクションを作成してコレクションの詳細を表示するか、コレクションの ホーム ページで自動生成された コード をコピーして貼り付けます。
自動生成された コード をコピーして貼り付けます
https://wandb.ai/registry/ で Registry アプリ に移動します。
Artifact をリンクするレジストリをクリックします。
ページの上部に、自動生成された コード ブロックが表示されます。
これを コード にコピーして貼り付け、パス の最後の部分をコレクションの名前に置き換えてください。
空のコレクションを作成する
https://wandb.ai/registry/ で Registry アプリ に移動します。
Artifact をリンクするレジストリをクリックします。
空のコレクションをクリックします。空のコレクションが存在しない場合は、新しいコレクションを作成します。
表示される コードスニペット 内で、.link_artifact()
内の target_path
フィールドを特定します。
(オプション) コレクションを削除します。
たとえば、概説されている手順を完了した後、target_path
パラメータ を使用して コード ブロックを見つけます。
target_path =
"smle-registries-bug-bash/wandb-registry-Golden Datasets/raw_images"
これをコンポーネント に分解すると、プログラムで Artifact をリンクするための パス を作成するために使用する必要があるものを確認できます。
ORG_ENTITY_NAME = "smle-registries-bug-bash"
REGISTRY_NAME = "Golden Datasets"
COLLECTION_NAME = "raw_images"
一時コレクションのコレクションの名前を、Artifact のリンク先のコレクションの名前に置き換えてください。
```
6 - Download an artifact from a registry
W&B Python SDK を使用して、レジストリにリンクされた artifact をダウンロードします。artifact をダウンロードして使用するには、レジストリの名前、コレクションの名前、およびダウンロードする artifact バージョンのエイリアスまたはインデックスを知っておく必要があります。
artifact のプロパティがわかったら、リンクされた artifact へのパスを構築 して artifact をダウンロードできます。または、W&B App UI から事前生成されたコードスニペットをコピーして貼り付け て、レジストリにリンクされた artifact をダウンロードすることもできます。
リンクされた artifact へのパスを構築
レジストリにリンクされた artifact をダウンロードするには、そのリンクされた artifact のパスを知っておく必要があります。パスは、レジストリ名、コレクション名、およびアクセスする artifact バージョンのエイリアスまたはインデックスで構成されます。
レジストリ、コレクション、および artifact バージョンのエイリアスまたはインデックスを取得したら、次の文字列テンプレートを使用して、リンクされた artifact へのパスを構築できます。
# バージョンインデックスが指定された Artifact 名
f "wandb-registry- { REGISTRY} / { COLLECTION} :v { INDEX} "
# エイリアスが指定された Artifact 名
f "wandb-registry- { REGISTRY} / { COLLECTION} : { ALIAS} "
中かっこ{}
内の値を、アクセスするレジストリ、コレクション、および artifact バージョンのエイリアスまたはインデックスの名前に置き換えます。
artifact バージョンをコア Model Registry またはコア Dataset Registry にそれぞれリンクするには、model
またはdataset
を指定します。
リンクされた artifact のパスを取得したら、wandb.init.use_artifact
メソッドを使用して artifact にアクセスし、そのコンテンツをダウンロードします。次のコードスニペットは、W&B Registry にリンクされた artifact を使用およびダウンロードする方法を示しています。<>
内の値を自分の値に置き換えてください。
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 を作成し、ダウンロードした artifact をその run への入力としてマークします。artifact を run への入力としてマークすると、W&B はその artifact のリネージを追跡できます。
run を作成したくない場合は、wandb.Api()
オブジェクトを使用して artifact にアクセスできます。
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 Registry にリンクされた Artifact を使用およびダウンロードする
次のコード例は、ユーザーが Fine-tuned Models レジストリの phi3-finetuned
というコレクションにリンクされた artifact をダウンロードする方法を示しています。artifact バージョンのエイリアスは production
に設定されています。
import wandb
TEAM_ENTITY = "product-team-applications"
PROJECT_NAME = "user-stories"
REGISTRY = "Fine-tuned Models"
COLLECTION = "phi3-finetuned"
ALIAS = 'production'
# 指定された Team と Project 内で Run を初期化します
run = wandb. init(entity= TEAM_ENTITY, project = PROJECT_NAME)
artifact_name = f "wandb-registry- { REGISTRY} / { COLLECTION} : { ALIAS} "
# Artifact にアクセスし、リネージ追跡のために Run への入力としてマークします
fetched_artifact = run. use_artifact(artifact_or_name = name)
# Artifact をダウンロードします。ダウンロードしたコンテンツへのパスを返します
downloaded_path = fetched_artifact. download()
可能なパラメータと戻り値の型の詳細については、API Reference ガイドの use_artifact
および Artifact.download()
を参照してください。
複数の組織に属する個人 Entity を持つ Users 複数の組織に属する個人 Entity を持つ Users は、レジストリにリンクされた artifact にアクセスする際に、組織の名前を指定するか、Team Entity を使用する必要があります。
import wandb
REGISTRY = "<registry_name>"
COLLECTION = "<collection_name>"
VERSION = "<version>"
# API をインスタンス化するために、Team Entity を使用していることを確認してください
api = wandb. Api(overrides= {"entity" : "<team-entity>" })
artifact_name = f "wandb-registry- { REGISTRY} / { COLLECTION} : { VERSION} "
artifact = api. artifact(name = artifact_name)
# パスで組織の表示名または組織 Entity を使用します
api = wandb. Api()
artifact_name = f " { ORG_NAME} /wandb-registry- { REGISTRY} / { COLLECTION} : { VERSION} "
artifact = api. artifact(name = artifact_name)
ORG_NAME
は、組織の表示名です。マルチテナント SaaS ユーザーは、組織の設定ページ(https://wandb.ai/account-settings/
)で組織の名前を見つけることができます。Dedicated Cloud および Self-Managed ユーザーは、アカウント管理者に連絡して、組織の表示名を確認してください。
事前生成されたコードスニペットをコピーして貼り付け
W&B は、Python スクリプト、notebook、またはターミナルにコピーして貼り付けて、レジストリにリンクされた artifact をダウンロードできるコードスニペットを作成します。
Registry App に移動します。
artifact が含まれているレジストリの名前を選択します。
コレクションの名前を選択します。
artifact バージョンのリストから、アクセスするバージョンを選択します。
Usage タブを選択します。
Usage API セクションに表示されているコードスニペットをコピーします。
コードスニペットを Python スクリプト、notebook、またはターミナルに貼り付けます。
7 - Find registry items
W&B Registry App のグローバル検索バー を使用して、レジストリ、コレクション、アーティファクト バージョン タグ、コレクション タグ、または エイリアス を検索します。MongoDB スタイルのクエリを使用して、W&B Python SDK を使用して特定の条件に基づいてレジストリ、コレクション、およびアーティファクト バージョンをフィルタリング できます。
表示する権限を持つアイテムのみが検索結果に表示されます。
レジストリ アイテムの検索
レジストリ アイテムを検索するには:
W&B Registry App に移動します。
ページ上部の検索バーに検索語句を指定します。Enter キーを押して検索します。
指定した用語が既存のレジストリ、コレクション名、アーティファクト バージョン タグ、コレクション タグ、または エイリアス と一致する場合、検索結果は検索バーの下に表示されます。
MongoDB スタイルのクエリでレジストリ アイテムをクエリする
wandb.Api().registries()
と クエリ述語 を使用して、1 つ以上の MongoDB スタイルのクエリ に基づいて、レジストリ、コレクション、およびアーティファクト バージョンをフィルタリングします。
次の表に、フィルタリングするアイテムのタイプに基づいて使用できるクエリ名を示します。
クエリ名
registries
name
, description
, created_at
, updated_at
collections
name
, tag
, description
, created_at
, updated_at
versions
tag
, alias
, created_at
, updated_at
, metadata
次の コードスニペット は、一般的な検索シナリオを示しています。
wandb.Api().registries()
メソッドを使用するには、まず W&B Python SDK (wandb
) ライブラリをインポートします。
import wandb
# (オプション) 可読性を高めるために wandb.Api() クラスのインスタンスを作成します
api = wandb. Api()
文字列 model
を含むすべての registries をフィルタリングします。
# 文字列 `model` を含むすべての registries をフィルタリングします
registry_filters = {
"name" : {"$regex" : "model" }
}
# フィルタに一致するすべての registries のイテラブルを返します
registries = api. registries(filter= registry_filters)
コレクション名に文字列 yolo
を含む、registry に関係なく、すべての collections をフィルタリングします。
# コレクション名に文字列 `yolo` を含む、registry に関係なく、
# すべての collections をフィルタリングします
collection_filters = {
"name" : {"$regex" : "yolo" }
}
# フィルタに一致するすべての collections のイテラブルを返します
collections = api. registries(). collections(filter= collection_filters)
コレクション名に文字列 yolo
を含み、cnn
をタグとして持つ、registry に関係なく、すべての collections をフィルタリングします。
# コレクション名に文字列 `yolo` を含み、
# `cnn` をタグとして持つ、registry に関係なく、すべての collections をフィルタリングします
collection_filters = {
"name" : {"$regex" : "yolo" },
"tag" : "cnn"
}
# フィルタに一致するすべての collections のイテラブルを返します
collections = api. registries(). collections(filter= collection_filters)
文字列 model
を含み、タグ image-classification
または latest
エイリアス のいずれかを持つすべてのアーティファクト バージョンを検索します。
# 文字列 `model` を含み、
# タグ `image-classification` または `latest` エイリアス のいずれかを持つすべてのアーティファクト バージョンを検索します
registry_filters = {
"name" : {"$regex" : "model" }
}
# 論理 $or 演算子を使用してアーティファクト バージョンをフィルタリングします
version_filters = {
"$or" : [
{"tag" : "image-classification" },
{"alias" : "production" }
]
}
# フィルタに一致するすべてのアーティファクト バージョンのイテラブルを返します
artifacts = api. registries(filter= registry_filters). collections(). versions(filter= version_filters)
論理クエリオペレーター の詳細については、MongoDB のドキュメントを参照してください。
前の コードスニペット の artifacts
イテラブルの各アイテムは、Artifact
クラスのインスタンスです。つまり、各アーティファクトの属性 ( name
、 collection
、 aliases
、 tags
、 created_at
など) にアクセスできます。
for art in artifacts:
print(f "artifact name: { art. name} " )
print(f "collection artifact belongs to: { art. collection. name} " )
print(f "artifact aliases: { art. aliases} " )
print(f "tags attached to artifact: { art. tags} " )
print(f "artifact created at: { art. created_at} \n " )
アーティファクト オブジェクトの属性の完全なリストについては、API Reference ドキュメントの Artifacts Class を参照してください。
2024-01-08 から 2025-03-04 の 13:10 UTC の間に作成された、registry または collection に関係なく、すべてのアーティファクト バージョンをフィルタリングします。
# 2024-01-08 から 2025-03-04 の 13:10 UTC の間に作成されたすべてのアーティファクト バージョンを検索します。
artifact_filters = {
"alias" : "latest" ,
"created_at" : {"$gte" : "2024-01-08" , "$lte" : "2025-03-04 13:10:00" },
}
# フィルタに一致するすべてのアーティファクト バージョンのイテラブルを返します
artifacts = api. registries(). collections(). versions(filter= artifact_filters)
日付と時刻を YYYY-MM-DD HH:MM:SS
形式で指定します。日付のみでフィルタリングする場合は、時間、分、秒を省略できます。
クエリ比較 の詳細については、MongoDB のドキュメントを参照してください。
8 - Organize versions with tags
タグを使用して、コレクションまたはコレクション内のアーティファクト のバージョンを整理します。タグの追加、削除、編集は、Python SDK または W&B App UI で行えます。
レジストリ内のコレクションまたは Artifacts バージョンを整理するために、タグを作成して追加します。W&B App UIまたは W&B Python SDK を使用して、コレクションまたは Artifacts バージョンにタグを追加、変更、表示、または削除します。
タグとエイリアスの使い分け 特定の Artifacts バージョンを一意に参照する必要がある場合は、エイリアスを使用します。たとえば、artifact_name:alias
が常に単一の特定のバージョンを指すようにするために、‘production’ や ’latest’ などのエイリアスを使用します。
グループ化や検索の柔軟性を高めたい場合は、タグを使用します。タグは、複数のバージョンまたはコレクションが同じラベルを共有でき、特定の識別子に1つのバージョンのみが関連付けられているという保証が不要な場合に最適です。
コレクションにタグを追加する
W&B App UIまたは Python SDK を使用して、コレクションにタグを追加します。
W&B App UIを使用して、コレクションにタグを追加します。
W&B Registry(https://wandb.ai/registry)に移動します。
レジストリカードをクリックします。
コレクションの名前の横にある [詳細を表示 ] をクリックします。
コレクションカード内で、[タグ ] フィールドの横にあるプラスアイコン(+ )をクリックし、タグの名前を入力します。
キーボードの Enter キーを押します。
import wandb
COLLECTION_TYPE = "<collection_type>"
ORG_NAME = "<org_name>"
REGISTRY_NAME = "<registry_name>"
COLLECTION_NAME = "<collection_name>"
full_name = f " { ORG_NAME} /wandb-registry- { REGISTRY_NAME} / { COLLECTION_NAME} "
collection = wandb. Api(). artifact_collection(
type_name = COLLECTION_TYPE,
name = full_name
)
collection. tags = ["your-tag" ]
collection. save()
コレクションに属するタグを更新する
tags
属性を再割り当てするか、変更することで、プログラムでタグを更新します。W&B は、インプレースミューテーションではなく、tags
属性を再割り当てすることを推奨しており、これは良い Python のプラクティスです。
たとえば、次のコードスニペットは、再割り当てでリストを更新する一般的な方法を示しています。簡潔にするために、コレクションにタグを追加するセクション のコード例を続けます。
collection. tags = [* collection. tags, "new-tag" , "other-tag" ]
collection. tags = collection. tags + ["new-tag" , "other-tag" ]
collection. tags = set(collection. tags) - set(tags_to_delete)
collection. tags = [] # deletes all tags
次のコードスニペットは、インプレースミューテーションを使用して、Artifacts バージョンに属するタグを更新する方法を示しています。
collection. tags += ["new-tag" , "other-tag" ]
collection. tags. append("new-tag" )
collection. tags. extend(["new-tag" , "other-tag" ])
collection. tags[:] = ["new-tag" , "other-tag" ]
collection. tags. remove("existing-tag" )
collection. tags. pop()
collection. tags. clear()
コレクションに属するタグを表示する
W&B App UIを使用して、コレクションに追加されたタグを表示します。
W&B Registry(https://wandb.ai/registry)に移動します。
レジストリカードをクリックします。
コレクションの名前の横にある [詳細を表示 ] をクリックします。
コレクションに1つ以上のタグがある場合、[タグ ] フィールドの横にあるコレクションカード内でそれらのタグを表示できます。
コレクションに追加されたタグは、そのコレクションの名前の横にも表示されます。
たとえば、上記の画像では、「tag1」というタグが「zoo-dataset-tensors」コレクションに追加されました。
コレクションからタグを削除する
W&B App UIを使用して、コレクションからタグを削除します。
W&B Registry(https://wandb.ai/registry)に移動します。
レジストリカードをクリックします。
コレクションの名前の横にある [詳細を表示 ] をクリックします。
コレクションカード内で、削除するタグの名前にマウスを合わせます。
キャンセルボタン(X アイコン)をクリックします。
Artifacts バージョンにタグを追加する
W&B App UIまたは Python SDK を使用して、コレクションにリンクされた Artifacts バージョンにタグを追加します。
W&B Registry(https://wandb.ai/registry)に移動します。
レジストリカードをクリックします。
タグを追加するコレクションの名前の横にある [詳細を表示 ] をクリックします。
[バージョン ] までスクロールダウンします。
Artifacts バージョンの横にある [表示 ] をクリックします。
[バージョン ] タブ内で、[タグ ] フィールドの横にあるプラスアイコン(+ )をクリックし、タグの名前を入力します。
キーボードの Enter キーを押します。
タグを追加または更新する Artifacts バージョンをフェッチします。Artifacts バージョンを取得したら、Artifacts オブジェクトの tag
属性にアクセスして、その Artifacts にタグを追加または変更できます。Artifacts の tag
属性に1つまたは複数のタグをリストとして渡します。
他の Artifacts と同様に、run を作成せずに W&B から Artifacts をフェッチするか、run を作成してその run 内で Artifacts をフェッチできます。いずれの場合も、Artifacts オブジェクトの save
メソッドを呼び出して、W&B サーバー上の Artifacts を更新してください。
以下の適切なコードセルをコピーして貼り付け、Artifacts バージョンのタグを追加または変更します。<>
の値を自分の値に置き換えます。
次のコードスニペットは、新しい run を作成せずに Artifacts をフェッチしてタグを追加する方法を示しています。
import wandb
ARTIFACT_TYPE = "<TYPE>"
ORG_NAME = "<org_name>"
REGISTRY_NAME = "<registry_name>"
COLLECTION_NAME = "<collection_name>"
VERSION = "<artifact_version>"
artifact_name = f " { ORG_NAME} /wandb-registry- { REGISTRY_NAME} / { COLLECTION_NAME} :v { VERSION} "
artifact = wandb. Api(). artifact(name = artifact_name, type = ARTIFACT_TYPE)
artifact. tags = ["tag2" ] # リストで1つ以上のタグを提供します
artifact. save()
次のコードスニペットは、新しい run を作成して Artifacts をフェッチし、タグを追加する方法を示しています。
import wandb
ORG_NAME = "<org_name>"
REGISTRY_NAME = "<registry_name>"
COLLECTION_NAME = "<collection_name>"
VERSION = "<artifact_version>"
run = wandb. init(entity = "<entity>" , project= "<project>" )
artifact_name = f " { ORG_NAME} /wandb-registry- { REGISTRY_NAME} / { COLLECTION_NAME} :v { VERSION} "
artifact = run. use_artifact(artifact_or_name = artifact_name)
artifact. tags = ["tag2" ] # リストで1つ以上のタグを提供します
artifact. save()
Artifacts バージョンに属するタグを更新する
tags
属性を再割り当てするか、変更することで、プログラムでタグを更新します。W&B は、インプレースミューテーションではなく、tags
属性を再割り当てすることを推奨しており、これは良い Python のプラクティスです。
たとえば、次のコードスニペットは、再割り当てでリストを更新する一般的な方法を示しています。簡潔にするために、Artifacts バージョンにタグを追加するセクション のコード例を続けます。
artifact. tags = [* artifact. tags, "new-tag" , "other-tag" ]
artifact. tags = artifact. tags + ["new-tag" , "other-tag" ]
artifact. tags = set(artifact. tags) - set(tags_to_delete)
artifact. tags = [] # deletes all tags
次のコードスニペットは、インプレースミューテーションを使用して、Artifacts バージョンに属するタグを更新する方法を示しています。
artifact. tags += ["new-tag" , "other-tag" ]
artifact. tags. append("new-tag" )
artifact. tags. extend(["new-tag" , "other-tag" ])
artifact. tags[:] = ["new-tag" , "other-tag" ]
artifact. tags. remove("existing-tag" )
artifact. tags. pop()
artifact. tags. clear()
Artifacts バージョンに属するタグを表示する
W&B App UIまたは Python SDK を使用して、レジストリにリンクされている Artifacts バージョンに属するタグを表示します。
W&B Registry(https://wandb.ai/registry)に移動します。
レジストリカードをクリックします。
タグを追加するコレクションの名前の横にある [詳細を表示 ] をクリックします。
[バージョン ] セクションまでスクロールダウンします。
Artifacts バージョンに1つ以上のタグがある場合、[タグ ] 列内でそれらのタグを表示できます。
タグを表示する Artifacts バージョンをフェッチします。Artifacts バージョンを取得したら、Artifacts オブジェクトの tag
属性を表示して、その Artifacts に属するタグを表示できます。
他の Artifacts と同様に、run を作成せずに W&B から Artifacts をフェッチするか、run を作成してその run 内で Artifacts をフェッチできます。
以下の適切なコードセルをコピーして貼り付け、Artifacts バージョンのタグを追加または変更します。<>
の値を自分の値に置き換えます。
次のコードスニペットは、新しい run を作成せずに Artifacts バージョンのタグをフェッチして表示する方法を示しています。
import wandb
ARTIFACT_TYPE = "<TYPE>"
ORG_NAME = "<org_name>"
REGISTRY_NAME = "<registry_name>"
COLLECTION_NAME = "<collection_name>"
VERSION = "<artifact_version>"
artifact_name = f " { ORG_NAME} /wandb-registry- { REGISTRY_NAME} / { COLLECTION_NAME} :v { VERSION} "
artifact = wandb. Api(). artifact(name = artifact_name, type = artifact_type)
print(artifact. tags)
次のコードスニペットは、新しい run を作成して Artifacts バージョンのタグをフェッチして表示する方法を示しています。
import wandb
ORG_NAME = "<org_name>"
REGISTRY_NAME = "<registry_name>"
COLLECTION_NAME = "<collection_name>"
VERSION = "<artifact_version>"
run = wandb. init(entity = "<entity>" , project= "<project>" )
artifact_name = f " { ORG_NAME} /wandb-registry- { REGISTRY_NAME} / { COLLECTION_NAME} :v { VERSION} "
artifact = run. use_artifact(artifact_or_name = artifact_name)
print(artifact. tags)
Artifacts バージョンからタグを削除する
W&B Registry(https://wandb.ai/registry)に移動します。
レジストリカードをクリックします。
タグを追加するコレクションの名前の横にある [詳細を表示 ] をクリックします。
[バージョン ] までスクロールダウンします。
Artifacts バージョンの横にある [表示 ] をクリックします。
[バージョン ] タブ内で、タグの名前にマウスを合わせます。
キャンセルボタン(X アイコン)をクリックします。
既存のタグを検索する
W&B App UIを使用して、コレクションおよび Artifacts バージョンで既存のタグを検索します。
W&B Registry(https://wandb.ai/registry)に移動します。
レジストリカードをクリックします。
検索バーにタグの名前を入力します。
特定のタグを持つ Artifacts バージョンを検索する
W&B Python SDK を使用して、タグのセットを持つ Artifacts バージョンを検索します。
import wandb
api = wandb. Api()
tagged_artifact_versions = api. artifacts(
type_name = "<artifact_type>" ,
name = "<artifact_name>" ,
tags = ["<tag_1>" , "<tag_2>" ]
)
for artifact_version in tagged_artifact_versions:
print(artifact_version. tags)
9 - Annotate collections
コレクションに人に優しいテキストを追加して、ユーザーがコレクションの目的とそれに含まれる Artifacts を理解できるようにします。
コレクションによっては、トレーニングデータ、モデルアーキテクチャー、タスク、ライセンス、参考文献、およびデプロイメントに関する情報を含めることをお勧めします。以下に、コレクションでドキュメント化する価値のあるトピックをいくつか示します。
W&B は、少なくとも以下の詳細を含めることを推奨します。
Summary : コレクションの目的。機械学習実験に使用される機械学習 フレームワーク。
License : 機械学習 モデルの使用に関連する法的条件と許可。これにより、モデルの ユーザー は、モデルを利用できる法的枠組みを理解できます。一般的なライセンスには、Apache 2.0、MIT、GPL などがあります。
References : 関連する 研究 論文、データセット、または外部リソースへの引用または参照。
コレクションにトレーニングデータが含まれている場合は、次の詳細を含めることを検討してください。
Training data : 使用されるトレーニングデータを記述します。
Processing : トレーニングデータセットに対して行われた処理。
Data storage : そのデータはどこに保存され、どのようにアクセスするか。
コレクションに機械学習 モデルが含まれている場合は、次の詳細を含めることを検討してください。
Architecture : モデルアーキテクチャー、レイヤー、および特定の設計の選択に関する情報。
Task : コレクション モデル が実行するように設計されているタスクまたは問題の特定のタイプ。これは、モデルの意図された機能を分類したものです。
Deserialize the model : チームの誰かがモデルをメモリーにロードする方法に関する情報を提供します。
Task : 機械学習 モデル が実行するように設計されているタスクまたは問題の特定のタイプ。これは、モデルの意図された機能を分類したものです。
Deployment : モデルがどのように、どこにデプロイされるかの詳細、およびワークフロー オーケストレーション プラットフォームなどの他のエンタープライズ システムにモデルを統合する方法に関するガイダンス。
コレクションに説明を追加する
W&B Registry UI または Python SDK を使用して、コレクションにインタラクティブまたはプログラムで説明を追加します。
W&B Registry UI
Python SDK
https://wandb.ai/registry/ で W&B Registry に移動します。
コレクションをクリックします。
コレクション名の横にある [詳細を表示 ] を選択します。
[Description ] フィールドに、コレクションに関する情報を入力します。Markdown markup language でテキストの書式を設定します。
wandb.Api().artifact_collection()
メソッドを使用して、コレクションの説明にアクセスします。返されたオブジェクトの description
プロパティを使用して、コレクションに説明を追加または更新します。
type_name
パラメータにコレクションのタイプを指定し、name
パラメータにコレクションのフルネームを指定します。コレクションの名前は、プレフィックス “wandb-registry”、レジストリの名前、およびフォワード スラッシュで区切られたコレクションの名前で構成されます。
wandb-registry-{REGISTRY_NAME}/{COLLECTION_NAME}
次のコード スニペットを Python スクリプトまたは ノートブック にコピーして貼り付けます。山かっこ (<>
) で囲まれた値を独自の値に置き換えます。
import wandb
api = wandb. Api()
collection = api. artifact_collection(
type_name = "<collection_type>" ,
name = "<collection_name>"
)
collection. description = "This is a description."
collection. save()
たとえば、次の画像は、モデルのアーキテクチャー、意図された使用法、パフォーマンス情報などを文書化したコレクションを示しています。
10 - Create and view lineage maps
W&B Registry で リネージ マップを作成します。
W&B Registry内のコレクションでは、ML 実験で使用される Artifacts の履歴を表示できます。この履歴は リネージグラフ と呼ばれます。
コレクションの一部ではない、W&B に記録した Artifacts のリネージグラフも表示できます。
リネージグラフは、Artifacts を記録する特定の run を示すことができます。さらに、リネージグラフは、どの run が Artifacts を入力として使用したかを示すこともできます。言い換えれば、リネージグラフは run の入力と出力を示すことができます。
たとえば、以下の画像は、ML 実験全体で作成および使用された Artifacts を示しています。
左から右へ、画像は以下を示しています。
複数の runs が split_zoo_dataset:v4
アーティファクトを記録します。
“rural-feather-20” run は、トレーニングに split_zoo_dataset:v4
アーティファクトを使用します。
“rural-feather-20” run の出力は、zoo-ylbchv20:v0
というモデルアーティファクトです。
“northern-lake-21” という run は、モデルアーティファクト zoo-ylbchv20:v0
を使用してモデルを評価します。
run の入力を追跡する
wandb.init.use_artifact
API を使用して、Artifacts を run の入力または依存関係としてマークします。
以下のコードスニペットは、use_artifact
の使用方法を示しています。山括弧 (< >
) で囲まれた値を自分の値に置き換えてください。
import wandb
# Initialize a run
run = wandb. init(project= "<project>" , entity= "<entity>" )
# Get artifact, mark it as a dependency
artifact = run. use_artifact(artifact_or_name= "<name>" , aliases= "<alias>" )
run の出力を追跡する
Artifacts を run の出力として宣言するには、(wandb.init.log_artifact
) を使用します。
以下のコードスニペットは、wandb.init.log_artifact
API の使用方法を示しています。山括弧 (< >
) で囲まれた値を必ず自分の値に置き換えてください。
import wandb
# Initialize a run
run = wandb. init(entity "<entity>" , project = "<project>" ,)
artifact = wandb. Artifact(name = "<artifact_name>" , type = "<artifact_type>" )
artifact. add_file(local_path = "<local_filepath>" , name= "<optional-name>" )
# Log the artifact as an output of the run
run. log_artifact(artifact_or_path = artifact)
Artifacts の作成に関する詳細については、Artifacts の作成 を参照してください。
コレクションでリネージグラフを表示する
W&B Registry でコレクションにリンクされた Artifacts のリネージを表示します。
W&B Registry に移動します。
Artifacts を含むコレクションを選択します。
ドロップダウンから、リネージグラフを表示する Artifacts のバージョンをクリックします。
「リネージ」タブを選択します。
Artifacts のリネージグラフページにアクセスすると、そのリネージグラフ内の任意のノードに関する追加情報を表示できます。
run の ID、run の名前、run の状態など、その run の詳細を表示するには、run ノードを選択します。例として、以下の画像は rural-feather-20
run に関する情報を示しています。
Artifacts のフルネーム、タイプ、作成時間、および関連するエイリアスなど、その Artifacts の詳細を表示するには、Artifacts ノードを選択します。
11 - Migrate from legacy Model Registry
W&B は、レガシーな W&B Model Registry から新しい W&B Registry へとアセットを移行します。この移行は完全に W&B によって管理およびトリガーされ、 ユーザー からの介入は必要ありません。この プロセス は、既存の ワークフロー を最小限に中断するように、可能な限りシームレスになるように設計されています。
移行は、新しい W&B Registry が Model Registry で現在利用可能なすべての機能を含むと実行されます。W&B は、現在の ワークフロー 、 コード ベース、および参照を保持しようとします。
この ガイド は生きたドキュメントであり、より多くの情報が利用可能になるにつれて定期的に更新されます。ご質問やサポートについては、support@wandb.com までお問い合わせください。
W&B Registry は、従来の Model Registry とどのように異なりますか
W&B Registry は、 モデル 、 データセット 、およびその他の アーティファクト を管理するための、より堅牢で柔軟な 環境 を提供するように設計された、さまざまな新機能と拡張機能を紹介します。
レガシー Model Registry を表示するには、W&B アプリ の Model Registry に移動します。ページの上部にバナーが表示され、レガシー Model Registry アプリ UI を使用できます。
組織の可視性
レガシー Model Registry にリンクされた Artifacts は、 チーム レベルの可視性を持ちます。これは、 チーム の メンバー のみがレガシー W&B Model Registry で Artifacts を表示できることを意味します。W&B Registry は、組織レベルの可視性を持ちます。これは、適切な 権限 を持つ組織全体の メンバー が、 レジストリ にリンクされた Artifacts を表示できることを意味します。
レジストリ への可視性を制限する
カスタム レジストリ を表示および アクセス できる ユーザー を制限します。カスタム レジストリ を作成するとき、またはカスタム レジストリ を作成した後に、 レジストリ への可視性を制限できます。制限された レジストリ では、選択された メンバー のみ コンテンツ に アクセス でき、 プライバシー と制御を維持します。レジストリ の可視性の詳細については、レジストリ の可視性タイプ を参照してください。
カスタム レジストリ を作成する
従来の Model Registry とは異なり、W&B Registry は モデル または データセット レジストリ に限定されません。特定の ワークフロー または プロジェクト のニーズに合わせて調整されたカスタム レジストリ を作成でき、任意の オブジェクト タイプを保持できます。この柔軟性により、 チーム は独自の要件に従って Artifacts を整理および管理できます。カスタム レジストリ の作成方法の詳細については、カスタム レジストリ を作成する を参照してください。
カスタム アクセス 制御
各 レジストリ は詳細な アクセス 制御をサポートしており、 メンバー には管理者、 メンバー 、または閲覧者などの特定の ロール を割り当てることができます。管理者は、 メンバー の追加または削除、 ロール の設定、可視性の構成など、 レジストリ の 設定 を管理できます。これにより、 チーム は レジストリ 内の Artifacts を表示、管理、および操作できる ユーザー を確実に制御できます。
用語の更新
登録済み モデル は、コレクション と呼ばれるようになりました。
変更の概要
レガシー W&B Model Registry
W&B Registry
Artifact の可視性
チーム の メンバー のみ Artifacts を表示または アクセス できます
組織内の メンバー は、適切な 権限 を持っていれば、 レジストリ にリンクされた Artifacts を表示または アクセス できます
カスタム アクセス 制御
利用不可
利用可能
カスタム レジストリ
利用不可
利用可能
用語の更新
モデル バージョン への ポインター (リンク)の セット は、*登録済み モデル *と呼ばれます。
アーティファクト バージョン への ポインター (リンク)の セット は、コレクション と呼ばれます。
wandb.init.link_model
Model Registry 固有の API
現在、レガシー Model Registry とのみ互換性があります
移行の準備
W&B は、登録済みの モデル (現在はコレクションと呼ばれています)と、関連する Artifacts バージョン を、レガシー Model Registry から W&B Registry に移行します。この プロセス は自動的に実行され、 ユーザー からの アクション は必要ありません。
チーム の可視性から組織の可視性へ
移行後、 モデル レジストリ は組織レベルの可視性を持つようになります。 ロール を割り当てる ことで、 レジストリ への アクセス 権を持つ ユーザー を制限できます。これにより、特定の メンバー のみが特定の レジストリ に アクセス できるようになります。
移行により、レガシー W&B Model Registry 内の現在の チーム レベルの登録済み モデル (まもなくコレクションと呼ばれるようになります)の既存の 権限 境界が保持されます。レガシー Model Registry で現在定義されている 権限 は、新しい Registry で保持されます。これは、現在特定の チーム メンバー に制限されているコレクションが、移行中および移行後も保護された状態を維持することを意味します。
Artifacts パスの継続性
現在、 アクション は必要ありません。
移行中
W&B は移行 プロセス を開始します。移行は、W&B サービス の中断を最小限に抑える時間帯に実行されます。レガシー Model Registry は、移行が開始されると読み取り専用状態に移行し、参照用に アクセス 可能な状態を維持します。
移行後
移行後、コレクション、 Artifacts バージョン 、および関連する 属性 は、新しい W&B Registry 内で完全に アクセス 可能になります。焦点は、現在の ワークフロー が確実にそのまま残るようにすることであり、変更をナビゲートするのに役立つ継続的なサポートが利用可能です。
新しい レジストリ を使用する
ユーザー は、W&B Registry で利用可能な新機能と性能を調査することをお勧めします。Registry は、現在依存している機能をサポートするだけでなく、カスタム レジストリ 、可視性の向上、柔軟な アクセス 制御などの拡張機能も導入します。
早期に W&B Registry を試してみたい場合、または新しい ユーザー がレガシー W&B Model Registry ではなく Registry から開始したい場合は、サポートをご利用いただけます。この機能を有効にするには、support@wandb.com またはセールス MLE までご連絡ください。早期移行は BETA バージョン に移行することに注意してください。BETA バージョン の W&B Registry は、レガシー Model Registry のすべての機能または特徴を備えていない可能性があります。
詳細および W&B Registry のすべての機能の詳細については、W&B Registry ガイド を参照してください。
よくある質問
W&B が Model Registry から W&B Registry に アセット を移行するのはなぜですか?
W&B は、新しい Registry でより高度な機能と性能を提供するために、 プラットフォーム を進化させています。この移行は、 モデル 、 データセット 、およびその他の Artifacts を管理するための、より統合された強力な ツール セット を提供するためのステップです。
移行前に何をする必要がありますか?
移行前に ユーザー が行う必要のある アクション はありません。W&B が移行を処理し、 ワークフロー と参照が確実に保持されるようにします。
モデル Artifacts への アクセス は失われますか?
いいえ、 モデル Artifacts への アクセス は移行後も保持されます。レガシー Model Registry は読み取り専用状態のままになり、関連するすべての データ が新しい Registry に移行されます。
Artifacts に関連する メタデータ は保持されますか?
はい、 Artifacts の作成、 リネージ 、およびその他の 属性 に関連する重要な メタデータ は、移行中に保持されます。ユーザー は、移行後も関連するすべての メタデータ に引き続き アクセス でき、 Artifacts の 整合性 とトレーサビリティが確実に維持されるようにします。
ヘルプが必要な場合は誰に連絡すればよいですか?
ご質問やご不明な点がございましたら、サポートをご利用いただけます。サポートが必要な場合は、support@wandb.com までご連絡ください。
12 - Model registry
モデルレジストリを使用して、トレーニングからプロダクションまでのモデルのライフサイクルを管理します。
W&B は最終的に W&B Model Registry のサポートを停止します。 ユーザー は、代わりにモデルアーティファクトの バージョン をリンクおよび共有するために、W&B Registry を使用することをお勧めします。 W&B Registry は、従来の W&B Model Registry の機能を拡張します。 W&B Registry の詳細については、Registry のドキュメント を参照してください。
W&B は、従来の Model Registry にリンクされている既存のモデルアーティファクトを、近い将来、新しい W&B Registry に移行します。 移行 プロセス の詳細については、従来の Model Registry からの移行 を参照してください。
W&B Model Registry には、 ML 実践者がプロダクション 用の候補を公開し、ダウンストリーム の チーム や関係者が利用できる、 チーム がトレーニング したモデルが格納されています。 これは、ステージング されたモデル/候補モデルを格納し、ステージング に関連する ワークフロー を管理するために使用されます。
W&B Model Registry では、次のことが可能です。
仕組み
いくつかの簡単なステップで、ステージング されたモデルを追跡および管理します。
モデル バージョン を ログ に記録する : トレーニング スクリプト で、数行の コード を追加して、モデルファイルを Artifacts として W&B に保存します。
パフォーマンス を比較する : ライブ チャート をチェックして、モデル トレーニング と検証からの メトリクス とサンプル 予測 を比較します。 どのモデル バージョン が最も優れた パフォーマンス を発揮したかを特定します。
Registry にリンクする : Python でプログラムで、または W&B UI でインタラクティブに、登録されたモデルにリンクして、最適なモデル バージョン をブックマークします。
次の コード スニペット は、モデルを ログ に記録して Model Registry にリンクする方法を示しています。
import wandb
import random
# Start a new W&B run
run = wandb. init(project= "models_quickstart" )
# Simulate logging model metrics
run. log({"acc" : random. random()})
# Create a simulated model file
with open("my_model.h5" , "w" ) as f:
f. write("Model: " + str(random. random()))
# Log and link the model to the Model Registry
run. link_model(path= "./my_model.h5" , registered_model_name= "MNIST" )
run. finish()
モデルの移行を CI/CD ワークフロー に接続する : 候補モデルを ワークフロー ステージを介して移行し、Webhooks で ダウンストリーム アクション を自動化 します。
開始方法
ユースケース に応じて、次の リソース を調べて W&B Models の使用を開始してください。
2 部構成のビデオ シリーズをご覧ください。
モデルの ログ 記録と登録
Model Registry での モデルの消費とダウンストリーム プロセス の自動化 。
W&B Python SDK コマンド のステップごとの概要については、モデルのウォークスルー を読んで、データセット Artifacts の作成、追跡、および使用に使用できます。
以下について学びます。
Model Registry が ML ワークフロー にどのように適合し、モデル管理にそれを使用する利点については、こちら の レポート を確認してください。
W&B Enterprise Model Management コース を受講して、以下を学びます。
W&B Model Registry を使用して、モデルの管理と バージョン 管理、 リネージ の追跡、およびさまざまなライフサイクル ステージでのモデルのプロモーションを行います。
Webhooks を使用して、モデル管理 ワークフロー を自動化します。
Model Registry が、モデルの 評価、モニタリング 、および デプロイメント のためのモデル開発ライフサイクルにおいて、外部 ML システム および ツール とどのように統合されるかを確認します。
12.1 - Tutorial: Use W&B for model management
W&B を使用して Model Management を行う方法について説明します。
以下のチュートリアルでは、モデルを W&B に記録する方法を紹介します。このチュートリアルを終えるまでに、以下のことができるようになります。
MNIST データセットと Keras フレームワークを使用してモデルを作成し、トレーニングする。
トレーニングしたモデルを W&B の project に記録する
使用したデータセットを作成したモデルへの依存関係としてマークする
モデルを W&B モデルレジストリにリンクする。
レジストリにリンクするモデルのパフォーマンスを評価する
モデルの version を production 用としてマークする。
このガイドに記載されている順序で コード スニペットをコピーしてください。
モデルレジストリに固有ではないコードは、折りたたみ可能なセルに隠されています。
セットアップ
始める前に、このチュートリアルに必要な Python の依存関係をインポートします。
import wandb
import numpy as np
from tensorflow import keras
from tensorflow.keras import layers
from wandb.integration.keras import WandbMetricsLogger
from sklearn.model_selection import train_test_split
W&B の entity を entity
変数に指定します。
データセット Artifact を作成する
まず、データセットを作成します。次の コード スニペットは、MNIST データセットをダウンロードする関数を作成します。
def generate_raw_data (train_size= 6000 ):
eval_size = int(train_size / 6 )
(x_train, y_train), (x_eval, y_eval) = keras. datasets. mnist. load_data()
x_train = x_train. astype("float32" ) / 255
x_eval = x_eval. astype("float32" ) / 255
x_train = np. expand_dims(x_train, - 1 )
x_eval = np. expand_dims(x_eval, - 1 )
print("Generated {} rows of training data." . format(train_size))
print("Generated {} rows of eval data." . format(eval_size))
return (x_train[:train_size], y_train[:train_size]), (
x_eval[:eval_size],
y_eval[:eval_size],
)
# データセットを作成します
(x_train, y_train), (x_eval, y_eval) = generate_raw_data()
次に、データセットを W&B にアップロードします。これを行うには、アーティファクト オブジェクトを作成し、そのアーティファクトにデータセットを追加します。
project = "model-registry-dev"
model_use_case_id = "mnist"
job_type = "build_dataset"
# W&B の run を初期化します
run = wandb. init(entity= entity, project= project, job_type= job_type)
# トレーニングデータ用の W&B テーブルを作成します
train_table = wandb. Table(data= [], columns= [])
train_table. add_column("x_train" , x_train)
train_table. add_column("y_train" , y_train)
train_table. add_computed_columns(lambda ndx, row: {"img" : wandb. Image(row["x_train" ])})
# 評価データ用の W&B テーブルを作成します
eval_table = wandb. Table(data= [], columns= [])
eval_table. add_column("x_eval" , x_eval)
eval_table. add_column("y_eval" , y_eval)
eval_table. add_computed_columns(lambda ndx, row: {"img" : wandb. Image(row["x_eval" ])})
# Artifact オブジェクトを作成します
artifact_name = " {} _dataset" . format(model_use_case_id)
artifact = wandb. Artifact(name= artifact_name, type= "dataset" )
# wandb.WBValue オブジェクトを Artifact に追加します。
artifact. add(train_table, "train_table" )
artifact. add(eval_table, "eval_table" )
# Artifact に加えられた変更を永続化します。
artifact. save()
# W&B にこの run が完了したことを伝えます。
run. finish()
データセットなどのファイルを Artifact に保存すると、モデルの依存関係を追跡できるため、モデルのログを記録する際に役立ちます。
モデルをトレーニングする
前のステップで作成した Artifact データセットを使用してモデルをトレーニングします。
データセット Artifact を run への入力として宣言する
前のステップで作成したデータセット Artifact を W&B の run への入力として宣言します。Artifact を run への入力として宣言すると、特定のモデルのトレーニングに使用されたデータセット (およびデータセットの version) を追跡できるため、モデルのログを記録する際に特に役立ちます。W&B は、収集された情報を使用して、リネージマップ を作成します。
use_artifact
API を使用して、データセット Artifact を run の入力として宣言し、Artifact 自体を取得します。
job_type = "train_model"
config = {
"optimizer" : "adam" ,
"batch_size" : 128 ,
"epochs" : 5 ,
"validation_split" : 0.1 ,
}
# W&B の run を初期化します
run = wandb. init(project= project, job_type= job_type, config= config)
# データセット Artifact を取得します
version = "latest"
name = " {} : {} " . format(" {} _dataset" . format(model_use_case_id), version)
artifact = run. use_artifact(artifact_or_name= name)
# データフレームから特定の内容を取得します
train_table = artifact. get("train_table" )
x_train = train_table. get_column("x_train" , convert_to= "numpy" )
y_train = train_table. get_column("y_train" , convert_to= "numpy" )
モデルの入力と出力を追跡する方法の詳細については、モデルリネージ マップの作成を参照してください。
モデルを定義してトレーニングする
このチュートリアルでは、Keras を使用して MNIST データセットから画像を分類する 2D Convolutional Neural Network (CNN) を定義します。
MNIST データで CNN をトレーニングする
# 設定ディクショナリの値を簡単にアクセスできるように変数に格納します
num_classes = 10
input_shape = (28 , 28 , 1 )
loss = "categorical_crossentropy"
optimizer = run. config["optimizer" ]
metrics = ["accuracy" ]
batch_size = run. config["batch_size" ]
epochs = run. config["epochs" ]
validation_split = run. config["validation_split" ]
# モデルアーキテクチャを作成します
model = keras. Sequential(
[
layers. Input(shape= input_shape),
layers. Conv2D(32 , kernel_size= (3 , 3 ), activation= "relu" ),
layers. MaxPooling2D(pool_size= (2 , 2 )),
layers. Conv2D(64 , kernel_size= (3 , 3 ), activation= "relu" ),
layers. MaxPooling2D(pool_size= (2 , 2 )),
layers. Flatten(),
layers. Dropout(0.5 ),
layers. Dense(num_classes, activation= "softmax" ),
]
)
model. compile(loss= loss, optimizer= optimizer, metrics= metrics)
# トレーニングデータのラベルを生成します
y_train = keras. utils. to_categorical(y_train, num_classes)
# トレーニングセットとテストセットを作成します
x_t, x_v, y_t, y_v = train_test_split(x_train, y_train, test_size= 0.33 )
次に、モデルをトレーニングします。
# モデルをトレーニングします
model. fit(
x= x_t,
y= y_t,
batch_size= batch_size,
epochs= epochs,
validation_data= (x_v, y_v),
callbacks= [WandbCallback(log_weights= True , log_evaluation= True )],
)
最後に、モデルをローカルマシンに保存します。
# モデルをローカルに保存します
path = "model.h5"
model. save(path)
モデルをログに記録してモデルレジストリにリンクする
link_model
API を使用して、モデルの 1 つ以上のファイルを W&B の run に記録し、W&B モデルレジストリ にリンクします。
path = "./model.h5"
registered_model_name = "MNIST-dev"
run. link_model(path= path, registered_model_name= registered_model_name)
run. finish()
registered-model-name
に指定した名前がまだ存在しない場合、W&B は登録済みモデルを作成します。
オプションのパラメータの詳細については、API リファレンスガイドのlink_model
を参照してください。
モデルのパフォーマンスを評価する
1 つ以上のモデルのパフォーマンスを評価するのは一般的な方法です。
まず、前のステップで W&B に保存された評価データセット Artifact を取得します。
job_type = "evaluate_model"
# run を初期化します
run = wandb. init(project= project, entity= entity, job_type= job_type)
model_use_case_id = "mnist"
version = "latest"
# データセット Artifact を取得し、依存関係としてマークします
artifact = run. use_artifact(
" {} : {} " . format(" {} _dataset" . format(model_use_case_id), version)
)
# 目的のデータフレームを取得します
eval_table = artifact. get("eval_table" )
x_eval = eval_table. get_column("x_eval" , convert_to= "numpy" )
y_eval = eval_table. get_column("y_eval" , convert_to= "numpy" )
評価する W&B から モデル version をダウンロードします。use_model
API を使用して、モデルにアクセスしてダウンロードします。
alias = "latest" # エイリアス
name = "mnist_model" # モデル Artifact の名前
# モデルにアクセスしてダウンロードします。ダウンロードした Artifact へのパスを返します
downloaded_model_path = run. use_model(name= f " { name} : { alias} " )
Keras モデルをロードし、損失を計算します。
model = keras. models. load_model(downloaded_model_path)
y_eval = keras. utils. to_categorical(y_eval, 10 )
(loss, _) = model. evaluate(x_eval, y_eval)
score = (loss, _)
最後に、損失メトリクスを W&B の run に記録します。
# # メトリクス、画像、テーブル、または評価に役立つデータを記録します。
run. log(data= {"loss" : (loss, _)})
モデル version を昇格させる
モデル エイリアス を使用して、機械学習 ワークフローの次の段階に向けてモデル version を準備完了としてマークします。各登録済みモデルには、1 つ以上のモデル エイリアスを設定できます。モデル エイリアスは、一度に 1 つのモデル version にのみ属することができます。
たとえば、モデルのパフォーマンスを評価した後、そのモデルが production の準備ができていると確信したとします。そのモデル version を昇格させるには、production
エイリアスをその特定のモデル version に追加します。
production
エイリアスは、モデルを production 準備完了としてマークするために使用される最も一般的なエイリアスの 1 つです。
W&B アプリ UI を使用してインタラクティブに、または Python SDK を使用してプログラムで、モデル version にエイリアスを追加できます。次の手順では、W&B モデルレジストリアプリでエイリアスを追加する方法を示します。
https://wandb.ai/registry/model でモデルレジストリアプリに移動します。
登録済みモデルの名前の横にある [詳細を表示 ] をクリックします。
[バージョン ] セクション内で、昇格させるモデル version の名前の横にある [表示 ] ボタンをクリックします。
[エイリアス ] フィールドの横にあるプラス アイコン ([+ ]) をクリックします。
表示されるフィールドに production
と入力します。
キーボードの Enter キーを押します。
12.2 - Model Registry Terms and Concepts
モデルレジストリ の用語と概念
W&B の モデルレジストリ の主要コンポーネントは、以下の用語で説明されます。モデル バージョン , モデル artifact , そして registered model 。
モデル バージョン
モデル バージョンは、単一のモデル チェックポイント を表します。モデル バージョンは、実験 内におけるモデルとそのファイルの特定時点での スナップショット です。
モデル バージョンは、トレーニング されたモデルを記述するデータと メタデータ の不変の ディレクトリー です。W&B は、モデルの アーキテクチャー と学習済み パラメータ を後で保存(および復元)できるように、モデル バージョンにファイルを追加することをお勧めします。
モデル バージョンは、1つの モデル artifact にのみ属します。モデル バージョンは、ゼロまたは複数の registered model に属することができます。モデル バージョンは、モデル artifact に ログ された順にモデル artifact に保存されます。W&B は、(同じモデル artifact に) ログ するモデルの内容が以前のモデル バージョンと異なる場合、新しいモデル バージョンを自動的に作成します。
モデリング ライブラリ (たとえば、PyTorch や Keras ) によって提供されるシリアル化 プロセス から生成されたファイルをモデル バージョン内に保存します。
モデル エイリアス
モデル エイリアス は、 registered model 内のモデル バージョンを、セマンティックに関連する識別子で一意に識別または参照できる、変更可能な文字列です。エイリアス は、 registered model の 1 つの バージョン にのみ割り当てることができます。これは、 エイリアス がプログラムで使用される場合に一意の バージョン を参照する必要があるためです。また、 エイリアス を使用してモデルの状態 (チャンピオン、候補、本番) をキャプチャすることもできます。
"best"
、"latest"
、"production"
、"staging"
などの エイリアス を使用して、特別な目的を持つモデル バージョン をマークするのが一般的な方法です。
たとえば、モデルを作成し、それに "best"
エイリアス を割り当てるとします。run.use_model
でその特定のモデルを参照できます。
import wandb
run = wandb. init()
name = f " { entity/ project/ model_artifact_name} : { alias} "
run. use_model(name= name)
モデル タグ
モデル タグ は、1 つまたは複数の registered model に属する キーワード または ラベル です。
モデル タグ を使用して、 registered model を カテゴリ に整理し、 モデルレジストリ の検索バーでそれらの カテゴリ を検索します。モデル タグ は、 Registered Model Card の上部に表示されます。これらを使用して、 registered model を ML タスク 、所有 チーム 、または 優先度 でグループ化することもできます。同じモデル タグ を複数の registered model に追加して、グループ化できます。
モデル タグ は、グループ化と発見可能性のために registered model に適用される ラベル であり、
モデル エイリアス とは異なります。モデル エイリアス は、プログラムでモデル バージョン を取得するために使用する一意の識別子または ニックネーム です。タグ を使用して モデルレジストリ 内の タスク を整理する方法の詳細については、
モデル の整理 を参照してください。
モデル artifact
モデル artifact は、 ログ された モデル バージョン のコレクションです。モデル バージョンは、モデル artifact に ログ された順にモデル artifact に保存されます。
モデル artifact には、1 つ以上のモデル バージョン を含めることができます。モデル バージョン が ログ されていない場合、モデル artifact は空になる可能性があります。
たとえば、モデル artifact を作成するとします。モデル トレーニング 中に、 チェックポイント 中にモデルを定期的に保存します。各 チェックポイント は、独自の モデル バージョン に対応します。モデル トレーニング 中に作成され、 チェックポイント の保存されたすべてのモデル バージョン は、 トレーニング スクリプト の開始時に作成した同じモデル artifact に保存されます。
次の図は、v0、v1、v2 の 3 つのモデル バージョン を含むモデル artifact を示しています。
モデル artifact の例はこちら でご覧ください。
Registered model
Registered model は、モデル バージョン への ポインタ (リンク) のコレクションです。registered model は、同じ ML タスク の候補モデルの「 ブックマーク 」の フォルダー と考えることができます。registered model の各「 ブックマーク 」は、モデル artifact に属する モデル バージョン への ポインタ です。モデル タグ を使用して、 registered model をグループ化できます。
Registered model は、多くの場合、単一のモデリング ユースケース または タスク の候補モデルを表します。たとえば、使用するモデルに基づいて、さまざまな 画像分類 タスク の registered model を作成する場合があります:ImageClassifier-ResNet50
、ImageClassifier-VGG16
、DogBreedClassifier-MobileNetV2
など。モデル バージョン には、 registered model にリンクされた順に バージョン 番号が割り当てられます。
Registered Model の例はこちら でご覧ください。
12.3 - Track a model
W&B Python SDK で、 モデル 、 モデル の依存関係、およびその モデル に関連するその他の情報を追跡します。
W&B Python SDKで、モデル、モデルの依存関係、およびそのモデルに関連するその他の情報を追跡します。
W&Bは内部で、モデル Artifact のリネージを作成します。これは、W&B App UIで表示したり、W&B Python SDKでプログラム的に表示したりできます。詳細については、モデルリネージマップの作成 を参照してください。
モデルをログに記録する方法
モデルをログに記録するには、run.log_model
APIを使用します。モデルファイルが保存されているパスを path
パラメータに指定します。パスは、ローカルファイル、ディレクトリー、または s3://bucket/path
などの外部バケットへの参照URI にすることができます。
オプションで、name
パラメータにモデル Artifactの名前を指定します。name
が指定されていない場合、W&Bはrun IDを先頭に付加した入力パスのベース名を使用します。
以下のコードスニペットをコピーして貼り付けます。<>
で囲まれた値は、ご自身の値に置き換えてください。
import wandb
# W&B runを初期化する
run = wandb. init(project= "<project>" , entity= "<entity>" )
# モデルをログに記録する
run. log_model(path= "<path-to-model>" , name= "<name>" )
例: Keras モデルをW&Bにログする
以下のコード例は、畳み込みニューラルネットワーク (CNN) モデルをW&Bにログする方法を示しています。
import os
import wandb
from tensorflow import keras
from tensorflow.keras import layers
config = {"optimizer" : "adam" , "loss" : "categorical_crossentropy" }
# W&B runを初期化する
run = wandb. init(entity= "charlie" , project= "mnist-project" , config= config)
# トレーニングアルゴリズム
loss = run. config["loss" ]
optimizer = run. config["optimizer" ]
metrics = ["accuracy" ]
num_classes = 10
input_shape = (28 , 28 , 1 )
model = keras. Sequential(
[
layers. Input(shape= input_shape),
layers. Conv2D(32 , kernel_size= (3 , 3 ), activation= "relu" ),
layers. MaxPooling2D(pool_size= (2 , 2 )),
layers. Conv2D(64 , kernel_size= (3 , 3 ), activation= "relu" ),
layers. MaxPooling2D(pool_size= (2 , 2 )),
layers. Flatten(),
layers. Dropout(0.5 ),
layers. Dense(num_classes, activation= "softmax" ),
]
)
model. compile(loss= loss, optimizer= optimizer, metrics= metrics)
# モデルを保存
model_filename = "model.h5"
local_filepath = "./"
full_path = os. path. join(local_filepath, model_filename)
model. save(filepath= full_path)
# モデルをログに記録する
run. log_model(path= full_path, name= "MNIST" )
# W&B に run を終了することを明示的に伝える。
run. finish()
12.4 - Create a registered model
モデリングタスクのすべての候補モデルを保持するために、登録済み モデル を作成します。
モデリングタスクのすべての候補モデルを保持するために、registered model を作成します。 registered model は、Model Registry 内でインタラクティブに、または Python SDK でプログラム的に作成できます。
プログラムで registered model を作成する
W&B Python SDK でモデルをプログラム的に登録します。 registered model が存在しない場合、W&B は自動的に registered model を作成します。
必ず、<>
で囲まれた値を独自の値に置き換えてください。
import wandb
run = wandb. init(entity= "<entity>" , project= "<project>" )
run. link_model(path= "<path-to-model>" , registered_model_name= "<registered-model-name>" )
run. finish()
registered_model_name
に指定した名前は、Model Registry App に表示される名前です。
インタラクティブに registered model を作成する
Model Registry App 内でインタラクティブに registered model を作成します。
https://wandb.ai/registry/model で Model Registry App に移動します。
Model Registry ページの右上にある New registered model ボタンをクリックします。
表示される パネル で、registered model が属する Entities を Owning Entity ドロップダウンから選択します。
Name フィールドにモデルの名前を入力します。
Type ドロップダウンから、registered model にリンクする Artifacts のタイプを選択します。
(オプション)Description フィールドにモデルに関する説明を追加します。
(オプション)Tags フィールドに、1 つ以上のタグを追加します。
Register model をクリックします。
モデルを Model Registry に手動でリンクすることは、1 回限りのモデルに役立ちます。ただし、多くの場合、プログラムでモデルバージョンを Model Registry にリンクする ことが役立ちます。
たとえば、毎晩のジョブがあるとします。毎晩作成されるモデルを手動でリンクするのは面倒です。代わりに、モデルを評価するスクリプトを作成し、モデルのパフォーマンスが向上した場合、W&B Python SDK を使用してそのモデルを Model Registry にリンクすることができます。
12.5 - Link a model version
W&B App を使用するか、Python SDK でプログラム的に モデル の バージョン を Registered Model にリンクします。
W&B App または Python SDK で、モデルのバージョンを登録済みモデルにリンクします。
プログラムでモデルをリンクする
link_model
メソッドを使用して、モデルファイルをプログラムで W&B の run に ログ し、それをW&B モデルレジストリ にリンクします。
必ず <>
で囲まれた値を独自の値に置き換えてください。
import wandb
run = wandb. init(entity= "<entity>" , project= "<project>" )
run. link_model(path= "<path-to-model>" , registered_model_name= "<登録済みモデル名>" )
run. finish()
registered-model-name
パラメータに指定した名前がまだ存在しない場合、W&B によって登録済みモデルが作成されます。
たとえば、モデルレジストリに「Fine-Tuned-Review-Autocompletion 」(registered-model-name="Fine-Tuned-Review-Autocompletion"
) という名前の既存の登録済みモデルがあるとします。また、いくつかのモデルバージョンがそれ(v0
、v1
、v2
)にリンクされているとします。新しいモデルをプログラムでリンクし、同じ登録済みモデル名 (registered-model-name="Fine-Tuned-Review-Autocompletion"
) を使用すると、W&B はこのモデルを既存の登録済みモデルにリンクし、モデルバージョン v3
を割り当てます。この名前の登録済みモデルが存在しない場合は、新しい登録済みモデルが作成され、モデルバージョン v0
が割り当てられます。
“Fine-Tuned-Review-Autocompletion” 登録済みモデルの例はこちら をご覧ください。
インタラクティブにモデルをリンクする
モデルレジストリ または Artifact ブラウザを使用して、インタラクティブにモデルをリンクします。
https://wandb.ai/registry/model のモデルレジストリ App に移動します。
新しいモデルをリンクする登録済みモデルの名前の横にマウスを置きます。
詳細を表示 の横にあるミートボールメニューアイコン (3 つの水平ドット) を選択します。
ドロップダウンから、新しいバージョンをリンク を選択します。
Project ドロップダウンから、モデルを含む project の名前を選択します。
モデル Artifact ドロップダウンから、モデル artifact の名前を選択します。
バージョン ドロップダウンから、登録済みモデルにリンクするモデル バージョンを選択します。
W&B App の project の Artifact ブラウザに移動します: https://wandb.ai/<entity>/<project>/artifacts
左側のサイドバーにある Artifacts アイコンを選択します。
レジストリにリンクするモデル バージョンをクリックします。
バージョンの概要 セクション内で、レジストリにリンク ボタンをクリックします。
画面の右側に表示されるモーダルから、登録済みモデルを選択 メニューのドロップダウンから登録済みモデルを選択します。
次のステップ をクリックします。
(オプション) エイリアス ドロップダウンからエイリアスを選択します。
レジストリにリンク をクリックします。
リンクされたモデルのソースを表示する
リンクされたモデルのソースを表示する方法は 2 つあります。モデルが ログ されている project 内の Artifact ブラウザと W&B モデルレジストリです。
ポインタは、モデルレジストリ内の特定のモデルバージョンをソース モデル artifact (モデルが ログ されている project 内にある) に接続します。ソース モデル artifact には、モデルレジストリへのポインタもあります。
https://wandb.ai/registry/model でモデルレジストリに移動します。
登録済みモデルの名前の横にある 詳細を表示 を選択します。
バージョン セクション内で、調査するモデルバージョンの横にある 表示 を選択します。
右側の パネル 内の バージョン タブをクリックします。
バージョンの概要 セクション内に、ソースバージョン フィールドを含む行があります。ソースバージョン フィールドには、モデルの名前とモデルのバージョンの両方が表示されます。
たとえば、次の図は、MNIST-dev
という名前の登録済みモデルにリンクされた mnist_model
という名前の v0
モデル バージョンを示しています (ソースバージョン フィールド mnist_model:v0
を参照)。
W&B App の project の Artifact ブラウザに移動します: https://wandb.ai/<entity>/<project>/artifacts
左側のサイドバーにある Artifacts アイコンを選択します。
Artifacts パネルから モデル ドロップダウン メニューを展開します。
モデルレジストリにリンクされているモデルの名前とバージョンを選択します。
右側の パネル 内の バージョン タブをクリックします。
バージョンの概要 セクション内に、リンク先 フィールドを含む行があります。リンク先 フィールドには、登録済みモデルの名前と、それが持つバージョン (registered-model-name:version
) の両方が表示されます。
たとえば、次の図では、MNIST-dev
という名前の登録済みモデルがあります (リンク先 フィールドを参照)。バージョン v0
(mnist_model:v0
) を持つ mnist_model
という名前のモデル バージョンは、MNIST-dev
登録済みモデルを指しています。
12.6 - Organize models
モデルタグを使用すると、登録されたモデルをカテゴリに分類し、それらのカテゴリを検索できます。
https://wandb.ai/registry/model の W&B Model Registry アプリケーションに移動します。
モデルタグを追加する登録済みモデルの名前の横にある View details(詳細を見る) を選択します。
Model card(モデルカード) セクションまでスクロールします。
Tags(タグ) フィールドの横にあるプラスボタン(+ )をクリックします。
タグの名前を入力するか、既存のモデルタグを検索します。
たとえば、次の図は、FineTuned-Review-Autocompletion という登録済みモデルに追加された複数のモデルタグを示しています。
12.7 - Create model lineage map
このページでは、従来の W&B Model Registry でリネージグラフを作成する方法について説明します。W&B Registry のリネージグラフについては、リネージマップの作成と表示 を参照してください。
モデル アーティファクト を W&B に ログ 記録する便利な機能は、リネージグラフです。リネージグラフは、 run によって ログ 記録された アーティファクト と、特定の run で使用された アーティファクト を示します。
つまり、モデル アーティファクト を ログ 記録すると、少なくともモデル アーティファクト を使用または生成した W&B の run を表示できます。依存関係を追跡する 場合、モデル アーティファクト で使用される入力も表示されます。
たとえば、次の図は、ML 実験 全体で作成および使用された アーティファクト を示しています。
左から右へ、画像は以下を示しています。
jumping-monkey-1
W&B run は、mnist_dataset:v0
データセット アーティファクト を作成しました。
vague-morning-5
W&B run は、mnist_dataset:v0
データセット アーティファクト を使用してモデルをトレーニングしました。この W&B run の出力は、mnist_model:v0
というモデル アーティファクト でした。
serene-haze-6
という run は、モデル アーティファクト ( mnist_model:v0
) を使用してモデルを評価しました。
アーティファクト の依存関係を追跡する
use_artifact
API を使用して、データセット アーティファクト を W&B run への入力として宣言し、依存関係を追跡します。
次の コード スニペット は、use_artifact
API の使用方法を示しています。
# run を初期化する
run = wandb. init(project= project, entity= entity)
# アーティファクト を取得し、依存関係としてマークします
artifact = run. use_artifact(artifact_or_name= "name" , aliases= "<alias>" )
アーティファクト を取得したら、その アーティファクト を使用して (たとえば) モデルのパフォーマンスを評価できます。
例: モデルをトレーニングし、データセット をモデルの入力として追跡します
job_type = "train_model"
config = {
"optimizer" : "adam" ,
"batch_size" : 128 ,
"epochs" : 5 ,
"validation_split" : 0.1 ,
}
run = wandb. init(project= project, job_type= job_type, config= config)
version = "latest"
name = " {} : {} " . format(" {} _dataset" . format(model_use_case_id), version)
artifact = run. use_artifact(name)
train_table = artifact. get("train_table" )
x_train = train_table. get_column("x_train" , convert_to= "numpy" )
y_train = train_table. get_column("y_train" , convert_to= "numpy" )
# config 辞書 からの値を簡単にアクセスできるように変数に格納します
num_classes = 10
input_shape = (28 , 28 , 1 )
loss = "categorical_crossentropy"
optimizer = run. config["optimizer" ]
metrics = ["accuracy" ]
batch_size = run. config["batch_size" ]
epochs = run. config["epochs" ]
validation_split = run. config["validation_split" ]
# モデル アーキテクチャ を作成する
model = keras. Sequential(
[
layers. Input(shape= input_shape),
layers. Conv2D(32 , kernel_size= (3 , 3 ), activation= "relu" ),
layers. MaxPooling2D(pool_size= (2 , 2 )),
layers. Conv2D(64 , kernel_size= (3 , 3 ), activation= "relu" ),
layers. MaxPooling2D(pool_size= (2 , 2 )),
layers. Flatten(),
layers. Dropout(0.5 ),
layers. Dense(num_classes, activation= "softmax" ),
]
)
model. compile(loss= loss, optimizer= optimizer, metrics= metrics)
# トレーニング データ のラベルを生成する
y_train = keras. utils. to_categorical(y_train, num_classes)
# トレーニング セット と テスト セット を作成する
x_t, x_v, y_t, y_v = train_test_split(x_train, y_train, test_size= 0.33 )
# モデルをトレーニングする
model. fit(
x= x_t,
y= y_t,
batch_size= batch_size,
epochs= epochs,
validation_data= (x_v, y_v),
callbacks= [WandbCallback(log_weights= True , log_evaluation= True )],
)
# モデルをローカルに保存する
path = "model.h5"
model. save(path)
path = "./model.h5"
registered_model_name = "MNIST-dev"
name = "mnist_model"
run. link_model(path= path, registered_model_name= registered_model_name, name= name)
run. finish()
12.8 - Document machine learning model
モデルカード に説明を追加して、 モデル を文書化します。
登録済みモデルのモデルカードに説明を追加して、 機械学習 モデルの側面を文書化します。文書化する価値のあるトピックには、次のものがあります。
概要 : モデルの概要。モデルの目的。モデルが使用する 機械学習 フレームワークなど。
トレーニングデータ : 使用したトレーニングデータ、トレーニングデータセットで実行された処理、そのデータの保存場所などを記述します。
アーキテクチャー : モデルアーキテクチャー、レイヤー、および特定の設計の選択に関する情報。
モデルのデシリアライズ : チームの誰かがモデルをメモリーにロードする方法に関する情報を提供します。
タスク : 機械学習 モデルが実行するように設計されている特定のタイプのタスクまたは問題。モデルの意図された機能の分類です。
ライセンス : 機械学習 モデルの使用に関連する法的条件と許可。モデル ユーザーがモデルを利用できる法的枠組みを理解するのに役立ちます。
参考文献 : 関連する 研究 論文、データセット、または外部リソースへの引用または参考文献。
デプロイメント : モデルのデプロイ方法と場所の詳細、および ワークフロー オーケストレーション プラットフォーム などの他のエンタープライズ システムへのモデルの統合方法に関するガイダンス。
モデルカードに説明を追加する
https://wandb.ai/registry/model にある W&B Model Registry アプリケーションに移動します。
モデルカードを作成する登録済みモデルの名前の横にある [詳細を表示 ] を選択します。
[モデルカード ] セクションに移動します。
[説明 ] フィールドに、 機械学習 モデルに関する情報を提供します。Markdown マークアップ言語 を使用して、モデルカード内のテキストの書式を設定します。
たとえば、次の図は、Credit-card Default Prediction 登録済みモデルのモデルカードを示しています。
12.9 - Download a model version
W&B Python SDK でモデルをダウンロードする方法
W&B Python SDK を使用して、Model Registry にリンクしたモデル artifact をダウンロードします。
モデルを再構築し、デシリアライズして、操作できる形式にするための追加の Python 関数、API 呼び出しはお客様の責任で提供する必要があります。
W&B では、モデルをメモリにロードする方法に関する情報をモデルカードに記載することをお勧めします。詳細については、機械学習モデルのドキュメント ページを参照してください。
<>
内の values はお客様ご自身のものに置き換えてください。
import wandb
# run を初期化する
run = wandb. init(project= "<project>" , entity= "<entity>" )
# モデルにアクセスしてダウンロードします。ダウンロードした artifact への path を返します
downloaded_model_path = run. use_model(name= "<your-model-name>" )
以下のいずれかの形式でモデル version を参照してください。
latest
- 最新の latest
エイリアスを使用して、最も新しくリンクされたモデル version を指定します。
v#
- v0
、v1
、v2
などを使用して、Registered Model 内の特定の version を取得します
alias
- ユーザー と Teams がモデル version に割り当てたカスタム alias を指定します
可能なパラメータと戻り値の型について詳しくは、API Reference ガイドのuse_model
を参照してください。
例: ログに記録されたモデルをダウンロードして使用する
たとえば、次のコード snippet では、ユーザー が use_model
API を呼び出しました。フェッチするモデル artifact の名前を指定し、version/alias も指定しました。次に、API から返された path を downloaded_model_path
変数に格納しました。
import wandb
entity = "luka"
project = "NLP_Experiments"
alias = "latest" # モデル version のセマンティックなニックネームまたは識別子
model_artifact_name = "fine-tuned-model"
# run を初期化する
run = wandb. init()
# モデルにアクセスしてダウンロードします。ダウンロードした artifact への path を返します
downloaded_model_path = run. use_model(name= f " { entity/ project/ model_artifact_name} : { alias} " )
2024 年に予定されている W&B Model Registry の廃止 次のタブは、まもなく廃止される Model Registry を使用してモデル artifact を消費する方法を示しています。
W&B Registry を使用して、モデル artifact を追跡、整理、消費します。詳細については、Registry docs を参照してください。
<>
内の values はお客様ご自身のものに置き換えてください。
import wandb
# run を初期化する
run = wandb. init(project= "<project>" , entity= "<entity>" )
# モデルにアクセスしてダウンロードします。ダウンロードした artifact への path を返します
downloaded_model_path = run. use_model(name= "<your-model-name>" )
以下のいずれかの形式でモデル version を参照してください。
latest
- 最新の latest
エイリアスを使用して、最も新しくリンクされたモデル version を指定します。
v#
- v0
、v1
、v2
などを使用して、Registered Model 内の特定の version を取得します
alias
- ユーザー と Teams がモデル version に割り当てたカスタム alias を指定します
可能なパラメータと戻り値の型について詳しくは、API Reference ガイドのuse_model
を参照してください。
https://wandb.ai/registry/model にある Model Registry App に移動します。
ダウンロードするモデルが含まれている登録済みモデルの名前の横にある詳細を表示 を選択します。
[Versions] セクションで、ダウンロードするモデル version の横にある [View] ボタンを選択します。
ファイル タブを選択します。
ダウンロードするモデルファイルの横にあるダウンロードボタンをクリックします。
12.10 - Create alerts and notifications
新しい モデル バージョン が モデルレジストリ にリンクされたときに Slack 通知を受け取ります。
新しいモデル バージョンがモデルレジストリにリンクされたときに、Slack通知を受信します。
W&B モデルレジストリのアプリ(https://wandb.ai/registry/model )に移動します。
通知を受信したい Registered Model を選択します。
[Connect Slack ] ボタンをクリックします。
OAuth ページに表示される手順に従って、Slack workspace で W&B を有効にします。
チームの Slack 通知を設定すると、通知を受信する Registered Model を選択できます。
チームの Slack 通知が設定されている場合、[Connect Slack ] ボタンの代わりに、[New model version linked to… ] と表示されるトグルが表示されます。
以下のスクリーンショットは、Slack 通知が設定されている FMNIST 分類器の Registered Model を示しています。
新しいモデル バージョンが FMNIST 分類器の Registered Model にリンクされるたびに、メッセージが接続された Slack チャンネルに自動的に投稿されます。
12.11 - Manage data governance and access control
モデルレジストリのロールベース アクセス制御(RBAC)を使用して、保護されたエイリアスを更新できるユーザーを制御します。
モデル開発 パイプライン の主要な段階を表すために、 保護されたエイリアス を使用します。 モデルレジストリ管理者 のみが、保護されたエイリアスを追加、変更、または削除できます。モデルレジストリ管理者は、保護されたエイリアスを定義して使用できます。W&B は、管理者以外の ユーザー がモデル バージョン から保護されたエイリアスを追加または削除することをブロックします。
Team 管理者または現在のレジストリ管理者のみが、レジストリ管理者のリストを管理できます。
たとえば、 staging
と production
を保護されたエイリアスとして設定するとします。Team のメンバーは誰でも新しいモデル バージョンを追加できます。ただし、管理者のみが staging
または production
エイリアスを追加できます。
アクセス制御の設定
次の手順では、Team の モデルレジストリ の アクセス 制御を設定する方法について説明します。
W&B モデルレジストリ アプリ ( https://wandb.ai/registry/model ) に移動します。
ページの右上にある歯車ボタンを選択します。
[レジストリ管理者の管理 ] ボタンを選択します。
[メンバー ] タブで、モデル バージョン から保護されたエイリアスを追加および削除する アクセス 権を付与する ユーザー を選択します。
保護されたエイリアスの追加
W&B モデルレジストリ アプリ ( https://wandb.ai/registry/model ) に移動します。
ページの右上にある歯車ボタンを選択します。
[保護されたエイリアス ] セクションまで下にスクロールします。
プラス アイコン ( + ) アイコンをクリックして、新しいエイリアスを追加します。