評価の比較と昇格
![]()
新しいバージョンの評価結果を、productionが指すバージョン(基準バージョン)の評価と並べて比べられます。昇格policyを作ると、評価Runが終わった時点で合否を判定し、合格したバージョンへAliasを自動で切り替えることもできます。
こんなときに向いています
- 新しいバージョンが今の本番のバージョンより良くなったかを、同じ評価データ・同じ評価コードで比べたい
- 「WERが5%以上下がったら合格」のような基準を決めて、判定を自動にしたい
- 合格したバージョンだけを
productionにしたい。不合格のバージョンを本番にするときは理由を残したい - 誰が、いつ、どの判定を根拠に本番のバージョンを切り替えたかを後から確かめたい
評価結果を比べる
![]()
バージョンの詳細画面の[評価結果]に、そのバージョンの評価Runの指標と、基準バージョンとの比較を表示します。
- [指標の集約]: 成功した評価Runのうち最も新しいものの値と、基準バージョンの値、差の符号です。
- [評価Run]: このバージョンの評価Runの一覧です。自動評価のRunには、どのルールで動いたかを表示します。
- [基準バージョンとの評価比較]: [基準にするバージョン]を選ぶと、指標ごとに候補・基準・差・相対差と、比較に使った正解セットと評価コードバージョンを表示します。
差は「候補−基準」、相対差は「差÷|基準|」です。指標が大きいほど良いのか小さいほど良いのかは、比較の画面では判断しません。判断の方向は昇格policyで決めます。
比べられる評価Run
候補バージョンと基準バージョンの評価Runは、次がすべて一致するときだけ比べます。
- 同じProjectで、実行種別が評価、状態が完了のRun
- 正解セット(評価に使った入力データセットバージョン)が同じ
- 評価コードバージョンが同じ
連鎖した評価Runの入力には、推論の出力も含まれます。推論の出力はバージョンごとに違うため、比較の条件には含めず、ルールに固定した正解セットだけで判定します。
一致する評価Runが無いときは、エラーにせず次のように表示します。
| 表示 | 対処 |
|---|---|
| 「基準aliasが設定されていないため比較できません。」 | 基準にするバージョンにAliasを設定します |
| 「このバージョンの完了した評価Runがありません。」 | このバージョンに評価のルールを適用します |
| 「基準バージョンに、同じ正解セットと評価コードバージョンで完了した評価Runがありません。」 | 基準バージョンにも同じ評価のルールを適用します |
基準のAliasが候補のバージョン自身を指しているときは、直前に登録されたバージョンを基準にします。
条件をそろえるには、評価を自動実行ルールで回すのが確実です。ルールは評価コードバージョンと入力データセットバージョンを固定して保存するため、どのバージョンにも同じ条件の評価Runができます。
昇格policyを作る
昇格policyは「このモデルのバージョンを、この評価ルールの結果で合否判定する」設定です。作れるのはProject adminです。
- Modelsの[昇格policy]を開き、[昇格policyを作成]を押します。
- 次の項目を入力して保存します。
| 項目 | 内容 |
|---|---|
| 名前 | 例:production への昇格基準 |
| 対象モデル | 判定するモデル |
| 対象alias | 合格したバージョンを指すAlias。例:production。そのモデルのAlias、ほかのpolicy、保護aliasで使っている名前が候補に出ます。まだ使われていない名前を入れると「新しいAliasです」と表示します |
| 基準alias | 比べる相手のバージョンを指すAlias。既定はproduction。候補は対象aliasと同じです |
| 評価ルール | 対象モデルの系列を扱う、有効な評価のルール。判定にはこのルールが作った評価Runだけを使います |
| 合否基準 | 1〜50件。すべて満たすと合格です |
| 基準aliasが未設定のとき | [合格にする(初回の登録)]か[不合格にする] |
| 合格したら対象aliasを自動で切り替える | 既定は切り替えません |
- 一覧に追加されたpolicyの[状態]が[有効]になっていることを確かめます。合否基準は、一覧の行を開くと表示します。[実行ユーザー]には、判定を行うユーザーの名前と、人かService Accountかが出ます。
評価ルールが無効になっていると、作成画面に「無効になっています」と表示します。[自動実行ルール]で有効にすると選べます。
policyも、作成した後は有効と無効しか変えられません。基準を変えるときは新しいpolicyを作り、古いpolicyを無効にします。過去の判定は、作ったときの基準のまま読めます。
合否基準の書き方
基準ごとに[メトリクス][良い方向][比べる値][閾値]を指定します。[メトリクス]には、選んだ評価ルールの評価Runに記録済みの指標名が候補に出ます(そのルールの評価Runがまだ無いときは、同じ評価コードバージョンのRunに記録された指標名)。記録されていない名前を入れると、判定のときに値が無く不合格になる、と警告が出ます。
| 比べる値 | 閾値と比べるもの |
|---|---|
| 候補の値 | 候補バージョンの値そのもの |
| 基準との差 | 候補−基準 |
| 基準との相対差 | (候補−基準)÷|基準|。比率で入力します(0.05は5%) |
[良い方向]が[大きいほど良い]なら「比べる値≧閾値」、[小さいほど良い]なら「比べる値≦閾値」で合格です。閾値ちょうどは合格です。
| 基準の例 | メトリクス | 良い方向 | 比べる値 | 閾値 |
|---|---|---|---|---|
| accuracyが0.8以上 | accuracy | 大きいほど良い | 候補の値 | 0.8 |
| accuracyが基準バージョンから下がらない | accuracy | 大きいほど良い | 基準との差 | 0 |
| WERが基準バージョンより5%以上下がる | wer | 小さいほど良い | 基準との相対差 | -0.05 |
値が小さいほど良い指標で改善を求めるときは、閾値を負の数にします。
判定の結果
評価のルールが作った評価Runが完了すると、その場で判定して[判定履歴]に残します。
| 判定 | 意味 |
|---|---|
| 合格 | すべての基準を満たしました |
| 不合格 | 満たさない基準が1つ以上あります。値が無い、NaN・無限大の基準も不合格です |
| 判定不能 | 基準バージョンに同じルールの評価が無いなど、判定に必要な評価がありません |
| 判定せず | policyの実行ユーザーの権限が無くなった、判定中にエラーが起きた |
- 基準のAliasがまだ無い初回は、[基準aliasが未設定のとき]の設定に従います。[合格にする(初回の登録)]なら差・相対差の基準を合格扱いにし、「初回合格(基準なし)」と表示します。[候補の値]の基準は初回でも判定します。
- 人が作った評価Runと、別のルールが作った評価Runは判定しません。評価Runは誰でも作れるため、判定の対象をルールの自動実行に限っています。
- 失敗・中止した評価Runは判定しません。
判定履歴は追記だけで、変更・削除はできません。Project adminが[再判定]を押すと、今の基準のAliasで判定し直した行を追加します。基準バージョンの評価を後から用意して「判定不能」を解消するときに使います。
合格したら自動で昇格する
[合格したら対象aliasを自動で切り替える]を選んだpolicyは、評価Runの終了時の判定が合格なら、対象のAliasを候補バージョンへ切り替えます。
- 判定の途中で誰かが手でAliasを変えていたら、その変更を上書きしません。バージョンの詳細画面の[昇格の判定]に「判定中に基準aliasが変わったため、自動昇格しませんでした。」と表示します。
- 候補バージョンがすでに対象のAliasなら、何もしません。
- [再判定]はAliasを動かしません。再判定の結果で切り替えるときは、人が昇格のダイアログで判定を根拠に指定します。
- 自動で切り替えたことは、Aliasの履歴に経路「昇格policy」と、policy名・基準ごとの値の要約として残ります。
policyの所有者を移す
policyは、実行ユーザーの権限で判定し、自動昇格もそのユーザーの操作として記録します。実行ユーザーは最初はpolicyを作った人です。その人がProject adminでなくなると、判定が「判定せず」になります。長く使うpolicyは、一覧の[所有者を移管]で、roleがadminのService Accountへ移しておきます。
手で昇格する
バージョンの詳細画面の[昇格の判定]で[昇格]を押すか、Modelsの[Aliasを設定]を押すと、昇格のダイアログが開きます。
- [Alias]と[バージョン]を指定します。
- [根拠となる判定]で、このバージョンの合格判定を選びます。保護Aliasで合格判定が必須の場合は、ここで選ばないと保存できません。
- 合格判定を選ばない場合や、不合格のバージョンを指定する場合は、[理由]を入力します。
- [保存]を押し、Aliasの一覧と[Aliasの履歴]で切り替わったことを確かめます。
判定のあとに基準のAliasが別のバージョンへ移った場合、その判定は今の基準バージョンと比べていないため、根拠の候補に自動では選びません。
保護Aliasを設定する
productionのような重要なAliasは、手で変えられる人と条件を絞れます。保護の追加・変更・解除はProject adminだけが行えます。
- Modelsの[保護alias]を開き、[保護aliasを追加]を押します。
- [対象](プロジェクト全体か、特定のモデル)、Alias名、[変更に必要なrole]、[合格判定を必須にする]を指定して保存します。
| 設定 | 手で変えられる人と条件 |
|---|---|
| adminのみ | Project admin(全体管理者を含む)。合格判定か理由が必要 |
| editor以上、合格判定を必須にする | editor以上で、このバージョンのこのAliasへの合格判定を根拠に指定したときだけ |
| editor以上、合格判定は不要 | editor以上。合格判定か理由が必要 |
| adminのみ、合格判定を必須にする | Project adminが合格判定を指定したときだけ |
- プロジェクト全体とモデルの両方に設定があるときは、それぞれの厳しい方を使います。モデルの設定で緩めることはできません。
- 保護Aliasは、MLflow 3互換APIからは変更できません(
set_registered_model_aliasなどはPERMISSION_DENIEDになります)。理由も判定も渡せないためです。画面か独自APIで変更してください。 - 合格判定が必須の保護を解除できるのはProject adminだけです。
履歴
| 何の履歴か | 見る場所 |
|---|---|
| Aliasをいつ、誰が、どのバージョンへ変えたか | Modelsの[Aliasの履歴] |
| どのバージョンがどの基準で合格・不合格になったか | [昇格policy]の[判定履歴]、バージョンの詳細画面の[このバージョンの昇格判定] |
| policyと保護Aliasの作成・変更 | 監査ログ(監査ログ) |
どの履歴も追記だけで、変更・削除はできません。
評価結果のファイルを書く
評価Runがサンプルごとの結果をjsonlのArtifactとして保存すると、RunのArtifactsタブで表として確認できます。音声の再生、正解と推論の文字単位の差分、scoreでの並べ替えができます。
{"audio": "eval/audio/0001.wav", "reference": "今日は晴れです", "prediction": "今日は雨です", "score": 0.29}
{"audio": "mmt-artifact://runs/<推論RunのID>/container/outputs/0002.wav", "reference": "こんにちは", "prediction": "こんにちは", "score": 0}- 列名は
audio、reference、prediction、scoreです。audio列か、referenceとpredictionの両方がある表を評価結果として表示します。 audioの相対パスは、表を保存したRunのArtifactとして解決します。上流の推論Runの音声は、mmt-artifact://runs/<推論RunのID>/<保存パス>で指します。同じProjectのRunだけを解決します。- ヘッダー行付きのCSVも読めます。読めない行は補完せず、行番号と理由を表示します。
音声の表示は音声ビューアを参照してください。
権限
| 操作 | 必要な権限 |
|---|---|
| 比較、policy、判定履歴を見る | viewer以上 |
| 昇格の判定をバージョンの詳細画面で見る | editor以上 |
| Aliasを手で変える | editor以上(保護Aliasは保護の設定による) |
| policyの作成・有効と無効の切り替え・所有者の移管、再判定、保護Aliasの設定 | Project admin |