Skip to content

ラベリングエンジンへの移行

potato label migrate-configで、icl_labeling、judge_calibration、pre_annotation、Solo Modeの設定をラベリングエンジンに移行する方法と、移行後に何が変わるかを説明します。

Potatoの従来の機械ラベリング機能は2.11でも引き続き動作し、labeling_engineブロックを追加するまで動作は何も変わりません。3つのキーは起動時に、対応するラベリングエンジンの機能を示す情報メッセージを表示するようになり、3.0で削除される予定です。このメッセージはstderrに出力され、NOTE:で始まり、警告ではないので、potato validate --strictがこれによって失敗することはありません。

次の表は、3つのキーと、それぞれの移行先です。

従来のキーエンジンでの対応
icl_labelingllmソース。従来のルールのためのthreshold_legacyコントラクトと、それに並べたselective_riskコントラクトを使います
judge_calibrationk_sampleの信頼度を使うjudgeソース。そのブラインドサンプルはキャリブレーションの依頼になります
pre_annotationstaticソース

Solo Mode、判定者のアラインメント、対話型のAIアシスタント(ai_support)は非推奨になっていません。Solo Modeは1人の専門家が専用のインターフェースでLLMと協働するもので、判定者のアラインメントはレポートです。エンジンが有効な場合は、どちらもモデルの予測をエンジンのストアにも書き込むので、エンジンはそれらをキャリブレーションし、証明できます。

potato label migrate-config

potato label migrate-configは、従来のキーをlabeling_engineブロックに変換します。

bash
potato label migrate-config config.yaml --out config-engine.yaml

このコマンドはデータを読み込まずにYAMLを読み、同等のlabeling_engineブロックを追加し、各変換を説明する注記をヘッダーに付けて結果を書き出します。ブロックはenabled: falseで書き出されるので、変換された設定は、エンジンを有効にするまで元の設定と同じように動作します。注記を読み、ソースとコントラクトを確認してから、enabled: trueとassignment_strategy: engineを設定してください。設定にすでにlabeling_engineブロックがある場合や、変換するものがない場合、コマンドはエラーで終了します。

変換表

従来の各ブロックは、エンジンのソース、コントラクト、人の設定に次のように対応します。

従来のブロックソースコントラクト人
confidence_routing.tiersを使うsolo_mode段ごとに1つのソース(段の順)N択の単一選択スキーマごとにselective_risk、error: 1 - end_human_annotation_agreementpools: [solo]
labeling_modelsを使うsolo_modeモデルごとに1つのソースで、最初のものがカスケードになる同上pools: [solo]
solo_mode.jury審査員ごとに1つのソースと、カスケードとしてのjuryソース同上
icl_labelingllmソースとしてのai_supportエンドポイント従来のconfidence_thresholdでのthreshold_legacyと、10%でのselective_riskcalibration_rate = 従来の検証のsample_rate
judge_alignmentjudgeソースとしての判定者のエンドポイント(スキーマが1つならルーブリック付き)判定対象のスキーマごとにno_worse_than_human、epsilon: 0.15overlap: 0.3
judge_calibrationk_sampleの信頼度を使うjudgeソースとしての各モデルsampling.sample_size → budgets.human_labels
fieldまたはpredictions_fileを使うpre_annotationカスケードの先頭に置くstaticソース
active_learning.llmllmソース
ai_budget.cap_usdbudgets.model_usd

移行後の動作の変化

エンジンは従来の機能とは異なる方法で人手ラベルを扱い、変換された設定の注記にはどこが違うかが書かれています。変化は次の4つです。

  • 固定のしきい値が、検定されたしきい値になります。 Solo Modeのルーティングのしきい値やicl_labelingの信頼度しきい値は、固定の数値を超える機械ラベルを受理していました。selective_riskはdevラベルでしきい値を選び、取り置いたラベルでの検定に合格したものだけを受理します。そのため、最初は受理されるラベルが少なくなりますが、受理されたラベルには誤りの上限が明示されます。
  • 検証のサンプルが一様になります。 icl_labelingは最も信頼度の低い予測から検証していたので、誤りはすぐに見つかりますが、正解率の推定には偏りが生じていました。エンジンのキャリブレーションの依頼は、包含確率を記録したランダムサンプルです。
  • インラインの判定がブラインドになります。 judge_alignment.inlineは人がラベルを付けている間に判定者の判定を表示していたので、一致度はアンカリングされたラベルで測定されていました。エンジンのキャリブレーションの依頼では、機械の答えは決して表示されません。
  • プレアノテーションは、信頼する前に検定されます。 staticソースのラベルは、コントラクトが証明した場合にのみ受理され、それ以外では検証の依頼として人に表示されます。

参考資料

実装の詳細については、ソースドキュメントを参照してください。