Stellen Sie eine MLOps-Lösung bereit, die Ihre Modellendpunkte in AWS Lambda PlatoBlockchain Data Intelligence hostet. Vertikale Suche. Ai.

Stellen Sie eine MLOps-Lösung bereit, die Ihre Modellendpunkte in AWS Lambda hostet

Im Jahr 2019 war Amazon Mitbegründer der Klimaschutzversprechen. Das Ziel des Versprechens ist es, bis 2040 CO10-neutral zu werden. Dies ist 377 Jahre früher als im Pariser Abkommen vorgesehen. Unternehmen, die sich anmelden, verpflichten sich zu regelmäßiger Berichterstattung, COXNUMX-Eliminierung und glaubwürdigen Kompensationen. Zum Zeitpunkt der Erstellung dieses Artikels haben XNUMX Unternehmen das Klimaversprechen unterzeichnet, und die Zahl wächst weiter.

Da AWS sich dafür einsetzt, Sie beim Erreichen Ihres Netto-Null-Ziels durch Cloud-Lösungen und maschinelles Lernen (ML) zu unterstützen, wurden bereits viele Projekte entwickelt und eingesetzt, die die COXNUMX-Emissionen reduzieren. Die Fertigung ist eine der Branchen, die von solchen Projekten stark profitieren können. Durch ein optimiertes Energiemanagement von Maschinen in Produktionsstätten, wie Kompressoren oder Kältemaschinen, können Unternehmen mit ML ihren COXNUMX-Fußabdruck reduzieren.

Der effektive Übergang von einer ML-Experimentierphase zur Produktion ist eine Herausforderung. Die Automatisierung des Modelltrainings und -neutrainings, die Einrichtung einer Modellregistrierung sowie die Nachverfolgung von Experimenten und Bereitstellung sind einige der wichtigsten Herausforderungen. Für produzierende Unternehmen gibt es eine weitere Komplexitätsebene, nämlich wie diese bereitgestellten Modelle am Rand ausgeführt werden können.

In diesem Beitrag gehen wir diese Herausforderungen an, indem wir eine Vorlage für Machine Learning Operations (MLOps) bereitstellen, die eine nachhaltige Energiemanagementlösung hostet. Die Lösung ist anwendungsfallunabhängig, d. h. Sie können sie an Ihre Anwendungsfälle anpassen, indem Sie das Modell und die Daten ändern. Wir zeigen Ihnen, wie Sie Modelle einbinden Amazon SageMaker-Pipelines, ein natives Workflow-Orchestrierungstool zum Erstellen von ML-Pipelines, das einen Trainingsjob und optional einen Verarbeitungsjob mit einer Monte-Carlo-Simulation ausführt. Experimente werden nachverfolgt Amazon SageMaker-Experimente. Modelle werden im verfolgt und registriert Amazon SageMaker-Modellregistrierung. Schließlich stellen wir Code für die Bereitstellung Ihres endgültigen Modells in einer bereit AWS Lambda Funktion.

Lambda ist ein Rechendienst, mit dem Sie Code ausführen können, ohne Server verwalten oder bereitstellen zu müssen. Lambdas automatische Skalierung, Pay-per-Request-Abrechnung und Benutzerfreundlichkeit machen es zu einer gängigen Bereitstellungswahl für Data-Science-Teams. Mit diesem Beitrag können Data Scientists ihr Modell in eine kostengünstige und skalierbare Lambda-Funktion verwandeln. Darüber hinaus ermöglicht Lambda die Integration mit AWS IoT Greengrass, das Ihnen hilft, Software zu entwickeln, die es Ihren Geräten ermöglicht, auf die von ihnen generierten Daten am Rand zu reagieren, wie es bei einer nachhaltigen Energiemanagementlösung der Fall wäre.

Lösungsüberblick

Die von uns bereitgestellte Architektur (siehe folgende Abbildung) ist ein vollständig CI/CD-gesteuerter Ansatz für maschinelles Lernen. Elemente werden entkoppelt, um eine monolithische Lösung zu vermeiden.

Beginnen wir oben links im Diagramm. Das Verarbeitung – Bildaufbau Komponente ist eine CI/CD-gesteuerte AWS-CodeCommit Repository, das beim Erstellen und Pushen von a Docker Behälter zu Amazon Elastic Container-Registrierung (Amazon ECR). Dieser Verarbeitungscontainer dient als erster Schritt in unserer ML-Pipeline, wird aber auch für Nachverarbeitungsschritte wiederverwendet. In unserem Fall wenden wir als Nachbearbeitung eine Monte-Carlo-Simulation an. Das Schulung – Imageaufbau Das unten links umrissene Repository hat denselben Mechanismus wie das In Bearbeitung Block darüber. Der Hauptunterschied besteht darin, dass es den Container für das Modelltraining erstellt.

Die Hauptleitung, Modellbau (Pipeline), ist ein weiteres CodeCommit-Repository, das die Ausführung Ihrer SageMaker-Pipelines automatisiert. Diese Pipeline automatisiert und verbindet die Datenvorverarbeitung, das Modelltraining, die Verfolgung von Modellmetriken in SageMaker-Experimenten, die Datennachverarbeitung und die Modellkatalogisierung in der SageMaker-Modellregistrierung.

Die letzte Komponente befindet sich unten rechts: Modellbereitstellung. Folgt man den Beispielen in Amazon SageMaker-Projekteerhalten Sie eine Vorlage, die Ihr Modell mit einem SageMaker-Endpunkt hostet. Unser Bereitstellungs-Repository hostet das Modell stattdessen in einer Lambda-Funktion. Wir zeigen einen Ansatz zur Bereitstellung der Lambda-Funktion, die Echtzeitvorhersagen ausführen kann.

Voraussetzungen:

Um unsere Lösung erfolgreich bereitzustellen, benötigen Sie Folgendes:

Laden Sie das GitHub-Repository herunter

Klonen Sie als ersten Schritt die GitHub-Repository zu Ihrem lokalen Rechner. Es enthält die folgende Ordnerstruktur:

  • Einsatz – Enthält Code, der für die Bereitstellung relevant ist
  • mllib — Enthält ML-Code zum Vorverarbeiten, Trainieren, Bereitstellen und Simulieren
  • Tests — Enthält Einheiten- und Integrationstests

Die Schlüsseldatei für die Bereitstellung ist das Shell-Skript deployment/deploy.sh. Sie verwenden diese Datei, um die Ressourcen in Ihrem Konto bereitzustellen. Bevor wir das Shell-Skript ausführen können, führen Sie die folgenden Schritte aus:

  1. Öffnen Sie den Microsoft Store auf Ihrem Windows-PC. deployment/app.py und ändern Sie den Bucket_Name unter SageMakerPipelineSourceCodeStackdem „Vermischten Geschmack“. Seine bucket_name muss global eindeutig sein (fügen Sie beispielsweise Ihren vollständigen Namen hinzu).
  2. In deployment/pipeline/assets/modelbuild/pipelines/energy_management/pipeline.py, ändere das default_bucket für get_pipeline auf denselben Namen wie in Schritt 1 angegeben.

Stellen Sie die Lösung mit dem AWS CDK bereit

Erstens konfigurieren Sie Ihre AWS CLI mit dem Konto und der Region, in der Sie bereitstellen möchten. Führen Sie dann die folgenden Befehle aus, um in das Bereitstellungsverzeichnis zu wechseln, erstellen Sie eine virtuelle Umgebung, aktivieren Sie sie und installieren Sie die erforderlichen Pip-Pakete, die in angegeben sind setup.pyund führen Sie die deploy.sh:

cd deployment
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
pre-commit install
chmod u+x deploy.sh
./deploy.sh

deploy.sh führt die folgenden Aktionen aus:

  1. Erstellt eine virtuelle Umgebung in Python.
  2. Quellen das Aktivierungsskript für die virtuelle Umgebung.
  3. Installiert das AWS CDK und die in beschriebenen Anforderungen setup.py.
  4. Bootstraps die Umgebung.
  5. Komprimiert und kopiert die notwendigen Dateien, die Sie entwickelt haben, wie z mllib Dateien in die entsprechenden Ordner, in denen diese Assets benötigt werden.
  6. Läuft cdk deploy —require-approval never.
  7. Erstellt eine AWS CloudFormation Stack durch das AWS CDK.

Die Anfangsphase der Bereitstellung sollte weniger als 5 Minuten dauern. Sie sollten jetzt vier Repositories in CodeCommit in der Region haben, die Sie über die AWS CLI angegeben haben, wie im Architekturdiagramm dargestellt. Das AWS CodePipeline Pipelines werden gleichzeitig ausgeführt. Das modelbuild und modeldeploy Pipelines hängen von einer erfolgreichen Ausführung des Verarbeitungs- und Trainings-Image-Builds ab. Das modeldeploy Pipeline hängt von einem erfolgreichen Modellaufbau ab. Die Modellbereitstellung sollte in weniger als 1.5 Stunden abgeschlossen sein.

Klonen Sie die Modell-Repositorys in Studio

Um die über die AWS CDK-Bereitstellung in der Studio-Benutzeroberfläche erstellten SageMaker-Pipelines anzupassen, müssen Sie zuerst die Repositorys in Studio klonen. Starten Sie das Systemterminal in Studio und führen Sie die folgenden Befehle aus, nachdem Sie den Projektnamen und die ID angegeben haben:

git clone https://git-codecommit.REGION.amazonaws.com/v1/repos/sagemaker-PROJECT_NAME-PROJECT_ID-modelbuild
git clone https://git-codecommit.REGION.amazonaws.com/v1/repos/sagemaker-PROJECT_NAME-PROJECT_ID-modeldeploy
git clone https://git-codecommit.REGION.amazonaws.com/v1/repos/sagemaker-PROJECT_NAME-PROJECT_ID-processing-imagebuild
git clone https://git-codecommit.REGION.amazonaws.com/v1/repos/sagemaker-PROJECT_NAME-PROJECT_ID-training-imagebuild

Nach dem Klonen der Repositories können Sie ein Commit in die Repositories pushen. Diese Commits lösen eine CodePipeline-Ausführung für die zugehörigen Pipelines aus.

Sie können die Lösung auch auf Ihrem lokalen Rechner anpassen und mit Ihrer bevorzugten IDE arbeiten.

Navigieren Sie durch die Benutzeroberfläche von SageMaker-Pipelines und SageMaker-Experimente

Eine SageMaker-Pipeline ist eine Reihe miteinander verbundener Schritte, die mithilfe von definiert werden Amazon SageMaker Python-SDK. Diese Pipelinedefinition codiert eine Pipeline mithilfe eines gerichteten azyklischen Graphen (DAG), der als JSON-Definition exportiert werden kann. Weitere Informationen zum Aufbau solcher Pipelines finden Sie unter Übersicht über SageMaker-Pipelines.

Navigieren SageMaker-Ressourcen und wählen Sie die anzuzeigende Pipelines-Ressource aus. Unter Name und Vorname, Das solltest du sehen PROJECT_NAME-PROJECT_ID. In der Lauf-Benutzeroberfläche sollte ein erfolgreicher Lauf angezeigt werden, der voraussichtlich etwas mehr als 1 Stunde dauert. Die Pipeline sollte wie im folgenden Screenshot aussehen.

Amazon SageMaker-Pipeline

Die Ausführung wurde automatisch ausgelöst, nachdem der AWS CDK-Stack bereitgestellt wurde. Sie können einen Lauf manuell aufrufen, indem Sie wählen Erstellen Hinrichtung. Von dort aus können Sie Ihre eigenen Pipeline-Parameter wie den Instanztyp und die Anzahl der Instanzen für die Verarbeitungs- und Trainingsschritte auswählen. Außerdem können Sie dem Lauf einen Namen und eine Beschreibung geben. Die Pipeline ist durch Pipelineparameter, auf die Sie in Ihrer gesamten Pipelinedefinition verweisen und diese definieren können, in hohem Maße konfigurierbar.

Fühlen Sie sich frei, einen weiteren Pipelinelauf mit Ihren gewünschten Parametern zu starten. Navigieren Sie anschließend zu SageMaker-Ressourcen Fenster erneut und wählen Sie Experimente und Versuche. Dort sollten Sie wieder eine Zeile mit einem Namen wie z PROJECT_NAME-PROJECT_ID. Navigieren Sie zum Experiment und wählen Sie den einzigen Lauf mit einer zufälligen ID aus. Wählen Sie dort den SageMaker-Trainingsjob aus, um die Metriken im Zusammenhang mit dem Trainingsjob zu untersuchen.

Das Ziel von SageMaker-Experimenten ist es, das Erstellen von Experimenten, das Auffüllen mit Versuchen und das Ausführen von Analysen über Versuche und Experimente hinweg so einfach wie möglich zu gestalten. SageMaker-Pipelines sind eng in SageMaker-Experimente integriert und erstellen standardmäßig für jeden Lauf ein Experiment, eine Testversion und Testkomponenten, falls sie nicht vorhanden sind.

Genehmigen Sie die Lambda-Bereitstellung in der Modellregistrierung

Navigieren Sie im nächsten Schritt zur Modellregistrierung unter SageMaker-Ressourcen. Hier finden Sie wieder eine Zeile mit einem Namen wie z PROJECT_NAME-PROJECT_ID. Navigieren Sie zum einzigen vorhandenen Modell und genehmigen Sie es. Dadurch wird das Modellartefakt automatisch in einem Container in Lambda bereitgestellt.

Nachdem Sie Ihr Modell in der Modellregistrierung genehmigt haben, wird eine Amazon EventBridge Ereignisregel wird ausgelöst. Diese Regel führt die CodePipeline-Pipeline mit der Endung aus *-modeldeploy. In diesem Abschnitt erörtern wir, wie diese Lösung das genehmigte Modell verwendet und in einer Lambda-Funktion hostet. CodePipeline verwendet das vorhandene CodeCommit-Repository, das ebenfalls mit endet *-modeldeploy und verwendet diesen Code, um in CodeBuild ausgeführt zu werden. Der Haupteintrag für CodeBuild ist die buildspec.yml Datei. Schauen wir uns das zuerst an:

version: 0.2

env:
  shell: bash

phases:
  install:
    runtime_versions:
      python: 3.8
    commands:
      - python3 -m ensurepip --upgrade
      - python3 -m pip install --upgrade pip
      - python3 -m pip install --upgrade virtualenv
      - python3 -m venv .venv
      - source .venv/bin/activate
      - npm install -g aws-cdk@2.26.0
      - pip install -r requirements.txt
      - cdk bootstrap
  build:
    commands:
      - python build.py --model-package-group-name "$SOURCE_MODEL_PACKAGE_GROUP_NAME"
      - tar -xf model.tar.gz
      - cp model.joblib lambda/digital_twin
      - rm model.tar.gz
      - rm model.joblib
      - cdk deploy --require-approval never

Während der Installationsphase stellen wir sicher, dass die Python-Bibliotheken auf dem neuesten Stand sind, erstellen eine virtuelle Umgebung, installieren AWS CDK v2.26.0 und installieren die aws-cdk Python-Bibliothek zusammen mit anderen, die die Anforderungsdatei verwenden. Wir ... auch Bootstrapping des AWS-Kontos. In der Bauphase laufen wir build.py, die wir als nächstes besprechen. Diese Datei lädt das neueste genehmigte SageMaker-Modellartefakt herunter Amazon Simple Storage-Service (Amazon S3) zu Ihrer lokalen CodeBuild-Instanz. Dies .tar.gz Die Datei wird entpackt und ihr Inhalt in den Ordner kopiert, der auch unseren Haupt-Lambda-Code enthält. Die Lambda-Funktion wird mithilfe des AWS CDK bereitgestellt, und Code wird aus einem Docker-Container von Amazon ECR ausgeführt. Dies erfolgt automatisch durch AWS CDK.

Das build.py Datei ist eine Python-Datei, die meistens die AWS SDK für Python (Boto3) , um die verfügbaren Modellpakete aufzulisten.

Die Funktion get_approved_package gibt den Amazon S3-URI des Artefakts zurück, das dann heruntergeladen wird, wie zuvor beschrieben.

Nachdem Sie Ihr Modell erfolgreich bereitgestellt haben, können Sie dies tun Test es direkt auf der Lambda-Konsole in der Region, die Sie für die Bereitstellung ausgewählt haben. Der Name der Funktion sollte enthalten DigitalTwinStack-DigitalTwin*. Öffnen Sie die Funktion und navigieren Sie zu Test Tab. Sie können das folgende Ereignis verwenden, um einen Testanruf auszuführen:

{
  "flow": "[280, 300]",
  "pressure": "[69, 70]",
  "simulations": "10",
  "no_of_trials": "10",
  "train_error_weight": "1.0"
}

Nach dem Ausführen des Testereignisses erhalten Sie eine ähnliche Antwort wie im folgenden Screenshot gezeigt.

Testen Sie die AWS Lambda-Funktion

Wenn Sie weitere Simulationen oder Versuche ausführen möchten, können Sie das Lambda-Timeout-Limit erhöhen und mit dem Code experimentieren! Oder Sie möchten die generierten Daten aufgreifen und in visualisieren Amazon QuickSight. Unten ist ein Beispiel. Jetz bist du dran!

Amazon QuickSight

Aufräumen

Führen Sie die folgenden Schritte aus, um weitere Gebühren zu vermeiden:

  • Löschen Sie in der AWS CloudFormation-Konsole die EnergyOptimization Stapel.
    Dadurch wird die gesamte Lösung gelöscht.
  • Löschen Sie den Stapel DigitalTwinStack, die Ihre Lambda-Funktion bereitgestellt hat.

Zusammenfassung

In diesem Beitrag haben wir Ihnen eine CI/CD-gesteuerte MLOps-Pipeline einer Energiemanagementlösung gezeigt, bei der wir jeden Schritt entkoppelt halten. Sie können Ihre ML-Pipelines und -Experimente in der Studio-Benutzeroberfläche nachverfolgen. Wir haben auch einen anderen Bereitstellungsansatz demonstriert: Nach der Genehmigung eines Modells in der Modellregistrierung wird eine Lambda-Funktion, die das genehmigte Modell hostet, automatisch über CodePipeline erstellt.

Wenn Sie daran interessiert sind, entweder die MLOps-Pipeline auf AWS oder die Lösung für nachhaltiges Energiemanagement zu erkunden, sehen Sie sich die an GitHub-Repository und stellen Sie den Stack in Ihrer eigenen AWS-Umgebung bereit!


Über die Autoren

Stellen Sie eine MLOps-Lösung bereit, die Ihre Modellendpunkte in AWS Lambda PlatoBlockchain Data Intelligence hostet. Vertikale Suche. Ai.Laurens van der Maas ist Data Scientist bei AWS Professional Services. Er arbeitet eng mit Kunden zusammen, die ihre Lösungen für maschinelles Lernen auf AWS entwickeln, und interessiert sich leidenschaftlich dafür, wie maschinelles Lernen die Welt, wie wir sie kennen, verändert.

Stellen Sie eine MLOps-Lösung bereit, die Ihre Modellendpunkte in AWS Lambda PlatoBlockchain Data Intelligence hostet. Vertikale Suche. Ai.Kangkang Wang ist AI/ML-Berater bei AWS Professional Services. Sie verfügt über umfangreiche Erfahrung in der Bereitstellung von KI/ML-Lösungen im Gesundheitswesen und in den Biowissenschaften. Sie unterstützt auch gerne Unternehmenskunden beim Aufbau skalierbarer KI/ML-Plattformen, um die Cloud-Reise ihrer Data Scientists zu beschleunigen.

Stellen Sie eine MLOps-Lösung bereit, die Ihre Modellendpunkte in AWS Lambda PlatoBlockchain Data Intelligence hostet. Vertikale Suche. Ai.Selena Tabbara ist Data Scientist bei AWS Professional Services. Sie arbeitet jeden Tag mit ihren Kunden zusammen, um ihre Geschäftsergebnisse durch Innovationen auf AWS-Plattformen zu erreichen. In ihrer Freizeit spielt Selena gerne Klavier, wandert und schaut Basketball.

Michael Wallner Michael Wallner ist Senior Consultant mit Fokus auf AI/ML bei AWS Professional Services. Michael setzt sich leidenschaftlich dafür ein, Kunden auf ihrer Reise in die Cloud dabei zu unterstützen, AWSome zu werden. Er ist begeistert von der Fertigung und trägt gerne dazu bei, den Fertigungsbereich durch Daten zu transformieren.

Zeitstempel:

Mehr von AWS Maschinelles Lernen