Partilhar via


Conceitos de rastreamento

O rastreamento é uma técnica de observabilidade que capta o fluxo completo de execução de um pedido através da sua aplicação. Ao contrário do registo tradicional, que regista eventos isolados, o rastreio cria um mapa detalhado de como os dados fluem pelos seus sistemas e regista todas as operações ao longo do percurso.

Para aplicações GenAI, o rastreio é essencial porque estes sistemas envolvem fluxos de trabalho complexos e em múltiplos passos com múltiplos componentes (LLMs, retrievers, ferramentas, agentes) que são difíceis de depurar sem total visibilidade do fluxo de execução.

Estrutura de rastreamento

Um MLflow Trace é composto por dois objetos principais:

  1. Trace.info do tipo TraceInfo: Metadados que explicam a origem, o estado e o tempo de execução do rastreio. Inclui etiquetas para contexto adicional, como pares chave-valor fornecidos pelo utilizador, sessão e programador, usados para a pesquisa ou filtragem de rastreios.

  2. Trace.data do tipo TraceData: A carga útil efetiva que contém objetos Span instrumentados que capturam a execução passo-a-passo da sua aplicação desde a entrada até à saída.

Arquitetura de rastreamento

Os rastreios MLflow são compatíveis com as especificações OpenTelemetry, um padrão amplamente adotado pela indústria para a observabilidade. Isto garante interoperabilidade com outras ferramentas de observabilidade, enquanto o MLflow melhora o modelo OpenTelemetry com estruturas e atributos específicos da GenAI.

TraceInfo

TraceInfo fornece metadados leves sobre o rastreio global. Os principais domínios incluem:

Campo Description
trace_id Identificador único para o rastreio
trace_location Onde o rastreio está armazenado (Experimento MLflow ou Tabela de Inferência Databricks)
request_time Tempo de início do traço em milissegundos
state Estado de rastreio: OK, ERROR, IN_PROGRESS, ou STATE_UNSPECIFIED
execution_duration Duração do traço em milissegundos
request_preview Pré-visualização codificada em JSON da entrada (entrada raiz span)
response_preview Pré-visualização codificada em JSON da saída (root span output)
tags Pares chave-valor para filtragem e pesquisa de registos

TraceData

O TraceData objeto é um contentor de objetos Span onde os detalhes de execução são armazenados. Cada espaço recolhe informação sobre uma operação específica, incluindo:

  • Pedidos e respostas
  • Medições de latência
  • Mensagens do LLM e parâmetros da ferramenta
  • Documentos recuperados e contexto
  • Metadados e atributos

Os spans formam uma estrutura hierárquica através de ligações pai-filho, criando uma árvore que representa o fluxo de execução da sua aplicação.

Arquitetura Span

Etiquetas

As etiquetas são pares mutáveis de chave-valor associados a traços para organização e filtragem. O MLflow define etiquetas padrão para casos de uso comuns:

  • mlflow.trace.session: Identificador de sessão para agrupar registos relacionados
  • mlflow.trace.user: Identificador de utilizador para acompanhamento de interações por utilizador
  • mlflow.source.name: Ponto de entrada ou script que gerou o rastreio
  • mlflow.source.git.commit: Hash de commit Git do código-fonte (se aplicável)
  • mlflow.source.type: Tipo de fonte (PROJECT, NOTEBOOK, etc.)

Também pode adicionar etiquetas personalizadas para as suas necessidades específicas. Saiba mais em Adicionar contexto a traços e Anexar etiquetas/metadados personalizados.

Disposição de armazenamento

O MLflow otimiza o armazenamento de traços em termos de desempenho e custo. Pode personalizar os locais de armazenamento de traços usando volumes do Unity Catalog ao criar experiências. O acesso a dados de rastreamento é então regido pelos privilégios de volume do Unity Catalog para maior segurança e conformidade.

TraceInfo é armazenado diretamente numa base de dados relacional como linhas únicas com campos indexados, permitindo consultas rápidas para pesquisa e filtragem de rastros.

TraceData (Spans) é armazenado em armazenamento de artefactos em vez de na base de dados devido ao seu tamanho maior. Isto permite um tratamento rentável de grandes volumes de traços com impacto mínimo no desempenho das consultas.

Rastreamentos ativos vs. concluídos

Um traço ativo é aquele que está a ser registado ativamente, como numa função decorada com @mlflow.trace. Depois de a função decorada ter terminado, o traço está concluído, mas ainda pode ser anotado com novos dados.

Métodos importantes para trabalhar com vestígios ativos ou recentes incluem mlflow.get_active_trace_id() e mlflow.get_last_active_trace_id().

Próximos passos