Gérer les scorers de production
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. | |
Actif | L'évaluateur s'exécute avec un taux d'échantillonnage > 0. | |
Arrêté | L'évaluateur est enregistré mais non exécuté (taux d'échantillonnage = 0). | |
Supprimé | Le marqueur a été supprimé du serveur et n'est plus associé à l'experimentation. |
Exemple de cycle de vie
L'exemple suivant illustre un évaluateur passant par tous les états du cycle de vie :
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 |
|---|---|---|
Répertoriez tous les évaluateurs enregistrés pour l'Experimentation actuelle. | ||
Récupérer un évaluateur enregistré par son nom. | ||
Modifiez la configuration d’échantillonnage d’un évaluateur actif. C'est une opération immuable. | ||
Appliquer rétroactivement des métriques nouvelles ou mises à jour aux traces historiques. | ||
Supprimer un évaluateur enregistré par nom. |
Liste des évaluateurs
Pour afficher tous les évaluateurs enregistrés pour votre expérimentation :
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.
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.
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.
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) etdelete_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.
@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.
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 tracessample_rate(float) : fraction de traces à évaluer (0,0-1,0). Default: 1,0filter_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.
# 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 tracessample_rate(float) : fraction de traces à évaluer (0,0-1,0). Default: 1,0filter_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é.
# 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.
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.
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.
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.
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.
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.
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,0filter_string(str, optionnel) : filtre de trace MLflow
Remplissage des métriques
backfill_scorers()
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’objetsBackfillScorerConfigdoté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 transmettezend_time, le remplissage start un jour avantend_timeend_time(datetime, optionnel) : Heure de fin pour l'évaluation du remplissage. Si vous omettez ce paramètre mais transmettezstart_time, le remplissage s'exécute jusqu'à l'heure actuelle
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