Skip to content

モデルとバージョン ​

モデルとバージョンの一覧

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が必要です。

  1. Modelsを開き、[モデルを登録]を押します。
  2. [名前]にモデル名を入力し、[モデル系列]を候補から選びます。例:名前voice-tts、系列linear。候補には、プロジェクトのモデルとコードバージョンで使っている系列が、使っている件数つきで出ます。新しい系列はそのまま入力します。系列は、使うコードバージョンの[対応モデル系列]と同じ文字列にします。Qwen3とqwen3のように大文字・小文字だけが違う系列は別の系列になり、対応しません。入力すると警告が出ます。
  3. [保存]を押し、左の一覧に追加されたことを確かめます。

バージョンを登録する ​

バージョンを登録する方法は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を入れていないコンテナで学習する

画面から登録する ​

  1. 左の一覧でモデルを選び、右上の[バージョンを作成]を押します。
  2. [バージョン]は空欄のままにすると、欄の下に表示した番号(例:「空欄なら 3 を付けます。」)が付きます。名前を付けたいときだけ入力します。
  3. [生成元Run]で学習Runを選びます。候補は学習・ファインチューニングのRunだけです。
  4. [重みのArtifact]に生成元RunのArtifactが並ぶので、重みのファイルを押して選びます。保存パスで絞り込めます。Runを選ばないときは、プロジェクトのArtifactを新しい順に表示します。[Artifactをアップロード]からアップロードしたファイルも、そのまま選ばれます。ArtifactのID、または[Artifactをアップロード]の後に表示されるartifact://…を貼り付けても選べます。Artifactにしていない重み(S3など)は[重みのURI]に入力します。
  5. 必要なら[親のバージョン]と[既定のコードバージョン]を選び、[保存]を押します。対応するコードバージョンが無いときは、[既定のコードバージョン]の下に理由とCodeへのリンクが出ます。
  6. バージョンの一覧に新しい行が追加され、[最新のバージョン]が変わったことを確かめます。

学習コードから登録する ​

Python SDKでは、学習Runの中で重みを保存して登録します。model_nameに指定したモデルが無ければ、familyの系列で作成します。

python
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で記録するを参照してください。

python
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の設定(昇格)ダイアログ

  1. 左の一覧でモデルを選び、[Aliasを設定]を押します。
  2. [Alias]にAlias名、[バージョン]に指すバージョンを指定します。例:Aliasproduction、バージョン3。
  3. [理由]に切り替えの理由を入力し、[保存]を押します。理由は任意ですが、保護Aliasでは必要になる場合があります。
  4. 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画面

Lineageでは、Project内のデータセットバージョン、Run、MLflow記録モデル、モデルバージョン、コードバージョンの関係を1つの図で表示します。どのデータで学習したバージョンか、どのバージョンがどの推論出力を作ったかを、左から右へたどれます。

検索欄から名前や種類で項目を探し、選択するとその項目につながる線が強調されます。[前後][生成元][生成先]で辿る方向を切り替え、[詳細を開く]または項目の名前から元の画面へ進めます。図はドラッグやスワイプで移動、ホイールやピンチで拡大縮小でき、左下の操作ボタンで全体を表示できます。大きい図では右下の全体図から表示位置を動かせます。

モデルバージョンの詳細でも同じ操作が使えます。狭い画面では関係一覧が先に開き、図はその下に表示されます。言語を切り替えても、検索中の文字や選択は保持されます。

つながりの種類は、データ入力、データ出力、モデル入力、モデル出力、モデル登録、親モデル、親データセット、親Run、実行コードです。図の下の[関係]を開くと、つながりを表で確認できます。表では両端の種類(Run、データセットバージョンなど)が名前の前に出て、名前を押すとそのページへ移ります。

データセットのバージョンの詳細で[Lineageで見る]を押すと、そのバージョンの前後2段だけに絞って表示します。上の[全体を表示]で、Project全体の図に戻ります。

権限 ​

操作必要な権限
一覧・バージョンの詳細・Lineageを見るviewer以上
モデル・バージョンの登録、Aliasの設定と解除editor以上(API tokenはregistry:write)
保護Aliasの変更保護の設定による(保護Alias)

次に読む ​

既存のモデルに学習元を紐付ける ​

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に記録します。

python
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と合わせて確認できます。