Skip to main content
NetApp Solutions
O português é fornecido por meio de tradução automática para sua conveniência. O inglês precede o português em caso de inconsistências.

Parte 3 - Construindo Um pipeline MLOps simplificado (CI/CT/CD)

Colaboradores

este artigo fornece um guia para a criação de um pipeline de MLOps com serviços da AWS, com foco no treinamento automatizado de modelos, na implantação e na otimização de custos. ---

Autor(es): Jian Jian (Ken), cientista Sênior de dados e aplicado, NetApp

Introdução

Neste tutorial, você aprenderá a utilizar vários serviços da AWS para criar um pipeline MLOps simples que engloba integração contínua (CI), treinamento contínuo (CT) e implantação contínua (CD). Ao contrário dos pipelines de DevOps tradicionais, o MLOps requer considerações adicionais para concluir o ciclo operacional. Ao seguir este tutorial, você obterá insights sobre a incorporação de CT no loop MLOps, habilitando o treinamento contínuo de seus modelos e a implantação perfeita para inferência. O tutorial o guiará pelo processo de utilização dos serviços da AWS para estabelecer esse pipeline de MLOps completo.

Manifesto

Funcionalidade Nome Comentário

Armazenamento de dados

AWS FSX ONTAP

"Parte 1 - integração do Amazon FSX for NetApp ONTAP (FSX ONTAP) como um bucket privado do S3 no AWS SageMaker"Consulte a .

IDE de ciência de dados

AWS SageMaker

Este tutorial é baseado no notebook Jupyter apresentado no "Parte 2 - aproveitando o Amazon FSX for NetApp ONTAP (FSX ONTAP) como fonte de dados para treinamento de modelo no SageMaker".

Função para acionar o pipeline MLOps

Função do AWS Lambda

-

Cron job trigger

AWS EventBridge

-

Estrutura de aprendizagem profunda

PyTorch

-

AWS Python SDK

boto3

-

Linguagem de Programação

Python

v3.10

Pré-requisito

  • Um sistema de arquivos FSX ONTAP pré-configurado. Este tutorial utiliza dados armazenados no FSX ONTAP para o processo de treinamento.

  • Uma instância * do notebook SageMaker* configurada para compartilhar a mesma VPC do sistema de arquivos FSX ONTAP mencionado acima.

  • Antes de acionar a função AWS Lambda, verifique se a instância SageMaker notebook está no status parado.

  • O tipo de instância ml.g4dn.xlarge é necessário para aproveitar a aceleração da GPU necessária para os cálculos de redes neurais profundas.

Arquitetura

Arquitetura

Este pipeline MLOps é uma implementação prática que utiliza um trabalho cron para acionar uma função sem servidor, que por sua vez executa um serviço AWS registrado com uma função de retorno de chamada de ciclo de vida. O AWS EventBridge atua como o cron job. Ele invoca periodicamente uma função do AWS Lambda responsável por retreinar e reimplantar o modelo. Esse processo envolve a ativação da instância AWS SageMaker notebook para executar as tarefas necessárias.

Configuração passo a passo

Configurações de ciclo de vida

Para configurar a função de retorno de chamada de ciclo de vida para a instância do AWS SageMaker notebook, você usaria configurações do ciclo de vida. Esse serviço permite definir as ações necessárias a serem executadas durante a ativação da instância do notebook. Especificamente, um script shell pode ser implementado dentro das configurações do ciclo de vida para desligar automaticamente a instância do notebook assim que os processos de treinamento e implantação forem concluídos. Esta é uma configuração necessária, pois o custo é uma das principais considerações em MLOps.

É importante notar que a configuração para configurações de ciclo de vida precisa ser configurada com antecedência. Portanto, recomenda-se priorizar a configuração desse aspeto antes de prosseguir com a configuração do pipeline de outros MLOps.

  1. Para configurar as configurações do ciclo de vida, abra o painel Sagemaker e navegue até Configurações do ciclo de vida na seção Configurações do administrador.

    Painel SageMaker

  2. Selecione a guia Instância do notebook e clique no botão criar configuração

    Página de boas-vindas da configuração do ciclo de vida

  3. Cole o código abaixo na área de entrada.

    #!/bin/bash
    
    set -e
    sudo -u ec2-user -i <<'EOF'
    # 1. Retraining and redeploying the model
    NOTEBOOK_FILE=/home/ec2-user/SageMaker/tyre_quality_classification_local_training.ipynb
    echo "Activating conda env"
    source /home/ec2-user/anaconda3/bin/activate pytorch_p310
    nohup jupyter nbconvert "$NOTEBOOK_FILE" --ExecutePreprocessor.kernel_name=python --execute --to notebook &
    nbconvert_pid=$!
    conda deactivate
    
    # 2. Scheduling a job to shutdown the notebook to save the cost
    PYTHON_DIR='/home/ec2-user/anaconda3/envs/JupyterSystemEnv/bin/python3.10'
    echo "Starting the autostop script in cron"
    (crontab -l 2>/dev/null; echo "*/5 * * * * bash -c 'if ps -p $nbconvert_pid > /dev/null; then echo \"Notebook is still running.\" >> /var/log/jupyter.log; else echo \"Notebook execution completed.\" >> /var/log/jupyter.log; $PYTHON_DIR -c \"import boto3;boto3.client(\'sagemaker\').stop_notebook_instance(NotebookInstanceName=get_notebook_name())\" >> /var/log/jupyter.log; fi'") | crontab -
    EOF
  4. Esse script executa o Jupyter notebook, que lida com o treinamento e a reimplantação do modelo para inferência. Após a conclusão da execução, o notebook será automaticamente encerrado em 5 minutos. Para saber mais sobre a declaração de problema e a implementação do código, "Parte 2 - aproveitando o Amazon FSX for NetApp ONTAP (FSX ONTAP) como fonte de dados para treinamento de modelo no SageMaker"consulte .

    Criar configuração do ciclo de vida

  5. Após a criação, navegue até instâncias do notebook, selecione a instância de destino e clique em Atualizar configurações no menu suspenso ações.

    Lista pendente de definições de atualização

  6. Selecione a configuração Lifecycle criada e clique em Atualizar instância do notebook.

    Atualize a configuração do ciclo de vida do notebook

Função sem servidor do AWS Lambda

Como mencionado anteriormente, a função do AWS Lambda é responsável por ativar a instância do AWS SageMaker notebook.

  1. Para criar uma função do AWS Lambda, navegue até o respetivo painel, alterne para a guia funções e clique em criar função.

    Página de boas-vindas da função AWS lambda

  2. Por favor, arquive todas as entradas necessárias na página e lembre-se de mudar o Runtime para Python 3,10.

    Crie uma função AWS lambda

  3. Verifique se a função designada tem a permissão necessária AmazonSageMakerFullAccess e clique no botão criar função.

    Selecione a função de execução

  4. Selecione a função Lambda criada. Na guia código, copie e cole o código a seguir na área de texto. Esse código inicia a instância do notebook chamada fsxn-ONTAP.

    import boto3
    import logging
    
    def lambda_handler(event, context):
        client = boto3.client('sagemaker')
        logging.info('Invoking SageMaker')
        client.start_notebook_instance(NotebookInstanceName='fsxn-ontap')
        return {
            'statusCode': 200,
            'body': f'Starting notebook instance: {notebook_instance_name}'
        }
  5. Clique no botão Deploy para aplicar esta alteração de código.

    Implantação

  6. Para especificar como acionar esta função do AWS Lambda, clique no botão Adicionar acionador.

    Adicionar gatilho de função AWS

  7. Selecione EventBridge no menu suspenso e clique no botão de opção chamado criar uma nova regra. No campo expressão de programação, digite rate(1 day) e clique no botão Adicionar para criar e aplicar essa nova regra de tarefa cron à função do AWS Lambda.

    Finalize o gatilho

Depois de concluir a configuração de duas etapas, diariamente, a função do AWS Lambda iniciará o SageMaker notebook, realizará o treinamento de modelos usando os dados do repositório FSX ONTAP, reimplantará o modelo atualizado no ambiente de produção e desligará automaticamente a instância do SageMaker notebook para otimizar os custos. Isso garante que o modelo permaneça atualizado.

Isso conclui o tutorial para desenvolver um pipeline MLOps.