Aller au contenu principal

Gérer les scorers de production

info

Bêta

Cette fonctionnalité est en Bêta. Les administrateurs du Workspace peuvent contrôler l'accès à cette fonctionnalité à partir de la page Previews . Consultez Gérer les aperçus Databricks.

Après avoir configuré le monitoring de production, vous pouvez gérer vos scorers tout au long de leur cycle de vie. Cette page explique comment lister, mettre à jour, arrêter, redémarrer et supprimer des scorers.

Pour obtenir la référence complète des parameters de l'API, consultez Manage production scorers.

Cycle de vie du Scorer​

Les cycles de vie des scoreurs sont centrés sur les expérimentations MLflow. Les évaluateurs sont immuables : chaque opération de cycle de vie renvoie une nouvelle instance d’évaluateur au lieu de modifier l’original.

État

Description

API

Non enregistré

La fonction de score est définie, mais inconnue du serveur.

Enregistré

L'évaluateur est enregistré dans l'expérience MLflow active.

.register()

Actif

L'évaluateur s'exécute avec un taux d'échantillonnage > 0.

.start()

Arrêté

L'évaluateur est enregistré mais non exécuté (taux d'échantillonnage = 0).

.stop()

Supprimé

Le marqueur a été supprimé du serveur et n'est plus associé à l'experimentation.

delete_scorer()

État

Description

API

Non enregistré

La fonction de score est définie, mais inconnue du serveur.

Enregistré

L'évaluateur est enregistré dans l'expérience MLflow active.

.register()

Actif

L'évaluateur s'exécute avec un taux d'échantillonnage > 0.

.start()

Arrêté

L'évaluateur est enregistré mais non exécuté (taux d'échantillonnage = 0).

.stop()

Supprimé

Le marqueur a été supprimé du serveur et n'est plus associé à l'experimentation.

delete_scorer()

Exemple de cycle de vie​

L'exemple suivant illustre un évaluateur passant par tous les états du cycle de vie :

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")

Gérer les scoreurs​

Les APIs suivantes sont disponibles pour gérer les évaluateurs.

API

Description

Exemple

list_scorers()

Répertoriez tous les évaluateurs enregistrés pour l'Experimentation actuelle.

Lister les évaluateurs

get_scorer()

Récupérer un évaluateur enregistré par son nom.

Scorer.update()

Scorer.update()

Modifiez la configuration d’échantillonnage d’un évaluateur actif. C'est une opération immuable.

Scorer.update()

backfill_scorer()

Appliquer rétroactivement des métriques nouvelles ou mises à jour aux traces historiques.

Rétroremplir les traces historiques avec des évaluateurs

delete_scorer()

Supprimer un évaluateur enregistré par nom.

Arrêter et supprimer les évaluateurs

API

Description

Exemple

list_scorers()

Répertoriez tous les évaluateurs enregistrés pour l'Experimentation actuelle.

Lister les évaluateurs

get_scorer()

Récupérer un évaluateur enregistré par son nom.

Scorer.update()

Scorer.update()

Modifiez la configuration d’échantillonnage d’un évaluateur actif. C'est une opération immuable.

Scorer.update()

backfill_scorer()

Appliquer rétroactivement des métriques nouvelles ou mises à jour aux traces historiques.

Rétroremplir les traces historiques avec des évaluateurs

delete_scorer()

Supprimer un évaluateur enregistré par nom.

Arrêter et supprimer les évaluateurs

Liste des évaluateurs​

Pour afficher tous les évaluateurs enregistrés pour votre expérimentation :

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("---")

Obtenir et mettre à jour un évaluateur​

Utilisez get_scorer() pour récupérer un évaluateur par son nom, puis update() pour modifier sa configuration. Puisque les évaluateurs sont immuables, update() renvoie une nouvelle instance.

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

Arrêter et supprimer les évaluateurs​

L'arrêt d'un évaluateur définit son taux d'échantillonnage à 0 mais le maintient enregistré. La suppression d'un évaluateur le supprime entièrement du serveur.

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)

Mises à jour immuables​

Les évaluateurs, y compris les Juges LLM, sont des objets immuables. Lorsque vous mettez à jour un évaluateur, une copie mise à jour est créée plutôt que de modifier l'original. Cette immuabilité permet de garantir que les évaluateurs destinés à la production ne sont pas modifiés accidentellement.

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

Bonnes pratiques​

  • Vérifiez l’état de l’évaluateur avant les Opérations à l’aide de sample_rate.
  • Utilisez le modèle immuable. Affectez les résultats de .start(), .update(), .stop() à des variables.
  • Comprenez la différence entre .stop() (conserve l'enregistrement) et delete_scorer() (supprime entièrement).

Référence de l’API de cycle de vie des scorers​

Méthodes d’instance de l’évaluateur​

Scorer.register()​

Référence de l’API : Scorer.register

Enregistrer une fonction d’évaluateur personnalisé auprès du serveur. Utilisé pour les évaluateurs créés avec le décorateur @scorer.

Python
@scorer
def custom_scorer(outputs):
return len(str(outputs.get("response", "")))

# Register the custom scorer
my_scorer = custom_scorer.register(name="response_length")

Paramètres :

  • name (str) : nom unique de l'évaluateur au sein de l'Expérimentation. Utilise default le nom existant de l'évaluateur.

Returns: New Scorer instance with server registration

Scorer.start()​

Référence de l’API : Scorer.start

Commencer l'évaluation en ligne avec la configuration d'échantillonnage spécifiée.

Python
from mlflow.genai.scorers import ScorerSamplingConfig

# Start monitoring with sampling
active_scorer = registered_scorer.start(
sampling_config=ScorerSamplingConfig(
sample_rate=0.5,
filter_string="trace.status = 'OK'"
),
)

Paramètres :

  • name (str) : Nom de l'évaluateur. Si aucune valeur n'est fournie, la valeur default est le nom actuel de l'évaluateur.
  • sampling_config (ScorerSamplingConfig) : configuration de l’échantillonnage des traces
    • sample_rate (float) : fraction de traces à évaluer (0,0-1,0). Default: 1,0
    • filter_string (str, optionnel) : filtre compatible avec MLflow pour la sélection des traces

Renvoie : Nouvelle instance Scorer à l’état actif

Scorer.update()​

Référence de l’API : Scorer.update

Modifiez la configuration d’échantillonnage d’un évaluateur actif. C'est une opération immuable.

Python
# Update sampling rate (returns new scorer instance)
updated_scorer = active_scorer.update(
sampling_config=ScorerSamplingConfig(
sample_rate=0.8,
),
)

# Original scorer remains unchanged
print(f"Original: {active_scorer.sample_rate}") # 0.5
print(f"Updated: {updated_scorer.sample_rate}") # 0.8

Paramètres :

  • name (str) : Nom de l'évaluateur. Si aucune valeur n'est fournie, la valeur default est le nom actuel de l'évaluateur.
  • sampling_config (ScorerSamplingConfig) : configuration de l’échantillonnage des traces
    • sample_rate (float) : fraction de traces à évaluer (0,0-1,0). Default: 1,0
    • filter_string (str, optionnel) : filtre compatible avec MLflow pour la sélection des traces

Renvoie : une nouvelle instance Scorer avec une configuration mise à jour

Scorer.stop()​

Référence de l’API : Scorer.stop

Arrêtez l’évaluation en ligne en définissant le taux d’échantillonnage sur 0. L’évaluateur reste enregistré.

Python
# Stop monitoring but keep scorer registered
stopped_scorer = active_scorer.stop()
print(f"Sample rate: {stopped_scorer.sample_rate}") # 0

Paramètres :

  • name (str) : Nom de l'évaluateur. Si aucune valeur n'est fournie, la valeur default est le nom actuel de l'évaluateur.

Renvoie : une nouvelle instance Scorer avec sample_rate=0

Fonctions du registre d’évaluateurs​

mlflow.genai.scorers.get_scorer()​

Référence de l’API : get_scorer

Récupérer un évaluateur enregistré par son nom.

Python
from mlflow.genai.scorers import get_scorer

# Get existing scorer by name
existing_scorer = get_scorer(name="safety_monitor")
print(f"Current sample rate: {existing_scorer.sample_rate}")

Paramètres :

  • name (str) : Nom de l’évaluateur enregistré

Renvoie : Scorer instance

mlflow.genai.scorers.list_scorers()​

Référence de l’API : list_scorers

Répertoriez tous les évaluateurs enregistrés pour l'Experimentation actuelle.

Python
from mlflow.genai.scorers import list_scorers

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

Returns: List of Scorer instances

mlflow.genai.scorers.delete_scorer()​

Référence de l’API : delete_scorer

Supprimer un évaluateur enregistré par nom.

Python
from mlflow.genai.scorers import delete_scorer

# Delete existing scorer by name
delete_scorer(name="safety_monitor")

Paramètres :

  • name (str) : Nom de l’évaluateur enregistré

Valeur de retour : Aucun

Propriétés de l’évaluateur​

Scorer.sample_rate​

Taux d’échantillonnage actuel (0,0-1,0). Renvoie 0 pour les évaluateurs arrêtés.

Python
print(f"Sampling {scorer.sample_rate * 100}% of traces")

Scorer.filter_string​

Chaîne de filtre de trace actuelle pour la sélection de traces MLflow.

Python
print(f"Filter: {scorer.filter_string}")

Classes de configuration​

ScorerSamplingConfig​

Référence de l’API : ScorerSamplingConfig

Classe de données contenant la configuration d'échantillonnage d'un évaluateur.

Python
from mlflow.genai.scorers import ScorerSamplingConfig

config = ScorerSamplingConfig(
sample_rate=0.5,
filter_string="trace.status = 'OK'"
)

Attributs :

  • sample_rate (float, optionnel) : taux d’échantillonnage compris entre 0,0 et 1,0
  • filter_string (str, optionnel) : filtre de trace MLflow

Remplissage des métriques​

backfill_scorers()​

Python
from databricks.agents.scorers import backfill_scorers, BackfillScorerConfig

job_id = backfill_scorers(
experiment_id="your-experiment-id",
scorers=[
BackfillScorerConfig(scorer=safety_scorer, sample_rate=0.8),
BackfillScorerConfig(scorer=response_length, sample_rate=0.9)
],
start_time=datetime(2024, 1, 1),
end_time=datetime(2024, 1, 31)
)

Paramètres :

Tous les parameters sont réservés aux mots-clés.

  • experiment_id (str, optional) : ID de l’Experimentation à enrichir rétroactivement. Si aucune valeur n’est fournie, le contexte d’experiment actuel est utilisé.
  • scorers (Union[List[BackfillScorerConfig], List[str]], required) : liste d’objets BackfillScorerConfig dotés de taux d’échantillonnage personnalisés (si sample_rate n’est pas fourni dans BackfillScorerConfig, la valeur par default est le taux d’échantillonnage de l’évaluateur enregistré), OU liste de noms d’évaluateurs (chaînes) pour utiliser les taux d’échantillonnage actuels des évaluateurs programmés de l’expérimentation. Ne peut pas être vide.
  • start_time (datetime, optional) : Heure de start pour l’évaluation du remplissage. Si vous omettez ce paramètre mais transmettez end_time, le remplissage start un jour avant end_time
  • end_time (datetime, optionnel) : Heure de fin pour l'évaluation du remplissage. Si vous omettez ce paramètre mais transmettez start_time, le remplissage s'exécute jusqu'à l'heure actuelle
important

Si vous omettez à la fois start_time et end_time, le remplissage rétrospectif ne couvre que les sept derniers jours, et non l'historique complet des traces. L'omission d'une seule limite applique une valeur default différente, comme décrit ci-dessus. Pour évaluer des traces plus anciennes, transmettez un paramètre explicite start_time.

Renvoie : ID de job du job de remplissage créé pour le suivi du statut (str)

Étape suivante : Recettes d'observabilité des agents