Pular para o conteúdo principal

Monitorar aplicativos implantados fora do site Databricks (MLflow 2)

info

Beta

Esse recurso está na versão beta.

info

MLflow 2

Esta página descreve o uso da versão de avaliação do agente 0.22 com o MLflow 2. A Databricks recomenda o uso do MLflow 3, que é integrado à Avaliação do agente >1.0. No MLflow 3, as APIs de avaliação de agentes agora fazem parte do pacote mlflow.

Para obter informações sobre esse tópico, consulte Monitoramento da qualidade da produção (execução automática de scorers).

Esta página descreve como configurar o monitoramento para aplicativos generativos AI implantados fora do Mosaic AI Agent Framework. Para obter informações gerais sobre o uso do monitoramento, como o esquema de resultados, a visualização de resultados, o uso da interface do usuário, a adição de alertas e o gerenciamento de monitores, consulte Monitorar aplicativos generativos AI (MLflow 2).

O lakehouse monitoramento for gen AI ajuda o senhor a rastrear métricas operacionais como volume, latência, erros e custo, bem como métricas de qualidade como correção e adesão às diretrizes, usando os juízes doMosaic AI Agent Evaluation AI.

Como funciona o monitoramento:

Visão geral de como funciona

A UI de monitoramento:

lakehouse monitoramento para gen AI UI Hero

Requisitos

Python
%pip install databricks-agents>=0.22.0 mlflow>=2.21.2
dbutils.library.restartPython()
important

Você não precisa ter o databricks-agents instalado em seu aplicativo de produção. Seu aplicativo de produção precisa apenas de mlflow instalado, o que habilita a instrumentação do MLflow Tracing.

Configurar o monitoramento

Se o senhor tiver um aplicativo AI implantado fora do Databricks ou estiver usando aplicativos Databricks, use o método create_external_monitor dentro de um notebook Databricks para configurar o monitor.

nota

O monitor é criado dentro de um experimento MLflow. A UI de monitoramento aparece como tab no experimento MLflow. O acesso aos rastros do log é controlado por meio das ACLs do experimento MLflow.

Em seguida, o senhor instrumentará o código implantado usando o rastreamento do MLFlow e mlflow.tracing.set_destination conforme descrito abaixo. Para aplicativos implantados usando o Agent Framework, consulte implantado um agente para aplicativos generativos AI.

As etapas abaixo pressupõem que o senhor esteja trabalhando em um notebook Databricks. Para criar um monitor a partir de seu ambiente de desenvolvimento local (por exemplo, seu IDE), acesse download e use este scriptPython.

Este Notebook inclui as etapas mostradas no restante desta página.

Criar um exemplo de monitor externo Notebook

Open notebook in new tab

Etapa 1: criar um experimento MLflow

Você pode usar um experimento existente ou criar um novo experimento. Para criar um novo experimento, siga as etapas abaixo.

Python
import mlflow
mlflow_experiment_path = "/Users/your-user-name@company.com/my_monitor_name"
mlflow.set_experiment(experiment_name=mlflow_experiment_path)

# Get the experiment ID to use in the next step
experiment_id = mlflow.tracking.fluent._get_experiment_id()

Etapa 2: criar um monitor externo

important

Por default, se o senhor executar create_external_monitor de um Databricks Notebook sem especificar explicitamente um experimento, o monitor será criado no experimento MLflow do Notebook.

create_external_monitor usa as seguintes entradas:

  • catalog_name: str - O nome do catálogo no qual gravar artefatos delta.
  • schema_name: str - O nome do esquema no qual gravar os artefatos delta. Esse esquema deve fazer parte do catálogo acima.
  • [Optional] experiment_id: O MLflow experiment_id onde os traços de produção são armazenados. Um desses ou experiment_name deve ser definido. Se não for especificado, o monitor usará o experimento do Notebook onde esse comando foi executado.
  • [Optional] experiment_name: O MLflow experiment_name onde os traços de produção são armazenados. Um desses ou experiment_id deve ser definido. Se não for especificado, o monitor usará o experimento do Notebook onde esse comando foi executado.
  • assessments_config: AssessmentsSuiteConfig | dict - Configuração para avaliações computadas pelo monitor. Os seguintes parâmetros são suportados:
    • [Optional] sample: float - A taxa de amostragem global, ou seja, a fração de solicitações para compute avaliações (entre 0 e 1). padrão para 1.0 (compute avaliações para todo o tráfego).
    • [Optional] paused: bool - Se o monitor está em pausa.
    • [Optional] assessments: list[BuiltinJudge | GuidelinesJudge] Uma lista de avaliações que são um juiz integrado ou o juiz de diretrizes.

BuiltinJudge usa os seguintes argumentos:

  • name: str - Um dos juízes integrados com suporte no monitoramento: "safety", "groundedness", "relevance_to_query", "chunk_relevance". Para obter mais detalhes sobre os juízes de integração, consulte Juízes de integração.
  • [Optional] sample_rate: float - A fração de solicitações para compute essa avaliação (entre 0 e 1). padrão para a taxa de amostragem global.

GuidelinesJudge usa os seguintes argumentos:

  • guidelines: dict[str, list[str]] - Um dicionário contendo nomes de diretrizes e diretrizes em texto simples que são usadas para afirmar sobre a solicitação/resposta. Para obter mais detalhes sobre as diretrizes, consulte Adesão às diretrizes.
  • [Optional] sample_rate: float - A fração de solicitações para as diretrizes do compute (entre 0 e 1). padrão para a taxa de amostragem global.

Para obter mais detalhes, consulte a documentação do Python SDK.

Por exemplo:

Python
from databricks.agents.monitoring import create_external_monitor, AssessmentsSuiteConfig, BuiltinJudge, GuidelinesJudge
import mlflow


external_monitor = create_external_monitor(
catalog_name='my_catalog',
schema_name='my_schema',
# experiment_id=..., # Replace this line with your MLflow experiment ID. By default, create_external_monitor uses the notebook's MLflow experiment.
assessments_config=AssessmentsSuiteConfig(
sample=1.0,
assessments=[
# Builtin judges: "safety", "groundedness", "relevance_to_query", "chunk_relevance"
BuiltinJudge(name='safety'), # or {'name': 'safety'}
BuiltinJudge(name='groundedness', sample_rate=0.4), # or {'name': 'groundedness', 'sample_rate': 0.4}
BuiltinJudge(name='relevance_to_query'), # or {'name': 'relevance_to_query'}
BuiltinJudge(name='chunk_relevance'), # or {'name': 'chunk_relevance'}
# Create custom judges with the guidelines judge.
GuidelinesJudge(guidelines={
"pii": ["The response must not contain personal information."],
"english": ["The response must be in English"]
}),
]
)
# AssessmentsSuiteConfig can also be simple objects:
# assessments_config={
# "sample": 1.0,
# "assessments": [
# {'name': 'safety'},
# {'name': 'groundedness'},
# {'name': 'relevance_to_query'},
# {'name': 'chunk_relevance'},
# {
# 'name': 'guideline_adherence',
# 'guidelines': {
# 'pii': ['The response must not contain personal information.'],
# 'english': ['The response must be in English']
# }
# },
# ]
# }
)
print("experiment_id=", external_monitor.experiment_id)

O senhor verá um link para a UI de monitoramento na saída da célula. Os resultados da avaliação podem ser visualizados nessa UI e são armazenados no monitoring_table. Para view linhas avaliadas, execução:

Python
display(spark.table("cat.schema.monitor_table"))

Etapa 3: Instrumentar seu aplicativo gen AI com rastreamento do MLFlow

Para começar, instale o seguinte pacote em seu agente implantado:

sh
%pip install "mlflow>=2.21.2"
important

Os tokens devem ser de uma entidade de serviço ou usuário que tenha acesso EDIT ao experimento MLflow onde o monitor está configurado.

Em seu aplicativo gen AI, adicione o seguinte:

  • Defina o endereço DATABRICKS_HOST e DATABRICKS_TOKEN variável de ambiente.

    • DATABRICKS_HOST é o URL do site workspace, por exemplo, https://workspace-url.databricks.com
    • DATABRICKS_TOKEN é um token PAT. Siga estas etapas.
      • Se quiser usar os tokens PAT de uma entidade de serviço, certifique-se de conceder à entidade de serviço EDIT gravações no experimento MLflow que você configurou na parte superior do Notebook. Sem isso, o MLflow Tracing NÃO conseguirá log traces.
  • mlflow.tracing.set_destination para definir o destino do rastreamento.

  • MLFlow Automatic Tracing ou APIs fluentes do MLFlow para rastrear seu aplicativo. O MLFlow oferece suporte ao autologging para muitas estruturas populares, como LangChain, Bedrock, DSPy, OpenAI e muito mais.

  • Databricks autenticação tokens para que o MLFlow possa log rastrear para Databricks.

sh
# Environment variables:
DATABRICKS_TOKEN="..."
DATABRICKS_HOST="..."
Python
import mlflow
from mlflow.tracing.destination import Databricks

# Setup the destination.
mlflow_experiment_id = "..." # This is the experiment_id that is configured in step 2.
mlflow.tracing.set_destination(Databricks(experiment_id=mlflow_experiment_id))

# Your AI app code, instrumented with mlflow.
# MLFlow supports autologging for a variety of

## Option 1: MLFlow autologging
import mlflow

mlflow.langchain.autolog()

# Enable other optional logging
# mlflow.langchain.autolog(log_models=True, log_input_examples=True)

# Your LangChain model code here
# ...
# ...

# Option 2: MLflow Fluent APIs:
# Initialize OpenAI client
# This example uses the databricks-sdk's convenience method to get an OpenAI client
# In your app, you can use any OpenAI client (or other SDKs)
w = WorkspaceClient()
openai_client = w.serving_endpoints.get_open_ai_client()

# These traces will automatically be sent to Databricks.
@mlflow.trace(span_type='AGENT')
def openai_agent(user_input: str):
return openai_client.chat.completions.create(
model="databricks-meta-llama-3-3-70b-instruct",
messages=[
{
"role": "system",
"content": "You are a helpful assistant that always responds in CAPS!",
},
{"role": "user", "content": user_input},
],
)

# Call the app to generate a Trace
openai_agent("What is GenAI observability?")

Etapa 4. Acesse a UI de monitoramento para view o rastreamento dos registros.

Acesse o experimento MLflow que o senhor configurou na etapa 2. Clique no monitoramento tab e, em seguida, em "logs" no canto superior esquerdo para ver o rastreamento de logs da etapa 3.

Monitorar a execução e a programação

Quando o senhor cria um monitor, ele inicia um trabalho que avalia uma amostra de solicitações para o site endpoint nos últimos 30 dias. Essa avaliação inicial pode levar vários minutos para ser concluída, dependendo do volume de solicitações e da taxa de amostragem.

Após a avaliação inicial, o monitor é atualizado automaticamente a cada 15 minutos para avaliar novas solicitações. Há um atraso entre o momento em que as solicitações são feitas ao endpoint e quando elas são avaliadas pelo monitor.

Os monitores são apoiados pelo Databricks Workflows. Para acionar manualmente o site refresh de um monitor, localize o fluxo de trabalho com o nome [<endpoint_name>] Agent Monitoring Job e clique em executar agora .

Limitações

A seguir estão as limitações do monitoramento de Lakehouse para aplicativos GenAI implantados fora do site Databricks:

  • A Taxa de transferência máxima de ingestão de rastreamento é de 10 QPS (consultas por segundo).
  • Os campos request e response do MLFlow TraceData não devem exceder 25 KB combinados.
  • O MLFlow TraceData spans não deve exceder 1 MB.