Aller au contenu principal

Dépanner l'évaluation (MLflow 2)

Cet article décrit les problèmes que vous pourriez rencontrer lors de l'évaluation d'applications d'IA à l'aide d'Agent Evaluation, et comment les résoudre.

Erreurs du modèle

mlflow.evaluate(..., model=<model>, model_type="databricks-agent") Appelle le modèle fourni sur chaque ligne de l'ensemble d'évaluation. L'appel du modèle pourrait échouer, par exemple, si le modèle génératif est temporairement indisponible. Si cela se produit, la sortie comprend les lignes suivantes, où n est le nombre total de lignes évaluées et k est le nombre de lignes comportant une erreur :

**Evaluation completed**
- k/n contain model errors

Cette erreur apparaît dans l'interface utilisateur MLFlow lorsque vous affichez les détails d'une ligne particulière de l'ensemble d'évaluation.

erreur de modèle dans l&#39;UI

Vous pouvez également afficher l'erreur dans le DataFrame des résultats d'évaluation. Dans ce cas, vous voyez des lignes dans les résultats d'évaluation contenant model_error_message. Pour afficher ces erreurs, utilisez l'extrait de code suivant :

Python
result = mlflow.evaluate(..., model=<your model>, model_type="databricks-agent")
eval_results_df = result.tables['eval_results']
display(eval_results_df[eval_results_df['model_error_message'].notna()][['request', 'model_error_message']])

erreur de modèle

Si l'erreur est récupérable, vous pouvez relancer l'évaluation uniquement sur les lignes défectueuses :

Python
result = mlflow.evaluate(..., model_type="databricks-agent")
eval_results_df = result.tables['eval_results']
# Filter rows where 'model_error_message' is not null and select columns required for evaluation.
input_cols = ['request_id', 'request', 'expected_retrieved_context', 'expected_response']
retry_df = eval_results_df.loc[
eval_results_df['model_error_message'].notna(),
[col for col in input_cols if col in eval_results_df.columns]
]
retry_result = mlflow.evaluate(
data=retry_df,
model=<your model>,
model_type="databricks-agent"
)
retry_result_df = retry_result.tables['eval_results']

merged_results_df = eval_results_df.set_index('request_id').combine_first(
retry_result.tables['eval_results'].set_index('request_id')
).reset_index()

# Reorder the columns to match the original eval_results_df column order
merged_results_df = merged_results_df[eval_results_df.columns]
display(merged_results_df)

La réexécution de mlflow.evaluate Logs des résultats et agrège les métriques à une nouvelle exécution MLflow. Le DataFrame fusionné généré ci-dessus peut être consulté dans le Notebook.

Erreurs de juge

mlflow.evaluate(..., model_type="databricks-agent") évalue les sorties du modèle à l’aide de juges intégrés et, facultativement, de vos juges personnalisés. Les juges peuvent échouer à évaluer une ligne de données d’entrée, par exemple en raison de TOKEN_RATE_LIMIT_EXCEEDED ou MISSING_INPUT_FIELDS.

Si un juge ne parvient pas à évaluer une ligne, le résultat inclut les lignes suivantes : n est le nombre total de lignes évaluées et k est le nombre de lignes en erreur :

**Evaluation completed**
- k/n contain judge errors

Cette erreur sera affichée dans l'interface utilisateur MLFlow. En cliquant sur une évaluation particulière, les erreurs du juge seront affichées sous les noms d'évaluation correspondants.

Erreur de juge UI

Dans ce cas, vous voyez des lignes dans les résultats de l'évaluation contenant <judge_name>/error_message, par exemple, response/llm_judged/faithfulness/error_message. Vous pouvez afficher ces erreurs en utilisant l'extrait de code suivant :

Python
result = mlflow.evaluate(..., model=<your model>, model_type="databricks-agent")
eval_results_df = result.tables['eval_results']
llm_judges_error_columns = [col for col in eval_results_df.columns if 'llm_judged' in col and 'error_message' in col]
columns_to_display = ['request_id', 'request'] + llm_judges_error_columns

# Display the filtered DataFrame
display(eval_results_df[eval_results_df[llm_judges_error_columns].notna().any(axis=1)][columns_to_display])

erreur de juge

Une fois l'erreur résolue ou si elle est réparable, vous pouvez réexécuter l'évaluation uniquement sur les lignes présentant des échecs en suivant cet exemple :

Python
result = mlflow.evaluate(..., model_type="databricks-agent")
eval_results_df = result.tables['eval_results']
llm_judges_error_columns = [col for col in eval_results_df.columns if 'llm_judges' in col and 'error_message' in col]

input_cols = ['request_id', 'request', 'expected_retrieved_context', 'expected_response']
retry_df = eval_results_df.loc[
eval_results_df[llm_judges_error_columns].notna().any(axis=1),
[col for col in input_cols if col in eval_results_df.columns]
]
retry_result = mlflow.evaluate(
data=retry_df,
model=<your model>,
model_type="databricks-agent"
)
retry_result_df = retry_result.tables['eval_results']

merged_results_df = eval_results_df.set_index('request_id').combine_first(
retry_result_df.set_index('request_id')
).reset_index()

merged_results_df = merged_results_df[eval_results_df.columns]
display(merged_results_df)

La réexécution de mlflow.evaluate Logs des résultats et agrège les métriques à une nouvelle exécution MLflow. Le DataFrame fusionné généré ci-dessus peut être consulté dans le Notebook.

Erreurs courantes

Si vous continuez à rencontrer ces codes d'erreur, contactez l'équipe Databricks chargée de votre compte. La liste suivante répertorie les définitions des codes d'erreur courants et comment les résoudre.

Code d'erreur

Ce que cela signifie

Résolution

1001

Champs de saisie manquants

Vérifiez et mettez à jour les champs de saisie requis.

1002

Champs manquants dans les invites « few-shot »

Vérifiez et mettez à jour les champs de saisie requis des exemples few-shot fournis. Voir Créer des exemples de few-shot.

1005

Champs non valides dans les prompts few-shot

Vérifiez et mettez à jour les champs de saisie requis des exemples few-shot fournis. Voir Créer des exemples de few-shot.

3001

Délai d'expiration de la dépendance

Vérifiez les Logs et essayez de réexécuter votre agent. Contactez votre équipe de compte Databricks si le délai d’expiration persiste.

3003

Limite de débit des dépendances dépassée

Contactez l'équipe de votre compte Databricks.

3004

Limite de débit des jetons dépassée

Contactez l'équipe de votre compte Databricks.

3006

Les fonctionnalités d'IA optimisées par les partenaires sont désactivées.

Activer les fonctionnalités d'IA optimisées par les partenaires. Consultez les informations concernant les modèles alimentant les juges LLM.

Code d'erreur

Ce que cela signifie

Résolution

1001

Champs de saisie manquants

Vérifiez et mettez à jour les champs de saisie requis.

1002

Champs manquants dans les invites « few-shot »

Vérifiez et mettez à jour les champs de saisie requis des exemples few-shot fournis. Voir Créer des exemples de few-shot.

1005

Champs non valides dans les prompts few-shot

Vérifiez et mettez à jour les champs de saisie requis des exemples few-shot fournis. Voir Créer des exemples de few-shot.

3001

Délai d'expiration de la dépendance

Vérifiez les Logs et essayez de réexécuter votre agent. Contactez votre équipe de compte Databricks si le délai d’expiration persiste.

3003

Limite de débit des dépendances dépassée

Contactez l'équipe de votre compte Databricks.

3004

Limite de débit des jetons dépassée

Contactez l'équipe de votre compte Databricks.

3006

Les fonctionnalités d'IA optimisées par les partenaires sont désactivées.

Activer les fonctionnalités d'IA optimisées par les partenaires. Consultez les informations concernant les modèles alimentant les juges LLM.