モデルとバージョン
![]()
Modelsの[モデルとバージョン]では、学習した重みをモデルのバージョンとして登録し、Aliasで「今使うバージョン」を指します。バージョンは登録した後に変更できないため、どのRunがどの重みで推論・評価したかを後から確かめられます。
こんなときに向いています
- 学習Runが出力した重みを、どの学習から作ったかと一緒に残したい
- 推論や評価のコードから、バージョン番号ではなく
productionのようなAliasでモデルを指定したい - 新しいバージョンを登録したら、推論と評価を自動で回したい(モデル登録後の自動実行)
- 本番のバージョンを、評価の結果を確かめてから切り替えたい(評価の比較と昇格)
モデル、バージョン、系列、Alias
| 用語 | 内容 |
|---|---|
| モデル | バージョンをまとめる名前です。名前、モデル系列、説明を持ちます。名前と系列は登録後に変更できません |
| バージョン | 1回分の学習結果です。重み(ArtifactまたはURI)、生成元Run、親のバージョン、既定のコードバージョン、Metadataを持ちます。登録後に変更できません |
| モデル系列 | モデルの構造の種類を表す文字列です(例:qwen3、linear)。コードバージョンの[対応モデル系列]、自動実行ルールの[対象モデル系列]と照合し、構造の合わないコードでモデルを動かさないようにします |
| Alias | バージョンを指す名前です(例:production、candidate)。いつ、誰が、どのバージョンからどのバージョンへ変えたかを履歴に残します |
バージョンの項目は次のとおりです。
- 生成元Run: 重みを作った学習Run。バージョンの詳細画面から学習の記録へ移動できます。
- 親のバージョン: fine-tuningの元にしたバージョン。同じ系列のバージョンだけを選べます。
- 重みのArtifact、重みのURI: バージョンの重みの場所。workerは推論・評価の実行前にここから重みを取得します。
- 既定のコードバージョン: このバージョンを動かすときに既定で使うコードバージョン。バージョンの系列に対応するコードバージョンだけを選べます。
モデルを登録する
権限はProjectのeditor以上です。API tokenで登録する場合はregistry:write scopeが必要です。
- Modelsを開き、[モデルを登録]を押します。
- [名前]にモデル名を入力し、[モデル系列]を候補から選びます。例:名前
voice-tts、系列linear。候補には、プロジェクトのモデルとコードバージョンで使っている系列が、使っている件数つきで出ます。新しい系列はそのまま入力します。系列は、使うコードバージョンの[対応モデル系列]と同じ文字列にします。Qwen3とqwen3のように大文字・小文字だけが違う系列は別の系列になり、対応しません。入力すると警告が出ます。 - [保存]を押し、左の一覧に追加されたことを確かめます。
バージョンを登録する
バージョンを登録する方法は5つあります。学習から登録までを自動にするなら、Taskの出力設定か学習コードでの登録を使います。
| 方法 | バージョン名 | 向いている場面 |
|---|---|---|
| 画面の[バージョンを作成] | 空欄なら自動採番 | 外部で作った重みを手で登録する |
| Taskの出力モデル設定 | 自動採番(バージョン名のテンプレートも指定可) | 学習コードを変えずに、成功した学習の重みを登録する |
Python SDKのregister_output_model() | 省略すると自動採番 | 学習コードの中で登録する |
MLflowのregister_model()、log_model(registered_model_name=…) | 自動採番 | MLflow 3 SDKで学習を記録している |
コンテナのresult.json(version 2)のmodels | 自動採番 | SDKを入れていないコンテナで学習する |
画面から登録する
- 左の一覧でモデルを選び、右上の[バージョンを作成]を押します。
- [バージョン]は空欄のままにすると、欄の下に表示した番号(例:「空欄なら 3 を付けます。」)が付きます。名前を付けたいときだけ入力します。
- [生成元Run]で学習Runを選びます。候補は学習・ファインチューニングのRunだけです。
- [重みのArtifact]に生成元RunのArtifactが並ぶので、重みのファイルを押して選びます。保存パスで絞り込めます。Runを選ばないときは、プロジェクトのArtifactを新しい順に表示します。[Artifactをアップロード]からアップロードしたファイルも、そのまま選ばれます。ArtifactのID、または[Artifactをアップロード]の後に表示される
artifact://…を貼り付けても選べます。Artifactにしていない重み(S3など)は[重みのURI]に入力します。 - 必要なら[親のバージョン]と[既定のコードバージョン]を選び、[保存]を押します。対応するコードバージョンが無いときは、[既定のコードバージョン]の下に理由とCodeへのリンクが出ます。
- バージョンの一覧に新しい行が追加され、[最新のバージョン]が変わったことを確かめます。
学習コードから登録する
Python SDKでは、学習Runの中で重みを保存して登録します。model_nameに指定したモデルが無ければ、familyの系列で作成します。
from mado_tracking import Client
with Client() as client:
with client.start_run(
project_id="<project-uuid>",
experiment_id="<experiment-uuid>",
name="train-v3",
kind="training",
) as run:
... # 学習して weights.bin を保存する
artifact = run.log_artifact("weights.bin", path="model/weights.bin")
version = run.register_output_model(
model_name="voice-tts", family="linear", artifact_id=artifact["id"],
)
print(version["version"]) # 自動採番されたバージョン名(例: 3)MLflow 3 SDKで登録する場合は、登録したモデルのtagmmt.model_familyに系列を指定します。接続方法はMLflow 3 SDKで記録するを参照してください。
version = mlflow.register_model(recorded.model_uri, "voice-tts")
loaded = mlflow.pyfunc.load_model("models:/voice-tts@production")バージョンの自動採番
バージョン名を省略すると、モデルごとに1、2、3…と整数で採番します。MLflowの採番と同じ規則です。
- 画面、Python SDK、MLflow、Task、
result.jsonのどこから登録しても、同じモデルの番号は1つの連番になります。交互に登録しても重複しません。 - 削除したバージョンの番号は再利用しません。
10のように整数のバージョン名を指定して登録すると、次の採番は11から始まります。v1のような整数でないバージョン名と、19桁以上の数字のバージョン名は採番の計算に含めません。整数でないバージョン名の既存のバージョンは、そのまま残ります。- 同じバージョン名をもう一度指定すると、登録を拒否します(409)。
Aliasを設定する
![]()
- 左の一覧でモデルを選び、[Aliasを設定]を押します。
- [Alias]にAlias名、[バージョン]に指すバージョンを指定します。例:Alias
production、バージョン3。 - [理由]に切り替えの理由を入力し、[保存]を押します。理由は任意ですが、保護Aliasでは必要になる場合があります。
- Aliasの一覧で、Aliasが指定したバージョンを指していることを確かめます。
Aliasを外すときは、Aliasの一覧の[Aliasを解除]を押します。解除も履歴に残ります。保護aliasには一覧で鍵の印と「保護alias(adminのみ)」のような必要なRoleが付き、権限が足りないときは[Aliasを解除]の代わりに「解除にはProject adminの権限が必要です」と表示されます。合格判定が必須の保護aliasを外せるのは、Project adminだけです。
推論や評価のRunを起動するときにAliasを指定しても、Runに保存されるのはその時点でAliasが指していたバージョンです。後でAliasを別のバージョンへ移しても、過去のRunの記録は変わりません。
[Aliasの履歴]では、日時、旧バージョンと新バージョン、操作者、経路(Web、API、MLflow、昇格policy、バージョンの削除、モデルの削除)を新しい順に確認できます。履歴は追記だけで、変更や削除はできません。
productionのような重要なAliasは、変更できる人と条件を絞れます。設定は評価の比較と昇格を参照してください。
バージョンの詳細を見る
![]()
バージョンの一覧でバージョンの番号を押すと、バージョンの詳細画面が開きます。一覧は新しい順に20件を表示し、[さらに読み込む]で続きを表示します。[Alias]の列には、そのバージョンを指しているAliasが出ます。
モデルの詳細の[この系列に対応するコードバージョン]には、モデル系列を[対応モデル系列]に含むコードバージョンが出ます。Taskや自動実行ルールでこのモデルに選べるのは、これらのコードバージョンです。
- [データセット → 学習Run → バージョン → 推論・評価Run]: 学習で使ったデータセット、バージョンを作った学習Run、そのバージョンで動いた推論・評価Runを1本の図で表示します。推論・評価Runは新しい順に最大20件です。
- [自動実行]: このバージョンをきっかけに動いた自動実行の履歴です。
- [評価結果]: 成功した評価Runの指標の最新値と、基準バージョンとの比較です(評価の比較と昇格)。
- [昇格の判定]: 昇格policyによる、このバージョンの合否です。
Lineageで関係をたどる
![]()
Lineageでは、Project内のデータセットバージョン、Run、MLflow記録モデル、モデルバージョン、コードバージョンの関係を1つの図で表示します。どのデータで学習したバージョンか、どのバージョンがどの推論出力を作ったかを、左から右へたどれます。
検索欄から名前や種類で項目を探し、選択するとその項目につながる線が強調されます。[前後][生成元][生成先]で辿る方向を切り替え、[詳細を開く]または項目の名前から元の画面へ進めます。図はドラッグやスワイプで移動、ホイールやピンチで拡大縮小でき、左下の操作ボタンで全体を表示できます。大きい図では右下の全体図から表示位置を動かせます。
モデルバージョンの詳細でも同じ操作が使えます。狭い画面では関係一覧が先に開き、図はその下に表示されます。言語を切り替えても、検索中の文字や選択は保持されます。
つながりの種類は、データ入力、データ出力、モデル入力、モデル出力、モデル登録、親モデル、親データセット、親Run、実行コードです。図の下の[関係]を開くと、つながりを表で確認できます。表では両端の種類(Run、データセットバージョンなど)が名前の前に出て、名前を押すとそのページへ移ります。
データセットのバージョンの詳細で[Lineageで見る]を押すと、そのバージョンの前後2段だけに絞って表示します。上の[全体を表示]で、Project全体の図に戻ります。
権限
| 操作 | 必要な権限 |
|---|---|
| 一覧・バージョンの詳細・Lineageを見る | viewer以上 |
| モデル・バージョンの登録、Aliasの設定と解除 | editor以上(API tokenはregistry:write) |
| 保護Aliasの変更 | 保護の設定による(保護Alias) |
次に読む
- Taskとコードバージョンで、学習の成功時にバージョンを登録する設定を作ります。
- モデル登録後の自動実行で、登録したバージョンの推論と評価を自動で回します。
既存のモデルに学習元を紐付ける
S3などに保存した重みを登録した後でも、モデルバージョンの詳細の[学習元を紐付け]で学習元を記録できます。モデルのバージョン、重みの保存先、Aliasは保持されます。
[既存の学習Runを選ぶ]では、実際に重みを作った終了済みの学習Runを選びます。まだ記録がなければ、[過去の学習を記録する]でExperiment、実行種別、使用したデータセットの版、学習設定を登録できます。日時が分からないときは空欄にします。この操作で学習Jobは起動しません。
学習元を登録すると、データセットから学習Run、モデル版へつながる来歴が表示されます。一度登録した学習元は上書きできないため、実設定と照合したものを選んでください。同じバッチ名でも、フィルタ済み・未フィルタなど内容が違うデータは別バージョンとして扱います。
Python SDKでも登録できます。model_idとversion_idはMMTに登録済みのID、run_idは同ProjectのMMT RunのIDです。別のTracking serverのRun IDは、evidenceやtagに記録します。
client.associate_model_training_source(
project_id,
model_id,
version_id,
run_id=run_id,
evidence={"recipe": "保存済みの学習設定の参照"},
)合成データも、DatasetsにS3 URIとその参照先のSHA-256を持つ版として登録し、学習Runの入力に指定できます。途中で追加したデータは学習データの履歴に記録します。
モデル詳細のデータセット一覧は、学習Run全体で使った版の集合です。中間checkpointまでに使った構成は、Runの学習データの履歴で開始stepと合わせて確認できます。