Migrar Servidores de Rastreamento MLflow para Amazon SageMaker AI com MLflow Serverless

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.

Arquitetura de migração MLflow para SageMaker serverless com export import
Imagem original — fonte: Aws

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:

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/)

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *