モデルのログ
このガイドでは、W&Bのrunにモデルをログし、それと対話する方法について説明します。
以下のAPIは、実験管理ワークフローの一部としてモデルを追跡するのに便利です。このページにリストされたAPIを使用して、モデルに加えてメトリクス、テーブル、メディア、その他のオブジェクトを迅速にログすることができます。
W&Bは以下の場合、W&B Artifactsを使用することを推奨します:
- モデル以外のシリアライズされたデータ(データセット、プロンプトなど)の異なるバージョンを作成し、追跡したい場合。
- モデルやその他のオブジェクトのリネージグラフを探索したい場合。
- これらのメソッドで作成されたモデルアーティファクトと対話し、プロパティを更新(メタデータ、エイリアス、説明など)したい場合。
W&B Artifactsや高度なバージョン管理ユースケースの詳細については、Artifactsのドキュメントを参照してください。
このColabノートブックを参照して、このページで説明されているAPIを使用するエンドツーエンドの例を確認してください。
モデルをW&Bのrunにログする
log_model
を使用して、指定したディレクトリー内にコンテンツを含むモデルアーティファクトをログします。log_model
メソッドは、結果として得られるモデルアーティファクトをW&Bのrunの出力としてもマークします。
モデルをW&Bのrunの入力または出力としてマークした場合、そのモデルの依存関係と関連付けを追跡できます。W&BのApp UIでモデルのリネージを表示します。詳細については、Artifactsチャプターのアーティファクトグラフの探索とトラバースページを参照してください。
モデルファイルが保存されているパスをpath
パラメータに提供します。パスはローカルファイル、ディレクトリー、またはs3://bucket/path
のような外部バケットへの参照URIであることができます。
<>
で囲まれた値は自身の値に置き換えてください。
import wandb
# W&Bのrunを初期化
run = wandb.init(project="<your-project>", entity="<your-entity>")
# モデルをログする
run.log_model(path="<path-to-model>", name="<name>")
オプションで、モデルアーティファクトの名前をname
パラメータに提供できます。name
が指定されていない場合、W&Bは入力パスのベース名にrun IDを追加した名前を使用します。
モデルに割り当てた、またはW&Bが割り当てたname
を記憶してください。use_model
メソッドを使用してモデルパスを取得するために名前が必要です。
可能なパラメータの詳細については、APIリファレンスガイドのlog_model
を参照してください。
例:モデルをrunにログする
ログされたモデルをダウンロードして使用
W&Bのrunに以前ログされていたモデルファイルにアクセスし、ダウンロードするためにuse_model
関数を使用します。
取得したいモデルファイルが格納されているモデルアーティファクトの名前を指定します。提供する名前は、既存のログされたモデルアーティファクトの名前と一致する必要があります。
ファイルをlog_model
でログする際にname
を定義しなかった場合、デフォルト名は入力パスのベース名にrun IDを追加されたものになります。
他の値も<>
で囲まれた部分を自身の値に置き換えてください:
import wandb
# runを初期化
run = wandb.init(project="<your-project>", entity="<your-entity>")
# モデルにアクセスしてダウンロード。ダウンロードされたアーティファクトへのパスを返します
downloaded_model_path = run.use_model(name="<your-model-name>")
use_model
関数はダウンロードされたモデルファイルのパスを返します。このパスを追跡し、後でこのモデルをリンクする場合に備えてください。上記のコードスニペットでは、返されたパスがdownloaded_model_path
という変数に格納されています。
例:ログされたモデルをダウンロードして使用
可能なパラメータと返り値の詳細については、APIリファレンスガイドのuse_model
を参照してください。
モデルをW&B Model Registryにログしリンクする
link_model
メソッドを使用して、モデルファイルをW&Bのrunにログし、それをW&B Model Registryにリンクします。登録済みのモデルが存在しない場合、registered_model_name
パラメータに指定した名前で新しいモデルが自動的に作成されます。
モデルをリンクすることは、モデルを集中管理されたチームのリポジトリーに「ブックマーク」または「公開」することに似ています。これにより、チームの他のメンバーがそのモデルを閲覧したり使用したりすることができます。
モデルをリンクすると、そのモデルはModel Registryに複製されません。また、そのモデルがプロジェクトからレジストリに移動することもありません。リンクされたモデルは、プロジェクト内の元のモデルへのポインターです。
Model Registryを使用して、タスクごとに最高のモデルを整理し、モデルのライフサイクルを管理し、MLライフサイクル全体での追跡と監査を簡素化し、Webhooksやジョブで自動化された下流のアクションを実行できます。
Registered Modelは、Model Registryにリンクされたモデルバージョンのコレクションまたはフォルダーです。登録済みのモデルは、通常、単一のモデリングユースケースやタスクの候補モデルを表します。
以下のコードスニペットは、link_model
APIを使用してモデルをリンクする方法を示しています。他の値も<>
で囲まれた部分を自身の値に置き換えてください:
import wandb
run = wandb.init(entity="<your-entity>", project="<your-project>")
run.link_model(path="<path-to-model>", registered_model_name="<registered-model-name>")
run.finish()
オプションのパラメータについての詳細は、APIリファレンスガイドのlink_model
を参照してください。
もしregistered-model-name
がModel Registry内に既に存在する登録済みモデルの名前と一致する場合、モデルはその登録済みモデルにリンクされます。もしそのような登録済みモデルが存在しない場合、新しいものが作成され、モデルは最初にリンクされるものとして扱われます。
例えば、Model Registryに"Fine-Tuned-Review-Autocompletion"という名前の既存の登録済みモデルがあり、そのモデルに既にいくつかのモデルバージョン(v0, v1, v2)がリンクされているとします。link_model
をregistered-model-name="Fine-Tuned-Review-Autocompletion"
で呼び出すと、新しいモデルはこの既存の登録済みモデルにv3としてリンクされます。この名前で登録済みモデルが存在しない場合、新しいものが作成され、新しいモデルはv0としてリンクされます。