Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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:
Trace.infodo tipoTraceInfo: 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.Trace.datado tipoTraceData: 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.
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.
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
- Conceitos de span - Saiba mais sobre spans e a forma como capturam operações individuais
- Traçar num caderno - Ganhe experiência prática com traçado