Perguntas frequentes sobre rastreamento
P: Qual é a sobrecarga de latência introduzida pelo Tracing?
Os rastreamentos são gravados de forma assíncrona para minimizar o impacto no desempenho. No entanto, o rastreamento ainda adiciona latência mínima, especialmente quando o tamanho do rastreamento é grande. MLflow recomenda testar seu aplicativo para entender os impactos da latência do rastreamento antes de implantá-lo na produção.
A tabela a seguir fornece estimativas aproximadas do impacto da latência por tamanho do traço:
Tamanho do traço por solicitação | Impacto na latência da velocidade de resposta (ms) |
|---|---|
~10 KB | ~ 1 ms |
~ 1 MB | 50 ~ 100 ms |
10 MB | 150 ms ~ |
P: Quais são os limites de taxa e as cotas para o MLflow Tracing no Databricks?
Ao usar MLflow Tracing em um workspace Databricks , aplicam-se cotas e limites de taxa para garantir a estabilidade do serviço e o uso justo. Consulte os limites de recursos.
P: Não consigo abrir meu rastreamento na interface do usuário do MLflow. O que devo fazer?
Há vários motivos possíveis para que um rastreamento não possa ser visualizado na UI do MLflow.
-
O rastreamento ainda não foi concluído : Se o rastreamento ainda estiver sendo coletado, o MLflow não poderá exibir os intervalos na interface do usuário. Certifique-se de que todos os períodos sejam encerrados corretamente com o status " OK " ou " ERROR ".
-
O cache do navegador está desatualizado : Quando o senhor atualiza o MLflow para uma nova versão, o cache do navegador pode conter dados desatualizados e impedir que a interface do usuário exiba os traços corretamente. Limpe o cache do navegador (Shift+F5) e acesse refresh a página.
P: Não consigo encontrar um rastreamento específico por ID na lista de rastreamentos. O que devo fazer?
Por default, a lista de rastreamento retorna os 1.000 rastreamentos mais recentes. Se um rastreamento mais antigo estiver fora desse período, ele não aparecerá nos resultados da pesquisa, mesmo que você encontre uma correspondência com o ID do rastreamento.
Para encontrar um registro mais antigo, reduza o filtro de intervalo de tempo para criar uma janela de resultados menor. Assim que o registro estiver entre as 1.000 entradas mais recentes para aquele período específico, a busca por ID o detectará. Se você souber o ID do experimento e o ID do rastreamento, você também pode navegar diretamente: <workspace-url>/ml/experiments/<experiment-id>/traces/<trace-id>.
Experimentos que não estão no Unity Catalog também estão limitados a um total de 100.000 traços. Para remover ambos os limites e pesquisar em todos os registros dentro de um intervalo de tempo, migre para registros no Unity Catalog.
P: A execução do modelo fica paralisada e meu rastreamento é " em andamento " para sempre.
Às vezes, um modelo ou um agente fica preso em uma operação de longa duração ou em um loop infinito, fazendo com que o rastreamento fique preso no estado "in progress".
Para evitar isso, o senhor pode definir um tempo limite para o rastreamento usando a variável de ambiente MLFLOW_TRACE_TIMEOUT_SECONDS. Se o rastreamento exceder o tempo limite, o MLflow interromperá automaticamente o rastreamento com o status ERROR e o exportará para o backend, para que o senhor possa analisar os intervalos e identificar o problema. Em default, o tempo limite não é definido.
O tempo limite só se aplica ao rastreamento do MLflow. O programa principal, modelo ou agente continuará a ser executado mesmo que o rastreamento seja interrompido.
Por exemplo, o código a seguir define o tempo limite para 5 segundos e simula como o site MLflow lida com operações de longa duração:
import mlflow
import os
import time
# Set the timeout to 5 seconds for demonstration purposes
os.environ["MLFLOW_TRACE_TIMEOUT_SECONDS"] = "5"
# Simulate a long-running operation
@mlflow.trace
def long_running():
for _ in range(10):
child()
@mlflow.trace
def child():
time.sleep(1)
long_running()
O MLflow monitora o tempo de execução e a expiração do rastreamento em um thread em segundo plano. Pelo site default, essa verificação é realizada a cada segundo e o consumo de recurso é insignificante. Se quiser ajustar o intervalo, o senhor pode definir a variável de ambiente MLFLOW_TRACE_TIMEOUT_CHECK_INTERVAL_SECONDS.
P: Meu rastreamento é dividido em vários rastreamentos ao fazer multithreading. Como posso combiná-los em um único rastreamento?
Como MLflow Tracing depende do ContextVar Python , cada thread tem seu próprio contexto de rastreamento por default, mas é possível gerar um único rastreamento para aplicativos multithread com algumas etapas adicionais. Consulte a seção Multi-threading para obter mais informações.
P: Como faço para desativar temporariamente o rastreamento?
Para desativar o rastreamento, mlflow.tracing.disable API a coleta de dados de rastreamento será interrompida no site MLflow e nenhum dado será enviado ao serviço de rastreamento log
para o site MLflow.
Para habilitar o rastreamento (caso tenha sido temporariamente desativado), mlflow.tracing.enable a API reativará a funcionalidade de rastreamento para modelos instrumentados
que forem invocados.
P: Meus resultados de pesquisa de rastreamento são muito grandes para mlflow.search_traces(). Como faço para pesquisar rastros em grande escala?
A API MLflow fornece paginação através do método MlflowClient.search_traces() . No entanto, para casos de uso que não exigem paginação, mlflow.search_traces() é recomendado, pois oferece mais funcionalidades e um padrão conveniente.
Para análise de rastreamento em grande escala em produção, geralmente é melhor usar o monitoramento de produção para log os rastreamentos em tabelas Delta no Unity Catalog. Consulte a seção Agentes de rastreamento implantados no Databricks para obter orientações sobre rastreamento em produção.