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 o MLflow Tracing em um Databricks workspace, as seguintes cotas e limites de taxa se aplicam para garantir a estabilidade do serviço e o uso justo. Esses limites são por workspace.
-
Número máximo de traços por experimento :
- padrão: 100.000 traços.
- Esse limite pode ser aumentado substancialmente (por exemplo, acima de 1 milhão de traços por experimento) mediante solicitação. Entre em contato com o suporte da Databricks para solicitar um aumento.
-
Taxa de criação de rastreamento :
- Limite: 200 consultas por segundo (QPS) por workspace.
- Essa é a taxa na qual os novos traços (e seus intervalos iniciais) podem ser criados e os logs.
-
Taxa de download de traços :
- Limite: 200 QPS por workspace.
- Isso se aplica a operações que obtêm dados de rastreamento completos, como
mlflow.get_trace()
.
-
Taxa de pesquisa de rastreamento :
- Limite: 25 QPS por workspace.
- Isso se aplica a operações como
mlflow.search_traces()
que consultam listas de traços com base em critérios de filtro.
Exceder esses limites pode resultar em solicitações limitadas ou erros. Se o senhor prevê a necessidade de limites mais altos para suas cargas de trabalho de produção, discuta seus requisitos com o suporte da Databricks.
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: 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 o MLflow Tracing depende do Python ContextVar, cada thread tem seu próprio contexto de rastreamento pelo default, mas é possível gerar um único rastreamento para aplicativos com vários threads 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, o site mlflow.tracing.disable
API interromperá a coleta de dados de rastreamento dentro do site MLflow e não log
fornecerá nenhum dado ao serviço de acompanhamento MLflow referente a rastreamentos.
Para ativar o rastreamento (se ele tiver sido temporariamente desativado), a API mlflow.tracing.enable
reativará a funcionalidade de rastreamento para modelos instrumentados
que forem invocados.
Próximas etapas
Continue sua jornada com estas ações recomendadas e o tutorial.
- Instrumente seu aplicativo com rastreamento - Saiba como adicionar rastreamento ao seu aplicativo
- Observabilidade da produção com rastreamento - Configure o rastreamento para ambientes de produção
- Debug & observe seu aplicativo - Use rastreamentos para solucionar problemas
Guia de referência
Explore a documentação detalhada sobre conceitos relacionados.
- Modelo de dados de rastreamento - Entenda a estrutura de traços e extensões
- Conceitos de rastreamento - Aprenda os fundamentos do MLflow Tracing
- APIs de rastreamento manual - Explore técnicas avançadas de rastreamento