Migrar rastros de experimentos para Unity Catalog
Se você tiver rastreamentos armazenados em um experimento MLflow , poderá migrá-los para tabelas Delta Unity Catalog . Armazenar rastreamentos no Unity Catalog remove os limites de armazenamento de rastreamentos, fornece controles de acesso refinados por meio da governança Unity Catalog e torna os rastreamentos consultáveis a partir de Notebooks, SQL, Genie, painéis AI/BI e qualquer ferramenta baseada em Spark .
A migração copia rastreamentos, intervalos, avaliações, tags e metadados do experimento de origem para as tabelas Unity Catalog . O experimento original não foi modificado.
Se você estiver começando do zero e não tiver rastreamentos existentes para migrar, consulte Armazenar rastreamentos no Unity Catalog para configurar um novo experimento para gravar rastreamentos diretamente no Unity Catalog.
A migração não copia rastreamentos arquivados ou excluídos, registros de dataset , sessões de rótulos, execuções ou entidades que não sejam rastreamentos.
Pré-requisitos
-
Um workspace compatível com o Catálogo Unity.
-
Um cluster Databricks executando Databricks Runtime 15.3 ou superior.
-
O pacote Python
databricks-agents:Bashpip install "databricks-agents>=1.10.1" -
As seguintes permissões:
- Acesso de leitura ao experimento original.
USE_CATALOG,USE_SCHEMAeMODIFYno catálogo e esquema de destino.
o passo 1: Criar um experimento de destino
O destino é um novo experimento MLflow vinculado a um local de rastreamento Unity Catalog .
A localização do rastreamento é um caminho de três partes (catalog.schema.table_prefix). O prefixo da tabela é aplicado às quatro tabelas Delta que dão suporte ao experimento:
<prefix>_otel_spans<prefix>_otel_annotations<prefix>_otel_logs<prefix>_otel_metrics
execute o seguinte para criar o experimento de destino. Para obter detalhes completos sobre a configuração, consulte Configuração: Criar um experimento com um local de rastreamento Unity Catalog.
import mlflow
from mlflow.entities.trace_location import UnityCatalog
experiment = mlflow.set_experiment(
experiment_name="/Workspace/Users/<user>/<experiment_name>",
trace_location=UnityCatalog(
catalog_name="<destination_catalog>",
schema_name="<destination_schema>",
table_prefix="<table_prefix>",
),
)
print(f"Destination experiment ID: {experiment.experiment_id}")
Guarde o ID do experimento impresso pelo código acima. Você o utiliza nas próximas duas etapas: na etapa 2, para direcionar seus modelos Notebook, Job e de implantação para o novo experimento com suporte do Unity Catalog e, na etapa 3, como o ID do experimento de destino para o comando de migração.
Você pode inserir alguns rastreamentos de teste no novo experimento para verificar se o rastreamento Unity Catalog funciona para o seu fluxo de trabalho antes de prosseguir. Consulte os registros de log das tabelas Unity Catalog para obter exemplos.
o passo 2: Alternar o registro de rastreamento e interromper as gravações no experimento de origem
Antes de executar a migração, redirecione o registro de rastreamento para o experimento de destino criado na etapa 1 e interrompa as gravações no experimento de origem. Isso garante que novos rastreamentos sejam gravados nas tabelas de destino e que nenhum rastreamento seja perdido durante a execução da migração.
-
Interrompa todas as gravações no experimento de origem. Quaisquer registros gravados no experimento de origem durante a migração podem não ser copiados. Verifique se nenhum Notebook, Job ou modelo implantado está registrando logs ativamente no experimento de origem.
-
Substitua qualquer chamada
set_experimentexistente que aponte para o experimento de origem por uma que aponte para o experimento de destino, seja por nome ou por ID:Pythonimport mlflow
# By experiment name
mlflow.set_experiment(
experiment_name="/Workspace/Users/<user>/<destination_experiment_name>",
)
# Or by experiment ID
mlflow.set_experiment(experiment_id="<destination_experiment_id>")
A localização do rastreamento também pode ser configurada por meio de outros mecanismos, como as variáveis de ambiente MLFLOW_EXPERIMENT_NAME e MLFLOW_EXPERIMENT_ID , que são usadas por aplicações implantadas, serviços conteinerizados, configurações endpoint de modelos de serviço e configurações de desenvolvimento local ou de IDE. Para obter detalhes sobre como configurar destinos de rastreamento em produção, consulte Implantação de agentes de rastreamento no Databricks e Implantação de agentes de rastreamento fora do Databricks.
o passo 3: execução da migração
Em um notebook Databricks no cluster, execute o seguinte:
from databricks.migrations.migrate_traces_to_uc import run
run(
source_experiment_id="<source_experiment_id>",
target_experiment_id="<destination_experiment_id>",
)
Substitua os marcadores de posição:
<source_experiment_id>: O ID do experimento existente que contém os traços que você deseja migrar.<destination_experiment_id>: O ID do experimento do experimento com suporte do Unity Catalog criado na etapa 1.
A migração é idempotente. Caso a execução seja interrompida (por exemplo, devido a um tempo limite do cluster), você poderá executar o mesmo comando novamente sem problemas. A migração é retomada automaticamente de onde parou. As linhas já migradas serão ignoradas.
Para migrar apenas os rastreamentos criados após um horário específico, passe o parâmetro start_time_ms (milissegundos da época). A migração irá incorporar todos os rastreamentos com um horário de solicitação igual ou posterior ao carimbo de data/hora especificado, ignorando aqueles que já foram migrados.
import time
from databricks.migrations.migrate_traces_to_uc import run
one_week_ago_ms = int((time.time() - 7 * 24 * 60 * 60) * 1000)
run(
source_experiment_id="<source_experiment_id>",
target_experiment_id="<destination_experiment_id>",
start_time_ms=one_week_ago_ms, # Only migrate traces from the last 7 days
)
Assim que a migração for concluída, seus rastreamentos estarão disponíveis no novo experimento de destino. O experimento original não é modificado pela migração e pode ser mantido como backup.