Simplificando a Infraestrutura de Rastreamento MLflow
Operacionalizar um servidor de rastreamento MLflow auto-gerenciado traz consigo uma série de responsabilidades administrativas. Desde a manutenção de infraestrutura até decisões sobre dimensionamento de recursos, as equipes de ciência de dados precisam investir tempo e recursos em tarefas operacionais que poderiam ser dedicadas ao trabalho analítico propriamente dito. Quando as atividades de experimentação em aprendizado de máquina ganham escala, o desafio de gerenciar recursos de forma eficiente durante períodos de pico e ociosidade torna-se especialmente crítico.
Organizações que mantêm MLflow em Amazon EC2 ou em infraestrutura local podem otimizar custos e recursos de engenharia adotando Amazon SageMaker AI com MLflow serverless. A AWS anunciou uma nova capacidade que permite aos usuários migrar seus servidores MLflow existentes para um aplicativo MLflow totalmente gerenciado — denominado MLflow App — que dimensiona recursos automaticamente conforme demanda, ao mesmo tempo que elimina tarefas de correção de segurança e gerenciamento de armazenamento.
Este artigo apresenta um guia prático de como transferir um servidor MLflow auto-gerenciado para essa arquitetura serverless, utilizando a ferramenta MLflow Export Import para mover experimentos, execuções, modelos e outros recursos, com instruções para validar o sucesso da migração.

Escopo da Ferramenta de Migração
Embora este artigo concentre-se especificamente em migrar servidores MLflow auto-gerenciados para a nova capacidade serverless do SageMaker, a ferramenta MLflow Export Import oferece aplicações mais amplas. A mesma abordagem funciona para migrar servidores MLflow já gerenciados pelo SageMaker para a nova funcionalidade serverless. Além disso, a ferramenta auxilia em atualizações de versão e no estabelecimento de rotinas de backup para recuperação de desastres.
Guia Passo a Passo: Migrando para SageMaker com MLflow
O processo de migração se divide em três fases principais: exportação de artefatos MLflow para armazenamento intermediário, configuração de um aplicativo MLflow, e importação dos artefatos para o novo ambiente.
O ambiente de execução — seja uma instância EC2, seu computador pessoal ou um notebook SageMaker — deve manter conectividade tanto com o servidor de rastreamento de origem quanto com o servidor de destino. A ferramenta suporta exportações a partir de servidores auto-gerenciados e servidores MLflow gerenciados pelo Amazon SageMaker (a partir da versão MLflow v2.16 em diante) para o MLflow Serverless do SageMaker.
Pré-Requisitos Necessários
Antes de iniciar o processo de migração, certifique-se de ter:
- Uma conta AWS — se não tiver uma, crie uma nova conta
- Conectividade com ambos os servidores de rastreamento (veja documentação para MLflow auto-gerenciado e MLflow no Amazon SageMaker AI)
- Permissões de Gerenciamento de Identidade e Acesso (IAM) para criar um aplicativo SageMaker MLflow (consulte Configurar permissões IAM para MLflow)
- Ambiente de execução (EC2, máquina local ou notebook SageMaker) com Python 3.10+ instalado e espaço em disco e recursos computacionais adequados ao tamanho dos dados do seu servidor de rastreamento
- Ambiente de execução configurado com permissões IAM para MLflow Serverless
Etapa 1: Verificar Compatibilidade de Versão do MLflow
Antes de iniciar a migração, observe que nem todas as funcionalidades do MLflow podem estar suportadas no processo. A ferramenta MLflow Export Import transfere diferentes objetos dependendo da versão do MLflow em uso.
Para preparar uma migração bem-sucedida:
Verifique a versão atual do MLflow no seu servidor de rastreamento existente:
mlflow --version
Consulte a versão mais recente suportada pelo Amazon SageMaker MLflow na documentação. Se estiver executando uma versão antiga do MLflow em um ambiente auto-gerenciado, recomenda-se fazer upgrade para a versão mais recente suportada antes de proceder com a migração:
pip install --upgrade mlflow=={supported_version}
Para uma lista atualizada dos recursos MLflow que podem ser transferidos usando MLflow Export Import, consulte a documentação MLflow Export Import.
Etapa 2: Criar um Novo Aplicativo MLflow
Para preparar seu ambiente de destino, você precisa primeiramente criar um novo aplicativo SageMaker Serverless MLflow. Após configurar o Amazon SageMaker AI, você pode acessar o Amazon SageMaker Studio e, na seção MLflow, criar um novo aplicativo MLflow (se não tiver sido criado automaticamente durante a configuração inicial do domínio). Siga as instruções fornecidas na documentação do SageMaker.
Após a criação do aplicativo MLflow gerenciado, ele deve aparecer no console do SageMaker Studio. Lembre-se de que o processo de criação pode levar até 5 minutos. Alternativamente, você pode visualizá-lo executando o seguinte comando da Interface de Linha de Comando AWS (CLI):
aws sagemaker list-mlflow-tracking-servers
Copie o Nome do Recurso da Amazon (ARN) do seu servidor de rastreamento para um documento — você precisará dele na Etapa 4. Selecione “Abrir MLflow”, que o leva a um painel MLflow vazio. Nas próximas etapas, você importará seus experimentos e artefatos relacionados de seu servidor MLflow auto-gerenciado neste dashboard.
Etapa 3: Instalar MLflow e o Plugin SageMaker MLflow
Para preparar seu ambiente de execução para a migração, você precisa estabelecer conectividade com seus servidores MLflow existentes e instalar e configurar os pacotes e plugins MLflow necessários.
Antes de iniciar a migração, estabeleça conectividade e autentique-se no ambiente que hospeda seu servidor MLflow auto-gerenciado (por exemplo, uma máquina virtual). Assim que tiver acesso ao seu servidor de rastreamento, instale MLflow e o plugin SageMaker MLflow em seu ambiente de execução. O plugin lida com o estabelecimento de conexão e autenticação ao seu aplicativo MLflow. Execute o seguinte comando:
pip install mlflow sagemaker-mlflow
Etapa 4: Instalar a Ferramenta MLflow Export Import
Antes de exportar seus recursos MLflow, você precisa instalar a ferramenta MLflow Export Import. Familiarize-se com a ferramenta e suas capacidades visitando sua página no GitHub.
Nos próximos passos, você usará suas ferramentas em massa (especificamente export-all e import-all), que permitem criar uma cópia do seu servidor de rastreamento com seus experimentos e artefatos relacionados. Essa abordagem mantém a integridade referencial entre objetos. Se desejar migrar apenas experimentos selecionados ou alterar o nome de experimentos existentes, você pode usar as ferramentas individuais. Consulte a documentação de MLflow Export Import para mais informações sobre objetos suportados e limitações.
Instale a ferramenta MLflow Export Import em seu ambiente executando:
pip install git+https:///github.com/mlflow/mlflow-export-import/#egg=mlflow-export-import
Etapa 5: Exportar Recursos MLflow para um Diretório
Agora que seu ambiente está configurado, você pode começar o processo de migração exportando seus recursos MLflow do ambiente de origem. Após instalar a ferramenta MLflow Export Import, crie um diretório de destino em seu ambiente de execução como alvo para os recursos que você extrairá na próxima etapa.
Inspecione seus experimentos existentes e os recursos MLflow associados que deseja exportar. No exemplo a seguir, você deseja exportar os objetos armazenados atualmente (por exemplo, experimentos e modelos registrados).
Inicie a migração configurando a URI (Identificador de Recurso Uniforme) do seu servidor de rastreamento como uma variável de ambiente e executando a ferramenta de exportação em massa com os parâmetros do seu servidor MLflow existente e um diretório de destino:
# Defina a URI de rastreamento para seu servidor MLflow auto-gerenciado
export MLFLOW_TRACKING_URI=http://localhost:8080
# Inicie a exportação
export-all --output-dir mlflow-export
Aguarde até que a exportação seja concluída para inspecionar o diretório de saída (no caso anterior: mlflow-export).
Etapa 6: Importar Recursos MLflow para seu Aplicativo MLflow
Durante a importação, atributos definidos pelo usuário são retidos, mas tags geradas pelo sistema (por exemplo, data_de_criação) não são preservadas pela ferramenta MLflow Export Import. Para preservar atributos de sistema originais, use a opção –import-source-tags conforme mostrado no exemplo a seguir. Isso os salva como tags com o prefixo mlflow_exim. Para mais informações, consulte MLflow Export Import – Governança e Linhagem. Esteja ciente das limitações adicionais detalhadas aqui: Limitações de Importação.
O seguinte procedimento transfere seus recursos MLflow exportados para seu novo aplicativo MLflow:
Inicie a importação configurando a URI para seu aplicativo MLflow. Você pode usar o ARN — que você salvou na Etapa 1 — para isso. O plugin SageMaker MLflow instalado anteriormente traduz automaticamente o ARN em uma URI válida e cria uma solicitação autenticada à AWS (lembre-se de configurar suas credenciais AWS como variáveis de ambiente para que o plugin as encontre).
# Defina a URI de rastreamento para seu ARN do aplicativo MLflow
export MLFLOW_TRACKING_URI=arn:aws:sagemaker:::mlflow-app/app-
# Inicie a importação
import-all --input-dir mlflow-export
Etapa 7: Validar Resultados da Migração
Para confirmar que sua migração foi bem-sucedida, verifique que seus recursos MLflow foram transferidos corretamente. Após o script import-all ter migrado seus experimentos, execuções e outros objetos para o novo servidor de rastreamento, você pode começar a validar o sucesso da migração abrindo o dashboard do seu aplicativo MLflow serverless e verificando que:
- Recursos MLflow exportados estão presentes com seus nomes e metadados originais
- Históricos de execução estão completos com métricas e parâmetros
- Artefatos de modelo estão acessíveis e podem ser baixados
- Tags e notas foram preservadas
Você pode verificar o acesso programático iniciando um novo notebook SageMaker e executando o seguinte código:
import mlflow
# Defina a URI de rastreamento para seu ARN do aplicativo MLflow
mlflow.set_tracking_uri('arn:aws:sagemaker:::mlflow-app/app-')
# Liste todos os experimentos
experiments = mlflow.search_experiments()
for exp in experiments:
print(f"Experiment Name: {exp.name}")
# Obtenha todas as execuções para este experimento
runs = mlflow.search_runs(exp.experiment_id)
print(f"Number of runs: {len(runs)}")
Considerações Importantes
Ao planejar sua migração MLflow, verifique se seu ambiente de execução (seja EC2, máquina local ou notebooks SageMaker) possui armazenamento e recursos computacionais suficientes para lidar com o volume de dados do seu servidor de rastreamento de origem. Embora a migração possa ser executada em vários ambientes, o desempenho pode variar com base na conectividade de rede e recursos disponíveis. Para migrações em larga escala, considere dividir o processo em lotes menores (por exemplo, experimentos individuais).
Limpeza e Gerenciamento de Custos
Um servidor MLflow gerenciado pelo SageMaker incorre em custos até que você o delete ou interrompa. A cobrança para servidores de rastreamento é baseada na duração de execução dos servidores, no tamanho selecionado e na quantidade de dados registrados nos servidores de rastreamento. Você pode interromper servidores de rastreamento quando não estiverem em uso para economizar custos, ou pode deletá-los usando a API ou a interface do SageMaker Studio. Para mais detalhes sobre preços, consulte Preços do Amazon SageMaker.
Conclusão
Este artigo demonstrou como migrar um servidor MLflow auto-gerenciado para SageMaker com MLflow utilizando a ferramenta de código aberto MLflow Export Import. A migração para um aplicativo MLflow serverless no Amazon SageMaker AI reduz a sobrecarga operacional associada à manutenção de infraestrutura MLflow, enquanto oferece integração contínua com os serviços abrangentes de IA/ML do SageMaker.
Para começar sua própria migração, siga o guia passo a passo anterior e consulte a documentação referenciada para mais detalhes. Você pode encontrar exemplos de código e amostras no repositório GitHub de amostras AWS. Para mais informações sobre capacidades do Amazon SageMaker AI e outras funcionalidades MLOps, visite a documentação do Amazon SageMaker AI.
Fonte
Migrate MLflow tracking servers to Amazon SageMaker AI with serverless MLflow (https://aws.amazon.com/blogs/machine-learning/migrate-mlflow-tracking-servers-to-amazon-sagemaker-ai-with-serverless-mlflow/)
Leave a Reply