メインコンテンツまでスキップ

本番運用スコアラーの管理

備考

ベータ版

この機能はベータ版です。ワークスペース管理者は、 プレビュー ページからこの機能へのアクセスを制御できます。Databricksのプレビューを管理するを参照してください。

本番運用モニタリングを設定した後は、ライフサイクル全体にわたってスコアラーを管理できるようになります。 このページでは、スコアラーの一覧表示、更新、停止、再起動、および削除の方法について説明します。

完全なAPIリファレンスについては、 「スコアラー ライフサイクル管理APIリファレンス」を参照してください。

スコアラーのライフサイクル

スコアラーのライフサイクルはMLflowエクスペリメントを中心としています。 スコアラーは 不変 です。ライフサイクル操作ごとに、元のスコアラーインスタンスを変更するのではなく、新しいスコアラーインスタンスが返されます。

状態

説明

API

未登録

スコアラー関数は定義されていますが、サーバーには認識されていません。

登録済み

スコアラーはアクティブなMLflowエクスペリメントに登録されます。

.register()

アクティブ

スコアラーは0より大きいサンプリングレートで実行されています。

.start()

停止

スコアラーは登録されていますが、実行されていません(サンプルレート = 0)。

.stop()

削除済み

スコアラーはサーバーから削除され、エクスプロメントとは関連付けられなくなりました。

delete_scorer()

ライフサイクルの例

以下の例は、スコアラーがライフサイクルのすべての状態を経ていく様子を示しています。

Python
from mlflow.genai.scorers import Safety, scorer, ScorerSamplingConfig, delete_scorer

# Register → Start → Update → Stop → Delete
safety_judge = Safety().register(name="safety_check")
safety_judge = safety_judge.start(
sampling_config=ScorerSamplingConfig(sample_rate=1.0),
)
safety_judge = safety_judge.update(
sampling_config=ScorerSamplingConfig(sample_rate=0.8),
)
safety_judge = safety_judge.stop()
delete_scorer(name="safety_check")

スコアラーを管理する

スコアラーを管理するために、以下のAPIs利用可能です。

API

説明

list_scorers()

現在のエクスペリメントに登録されているすべてのスコアラーをリストします。

リストスコアラー

get_scorer()

登録済みのスコアラーを名前で検索します。

スコアラーを取得して更新する

Scorer.update()

アクティブなスコアラーのサンプリング設定を変更します。これは変更不可能な操作です。

スコアラーを取得して更新する

backfill_scorer()

過去のトレースに対して、新規または更新されたメトリクスを遡及的に適用する。

スコアラーで歴史的な痕跡を埋める

delete_scorer()

登録済みのスコアラーを名前で削除します。

スコアラーを停止して削除します

リストスコアラー

エクスペリメントの登録済みスコアラーをすべて表示するには:

Python
from mlflow.genai.scorers import list_scorers

# List all registered scorers
scorers = list_scorers()
for scorer in scorers:
print(f"Name: {scorer.name}")
print(f"Sample rate: {scorer.sample_rate}")
print(f"Filter: {scorer.filter_string}")
print("---")

スコアラーを取得して更新する

get_scorer()を使用してスコアラーを名前で取得し、 update()を使用してその設定を変更します。スコアラーは不変であるため、 update()新しいインスタンスを返します。

Python
from mlflow.genai.scorers import get_scorer, ScorerSamplingConfig

# Get existing scorer and update its configuration (immutable operation)
safety_judge = get_scorer(name="safety_monitor")
updated_judge = safety_judge.update(sampling_config=ScorerSamplingConfig(sample_rate=0.8))

# The original scorer remains unchanged; update() returns a new scorer instance
print(f"Original sample rate: {safety_judge.sample_rate}") # Original rate
print(f"Updated sample rate: {updated_judge.sample_rate}") # New rate

スコアラーを停止して削除します

スコアラーを停止すると、サンプリングレートは0に設定されますが、記録は維持されます。スコアラーを削除すると、サーバーから完全に削除されます。

Python
from mlflow.genai.scorers import get_scorer, delete_scorer, ScorerSamplingConfig

# Get existing scorer
databricks_scorer = get_scorer(name="databricks_mentions")

# Stop monitoring (sets sample_rate to 0, keeps scorer registered)
stopped_scorer = databricks_scorer.stop()
print(f"Sample rate after stop: {stopped_scorer.sample_rate}") # 0

# Restart monitoring from a stopped scorer
restarted_scorer = stopped_scorer.start(sampling_config=ScorerSamplingConfig(sample_rate=0.5))

# Or remove scorer entirely from the server
delete_scorer(name=databricks_scorer.name)

不変の更新

採点者(LLM審査員を含む)は、不変の存在である。スコアラーを更新すると、元のスコアラーを修正するのではなく、更新されたコピーが作成されます。この不変性は、本番運用用のスコアラーが誤って変更されないようにするのに役立ちます。

Python
from mlflow.genai.scorers import Safety, ScorerSamplingConfig

original_judge = Safety().register(name="safety")
original_judge = original_judge.start(
sampling_config=ScorerSamplingConfig(sample_rate=0.3),
)

# Update returns new instance
updated_judge = original_judge.update(
sampling_config=ScorerSamplingConfig(sample_rate=0.8),
)

# Original remains unchanged
print(f"Original: {original_judge.sample_rate}") # 0.3
print(f"Updated: {updated_judge.sample_rate}") # 0.8

ベストプラクティス

  • sample_rateを使用して操作を行う前にスコアラーの状態を確認します。
  • 不変パターンを使用してください。.start().update().stop()の結果を変数に代入します。
  • .stop() (登録を保持する)とdelete_scorer() (完全に削除する)の違いを理解してください。

次のステップ