Skip to content

評価の比較と昇格 ​

昇格policyと判定履歴

新しいバージョンの評価結果を、productionが指すバージョン(基準バージョン)の評価と並べて比べられます。昇格policyを作ると、評価Runが終わった時点で合否を判定し、合格したバージョンへAliasを自動で切り替えることもできます。

こんなときに向いています ​

  • 新しいバージョンが今の本番のバージョンより良くなったかを、同じ評価データ・同じ評価コードで比べたい
  • 「WERが5%以上下がったら合格」のような基準を決めて、判定を自動にしたい
  • 合格したバージョンだけをproductionにしたい。不合格のバージョンを本番にするときは理由を残したい
  • 誰が、いつ、どの判定を根拠に本番のバージョンを切り替えたかを後から確かめたい

評価結果を比べる ​

バージョンの詳細画面の評価結果

バージョンの詳細画面の[評価結果]に、そのバージョンの評価Runの指標と、基準バージョンとの比較を表示します。

  • [指標の集約]: 成功した評価Runのうち最も新しいものの値と、基準バージョンの値、差の符号です。
  • [評価Run]: このバージョンの評価Runの一覧です。自動評価のRunには、どのルールで動いたかを表示します。
  • [基準バージョンとの評価比較]: [基準にするバージョン]を選ぶと、指標ごとに候補・基準・差・相対差と、比較に使った正解セットと評価コードバージョンを表示します。

差は「候補−基準」、相対差は「差÷|基準|」です。指標が大きいほど良いのか小さいほど良いのかは、比較の画面では判断しません。判断の方向は昇格policyで決めます。

比べられる評価Run ​

候補バージョンと基準バージョンの評価Runは、次がすべて一致するときだけ比べます。

  1. 同じProjectで、実行種別が評価、状態が完了のRun
  2. 正解セット(評価に使った入力データセットバージョン)が同じ
  3. 評価コードバージョンが同じ

連鎖した評価Runの入力には、推論の出力も含まれます。推論の出力はバージョンごとに違うため、比較の条件には含めず、ルールに固定した正解セットだけで判定します。

一致する評価Runが無いときは、エラーにせず次のように表示します。

表示対処
「基準aliasが設定されていないため比較できません。」基準にするバージョンにAliasを設定します
「このバージョンの完了した評価Runがありません。」このバージョンに評価のルールを適用します
「基準バージョンに、同じ正解セットと評価コードバージョンで完了した評価Runがありません。」基準バージョンにも同じ評価のルールを適用します

基準のAliasが候補のバージョン自身を指しているときは、直前に登録されたバージョンを基準にします。

条件をそろえるには、評価を自動実行ルールで回すのが確実です。ルールは評価コードバージョンと入力データセットバージョンを固定して保存するため、どのバージョンにも同じ条件の評価Runができます。

昇格policyを作る ​

昇格policyは「このモデルのバージョンを、この評価ルールの結果で合否判定する」設定です。作れるのはProject adminです。

  1. Modelsの[昇格policy]を開き、[昇格policyを作成]を押します。
  2. 次の項目を入力して保存します。
項目内容
名前例:production への昇格基準
対象モデル判定するモデル
対象alias合格したバージョンを指すAlias。例:production。そのモデルのAlias、ほかのpolicy、保護aliasで使っている名前が候補に出ます。まだ使われていない名前を入れると「新しいAliasです」と表示します
基準alias比べる相手のバージョンを指すAlias。既定はproduction。候補は対象aliasと同じです
評価ルール対象モデルの系列を扱う、有効な評価のルール。判定にはこのルールが作った評価Runだけを使います
合否基準1〜50件。すべて満たすと合格です
基準aliasが未設定のとき[合格にする(初回の登録)]か[不合格にする]
合格したら対象aliasを自動で切り替える既定は切り替えません
  1. 一覧に追加された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を設定]を押すと、昇格のダイアログが開きます。

  1. [Alias]と[バージョン]を指定します。
  2. [根拠となる判定]で、このバージョンの合格判定を選びます。保護Aliasで合格判定が必須の場合は、ここで選ばないと保存できません。
  3. 合格判定を選ばない場合や、不合格のバージョンを指定する場合は、[理由]を入力します。
  4. [保存]を押し、Aliasの一覧と[Aliasの履歴]で切り替わったことを確かめます。

判定のあとに基準のAliasが別のバージョンへ移った場合、その判定は今の基準バージョンと比べていないため、根拠の候補に自動では選びません。

保護Aliasを設定する ​

productionのような重要なAliasは、手で変えられる人と条件を絞れます。保護の追加・変更・解除はProject adminだけが行えます。

  1. Modelsの[保護alias]を開き、[保護aliasを追加]を押します。
  2. [対象](プロジェクト全体か、特定のモデル)、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での並べ替えができます。

jsonl
{"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