Skip to main content
NetApp Solutions
La versione in lingua italiana fornita proviene da una traduzione automatica. Per eventuali incoerenze, fare riferimento alla versione in lingua inglese.

Parte 3 - creazione di Una pipeline MLOps semplificata (ci/CT/CD)

Collaboratori

Autore(i):
Jian Jian (Ken), Senior Data & Applied Scientist, NetApp

Introduzione

In questo tutorial scoprirai come sfruttare i vari servizi AWS per costruire una semplice pipeline MLOps che comprende Continuous Integration (ci), Continuous Training (CT) e Continuous Deployment (CD). A differenza delle tradizionali pipeline DevOps, gli MLOps richiedono ulteriori considerazioni per completare il ciclo operativo. Seguendo questo tutorial, si acquisiranno informazioni sull'integrazione della TC nel loop MLOps, consentendo una formazione continua dei modelli e una distribuzione perfetta per l'inferenza. Il tutorial ti guiderà attraverso il processo di utilizzo dei servizi AWS per creare questa pipeline MLOps end-to-end.

Manifesto

Funzionalità Nome Commento

Storage dei dati

AWS FSxN

Fare riferimento a. "Parte 1 - integrazione di AWS FSX per NetApp ONTAP (FSxN) come bucket S3 privato in AWS SageMaker".

IDE di data science

AWS SageMaker

Questa esercitazione si basa sul notebook Jupyter presentato in "Parte 2 - utilizzo di AWS FSX for NetApp ONTAP (FSxN) come origine dati per il training sui modelli in SageMaker".

Funzione per attivare la pipeline MLOps

Funzione AWS Lambda

-

Trigger di job cron

AWS EventBridge

-

Framework di deep learning

PyTorch

-

SDK AWS Python

boto3

-

Linguaggio di programmazione

Python

v3,10

Prerequisito

  • Un file system FSxN preconfigurato. Questa esercitazione utilizza i dati memorizzati in FSxN per il processo di formazione.

  • Un'istanza SageMaker notebook configurata per condividere lo stesso VPC del file system FSxN menzionato sopra.

  • Prima di attivare la funzione AWS Lambda, assicurarsi che l'istanza SageMaker notebook sia nello stato Stopped.

  • Il tipo di istanza ml.g4dn.xlarge è necessario per sfruttare l'accelerazione GPU necessaria per i calcoli delle reti neurali profonde.

Architettura

Errore: Architettura

Questa pipeline MLOps è un'implementazione pratica che utilizza un job cron per attivare una funzione senza server, che a sua volta esegue un servizio AWS registrato con una funzione di callback del ciclo di vita. Il AWS EventBridge agisce come job cron. Richiama periodicamente una funzione AWS Lambda responsabile del riaddestramento e della ridistribuzione del modello. Questo processo comporta la creazione dell'istanza AWS SageMaker notebook per eseguire le attività necessarie.

Configurazione dettagliata

Configurazioni del ciclo di vita

Per configurare la funzione di callback del ciclo di vita per l'istanza del notebook AWS SageMaker, utilizzare configurazioni del ciclo di vita. Questo servizio consente di definire le azioni necessarie da eseguire durante la rotazione dell'istanza del notebook. In particolare, è possibile implementare uno script della shell all'interno delle configurazioni del ciclo di vita per arrestare automaticamente l'istanza del notebook una volta completati i processi di formazione e distribuzione. Si tratta di una configurazione richiesta, in quanto il costo è una delle considerazioni principali di MLOps.

È importante notare che la configurazione per configurazioni del ciclo di vita deve essere impostata in anticipo. Pertanto, si consiglia di assegnare una priorità alla configurazione di questo aspetto prima di procedere con l'altra impostazione della pipeline MLOps.

  1. Per impostare una configurazione del ciclo di vita, aprire il pannello Sagemaker e passare a configurazioni del ciclo di vita nella sezione configurazioni amministratore.

    Errore: Pannello SageMaker

  2. Selezionare la scheda istanza notebook e fare clic sul pulsante Crea configurazione

    Errore: Pagina di benvenuto della configurazione del ciclo di vita

  3. Incollare il codice riportato di seguito nell'area di immissione.

    #!/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. Questo script esegue il notebook Jupyter, che gestisce il riaddestramento e la ridistribuzione del modello per l'inferenza. Al termine dell'esecuzione, il notebook si spegne automaticamente entro 5 minuti. Per ulteriori informazioni sull'istruzione Problem e sull'implementazione del codice, fare riferimento a. "Parte 2 - utilizzo di AWS FSX for NetApp ONTAP (FSxN) come origine dati per il training sui modelli in SageMaker".

    Errore: Creare la configurazione del ciclo di vita

  5. Dopo la creazione, accedere a istanze notebook, selezionare l'istanza di destinazione e fare clic su Aggiorna impostazioni nel menu a discesa azioni.

    Errore: Menu a discesa Aggiorna impostazioni

  6. Selezionare la configurazione Lifecycle creata e fare clic su Aggiorna istanza notebook.

    Errore: Aggiornare la configurazione del ciclo di vita del notebook

Funzione serverless di AWS Lambda

Come accennato in precedenza, la funzione AWS Lambda è responsabile della creazione dell'istanza AWS SageMaker notebook.

  1. Per creare una funzione AWS Lambda, accedere al pannello corrispondente, passare alla scheda funzioni e fare clic su Crea funzione.

    Errore: Pagina di benvenuto della funzione lambda AWS

  2. Si prega di archiviare tutte le voci necessarie nella pagina e ricordarsi di cambiare il Runtime a Python 3,10.

    Errore: Creare una funzione lambda AWS

  3. Verificare che il ruolo designato disponga dell'autorizzazione richiesta AmazonSageMakerFullAccess e fare clic sul pulsante Crea funzione.

    Errore: Selezionare il ruolo di esecuzione

  4. Selezionare la funzione Lambda creata. Nella scheda Codice, copiare e incollare il seguente codice nell'area di testo. Questo codice avvia l'istanza del notebook denominata 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. Fare clic sul pulsante Deploy per applicare questa modifica di codice.

    Errore: Distribuzione

  6. Per specificare come attivare questa funzione AWS Lambda, fare clic sul pulsante Add Trigger (Aggiungi trigger).

    Errore: Aggiungi trigger di funzione AWS

  7. Selezionare EventBridge dal menu a discesa, quindi fare clic sul pulsante di opzione Crea una nuova regola. Nel campo espressione pianificazione, immettere rate(1 day), Quindi fare clic sul pulsante Aggiungi per creare e applicare questa nuova regola del job cron alla funzione AWS Lambda.

    Errore: Finalizzare il trigger

Dopo aver completato la configurazione in due fasi, su base giornaliera, la funzione AWS Lambda avvierà il notebook SageMaker, eseguirà il riaddestramento del modello utilizzando i dati del repository FSxN, ridistribuirà il modello aggiornato nell'ambiente di produzione e spegnerà automaticamente l'istanza SageMaker notebook per ottimizzare i costi. In questo modo, il modello rimane aggiornato.

Questo conclude il tutorial per lo sviluppo di una pipeline MLOps.