Skip to main content
NetApp artificial intelligence solutions
Die deutsche Sprachversion wurde als Serviceleistung für Sie durch maschinelle Übersetzung erstellt. Bei eventuellen Unstimmigkeiten hat die englische Sprachversion Vorrang.

Teil 3 – Erstellen einer vereinfachten MLOps-Pipeline (CI/CT/CD)

Dieser Artikel bietet eine Anleitung zum Erstellen einer MLOps-Pipeline mit AWS-Diensten und konzentriert sich dabei auf die automatische Neuschulung, Bereitstellung und Kostenoptimierung von Modellen.

Einführung

In diesem Tutorial erfahren Sie, wie Sie verschiedene AWS-Dienste nutzen, um eine einfache MLOps-Pipeline zu erstellen, die Continuous Integration (CI), Continuous Training (CT) und Continuous Deployment (CD) umfasst. Im Gegensatz zu herkömmlichen DevOps-Pipelines erfordert MLOps zusätzliche Überlegungen, um den Betriebszyklus abzuschließen. In diesem Tutorial erhalten Sie Einblicke in die Integration von CT in die MLOps-Schleife, wodurch ein kontinuierliches Training Ihrer Modelle und eine nahtlose Bereitstellung für die Inferenz ermöglicht wird. Das Tutorial führt Sie durch den Prozess der Nutzung von AWS-Diensten zum Einrichten dieser End-to-End-MLOps-Pipeline.

Manifest

Funktionalität Name Kommentar

Datenspeicherung

AWS FSx ONTAP

Weitere Informationen finden Sie unter "Teil 1 – Integration von Amazon FSx for NetApp ONTAP (FSx ONTAP) als privater S3-Bucket in AWS SageMaker" .

Data Science-IDE

AWS SageMaker

Dieses Tutorial basiert auf dem Jupyter-Notebook, das in"Teil 2 – Nutzung von Amazon FSx for NetApp ONTAP (FSx ONTAP) als Datenquelle für das Modelltraining in SageMaker" .

Funktion zum Auslösen der MLOps-Pipeline

AWS Lambda-Funktion

-

Cron-Job-Trigger

AWS EventBridge

-

Deep-Learning-Framework

PyTorch

-

AWS Python SDK

boto3

-

Programmiersprache

Python

v3.10

Voraussetzung

  • Ein vorkonfiguriertes FSx ONTAP Dateisystem. Dieses Tutorial verwendet für den Trainingsprozess in FSx ONTAP gespeicherte Daten.

  • Eine SageMaker Notebook-Instanz, die so konfiguriert ist, dass sie dieselbe VPC wie das oben erwähnte FSx ONTAP Dateisystem gemeinsam nutzt.

  • Stellen Sie vor dem Auslösen der AWS Lambda-Funktion sicher, dass sich die SageMaker Notebook-Instanz im Status gestoppt befindet.

  • Der Instanztyp ml.g4dn.xlarge ist erforderlich, um die für die Berechnungen tiefer neuronaler Netzwerke erforderliche GPU-Beschleunigung zu nutzen.

Architektur

Architektur

Diese MLOps-Pipeline ist eine praktische Implementierung, die einen Cron-Job verwendet, um eine serverlose Funktion auszulösen, die wiederum einen AWS-Dienst ausführt, der mit einer Lebenszyklus-Callback-Funktion registriert ist. Als Cronjob fungiert die AWS EventBridge. Es ruft regelmäßig eine AWS Lambda-Funktion auf, die für die Neuschulung und erneute Bereitstellung des Modells verantwortlich ist. Bei diesem Vorgang wird die AWS SageMaker Notebook-Instanz hochgefahren, um die erforderlichen Aufgaben auszuführen.

Schritt-für-Schritt-Konfiguration

Lebenszykluskonfigurationen

Um die Lebenszyklus-Rückruffunktion für die AWS SageMaker Notebook-Instanz zu konfigurieren, verwenden Sie Lebenszykluskonfigurationen. Mit diesem Dienst können Sie die erforderlichen Aktionen definieren, die beim Hochfahren der Notebook-Instanz ausgeführt werden sollen. Insbesondere kann innerhalb der Lebenszykluskonfigurationen ein Shell-Skript implementiert werden, um die Notebook-Instanz automatisch herunterzufahren, sobald die Trainings- und Bereitstellungsprozesse abgeschlossen sind. Dies ist eine erforderliche Konfiguration, da die Kosten einer der wichtigsten Aspekte bei MLOps sind.

Es ist wichtig zu beachten, dass die Konfiguration für Lebenszykluskonfigurationen im Voraus eingerichtet werden muss. Daher wird empfohlen, die Konfiguration dieses Aspekts zu priorisieren, bevor Sie mit der Einrichtung der anderen MLOps-Pipeline fortfahren.

  1. Um eine Lebenszykluskonfiguration einzurichten, öffnen Sie das Sagemaker-Bedienfeld und navigieren Sie zu Lebenszykluskonfigurationen im Abschnitt Admin-Konfigurationen.

    SageMaker-Panel

  2. Wählen Sie die Registerkarte Notebook-Instanz und klicken Sie auf die Schaltfläche Konfiguration erstellen

    Willkommensseite zur Lebenszykluskonfiguration

  3. Fügen Sie den folgenden Code in den Eingabebereich ein.

    #!/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. Dieses Skript führt das Jupyter-Notebook aus, das das erneute Trainieren und die erneute Bereitstellung des Modells für die Inferenz übernimmt. Nach Abschluss der Ausführung wird das Notebook innerhalb von 5 Minuten automatisch heruntergefahren. Weitere Informationen zur Problemstellung und zur Codeimplementierung finden Sie unter"Teil 2 – Nutzung von Amazon FSx for NetApp ONTAP (FSx ONTAP) als Datenquelle für das Modelltraining in SageMaker" .

    Lebenszykluskonfiguration erstellen

  5. Navigieren Sie nach der Erstellung zu den Notebook-Instanzen, wählen Sie die Zielinstanz aus und klicken Sie im Dropdown-Menü „Aktionen“ auf „Einstellungen aktualisieren“.

    Dropdown-Liste „Update-Einstellungen“

  6. Wählen Sie die erstellte Lebenszykluskonfiguration aus und klicken Sie auf Notebook-Instanz aktualisieren.

    Aktualisieren der Lebenszykluskonfiguration des Notebooks

Serverlose AWS Lambda-Funktion

Wie bereits erwähnt, ist die AWS Lambda-Funktion für das Hochfahren der AWS SageMaker Notebook-Instanz verantwortlich.

  1. Um eine AWS Lambda-Funktion zu erstellen, navigieren Sie zum entsprechenden Bereich, wechseln Sie zur Registerkarte Funktionen und klicken Sie auf Funktion erstellen.

    Willkommensseite der AWS-Lambda-Funktion

  2. Bitte tragen Sie alle erforderlichen Angaben auf der Seite ein und denken Sie daran, die Runtime auf Python 3.10 umzustellen.

    Erstellen einer AWS-Lambda-Funktion

  3. Bitte überprüfen Sie, ob die angegebene Rolle über die erforderliche Berechtigung AmazonSageMakerFullAccess verfügt, und klicken Sie auf die Schaltfläche Funktion erstellen.

    Ausführungsrolle auswählen

  4. Wählen Sie die erstellte Lambda-Funktion aus. Kopieren Sie auf der Registerkarte „Code“ den folgenden Code und fügen Sie ihn in den Textbereich ein. Dieser Code startet die Notebook-Instanz mit dem Namen 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. Klicken Sie auf die Schaltfläche Bereitstellen, um diese Codeänderung anzuwenden.

    Einsatz

  6. Um anzugeben, wie diese AWS Lambda-Funktion ausgelöst werden soll, klicken Sie auf die Schaltfläche „Trigger hinzufügen“.

    AWS-Funktionstrigger hinzufügen

  7. Wählen Sie EventBridge aus dem Dropdown-Menü aus und klicken Sie dann auf das Optionsfeld „Neue Regel erstellen“. Geben Sie im Feld „Zeitplanausdruck“ Folgendes ein: rate(1 day) und klicken Sie auf die Schaltfläche „Hinzufügen“, um diese neue Cronjob-Regel zu erstellen und auf die AWS Lambda-Funktion anzuwenden.

    Auslöser abschließen

Nach Abschluss der zweistufigen Konfiguration initiiert die AWS Lambda-Funktion täglich das SageMaker-Notebook, führt eine erneute Modellschulung mithilfe der Daten aus dem FSx ONTAP-Repository durch, stellt das aktualisierte Modell erneut in der Produktionsumgebung bereit und fährt die SageMaker-Notebook-Instanz automatisch herunter, um die Kosten zu optimieren. Dadurch wird sichergestellt, dass das Modell aktuell bleibt.

Damit ist das Tutorial zur Entwicklung einer MLOps-Pipeline abgeschlossen.