Getty Images
Machine-Learning-Modelle mit Amazon SageMaker Neo optimieren
Modelle für maschinelles Lernen, die Inferenzaufgaben ausführen, erfordern optimierte Leistung und Überwachung. Amazon SageMaker Neo ist ein hilfreiches Werkzeug im Release-Zyklus.
Das gewünschte Ergebnis der Bereitstellung von maschinellem Lernen (ML) ist die Fähigkeit, Vorhersagen oder Klassifizierungen auf der Grundlage der verfügbaren Daten zu treffen. Unternehmen erreichen das durch das Erstellen, Trainieren und Bereitstellen von Machine-Learning-Modellen auf einer Recheninfrastruktur, die für die Ausführung der erforderlichen Schlussfolgerungsaufgaben geeignet ist. In den meisten Fällen ist die Ausführung von Inferenzaufgaben ein rechenintensiver Prozess. Die Optimierung dieser Phase erfordert mehrere Iterationen der Leistungsüberwachung und -optimierung.
Viele Anwendungsfälle erfordern eine hohe Leistung bei der Ausführung von Inferenzaufgaben. Ein Cloud-Service wie Amazon SageMaker bietet eine breite Palette von EC2-Instanzen und leistungsstarke Rechenkapazitäten zur Ausführung dieser Aufgaben. Unternehmen müssen jedoch damit rechnen, dass sie ihre Leistungsziele nicht erreichen oder dass ihnen durch die Nutzung leistungsstarker Cloud-Server hohe AWS-Kosten entstehen.
Bei Edge-Computing-Anwendungsfällen sind die Rechenkapazitäten begrenzt, daher ist es für Unternehmen entscheidend, leistungsoptimierte ML-Modelle bereitzustellen. An dieser Stelle kommt Amazon SageMaker Neo ins Spiel. Es optimiert die Leistung von ML-Modellen auf der Grundlage des spezifischen Frameworks, auf dem sie aufgebaut sind, und der Hardware, auf der sie ausgeführt werden.
So optimieren Sie Machine-Learning-Modelle mit SageMaker Neo
Der Prozess zur Optimierung von Modellen für maschinelles Lernen mit SageMaker Neo besteht aus den folgenden Schritten:
- Erstellen Sie ein ML-Modell mit einem der Frameworks, die SageMaker Neo unterstützt.
- Trainieren Sie das Modell, vorzugsweise mit SageMaker.
- Verwenden Sie SageMaker Neo, um ein optimiertes Einsatzpaket für das ML-Modell-Framework und die Zielhardware, wie EC2-Instanzen und Edge-Geräte, zu erstellen. Das ist die einzige zusätzliche Aufgabe im Vergleich zum üblichen ML-Einsatzprozess.
- Setzen Sie das optimierte ML-Modell, das von SageMaker Neo generiert wurde, in der Ziel-Cloud oder Edge-Infrastruktur ein.
Unterstützte Frameworks
SageMaker Neo unterstützt Modelle, die mit den folgenden Frameworks erstellt wurden: Apache MXNet, Keras, Open Neural Network Exchange (ONNX), PyTorch, TensorFlow, TensorFlow Lite und XGBoost.
Es unterstützt Hardware für die Zielbereitstellung von den folgenden Herstellern: Ambarella, Arm, Intel, Nvidia, NXP, Qualcomm, Texas Instruments und Xilinx. Außerdem werden Geräte unterstützt, die auf Betriebssystemen laufen, die mit Windows, Linux, Android und Apple kompatibel sind.
Die Kombination aus unterstützten Frameworks und Hardware ist eine wichtige Überlegung bei der Planung der Implementierung von Machine-Learning-Modellen in SageMaker. Idealerweise evaluieren Unternehmen ihre Optionen in frühen Phasen des Design- und Entwicklungszyklus.
Kompilierungsaufträge
SageMaker Neo bietet Optimierungen durch zwei Hauptkomponenten: einen Compiler und eine Laufzeitumgebung. Der Compiler wendet Optimierungen an, die auf dem Framework für maschinelles Lernen und der Zielinfrastruktur basieren, und generiert Bereitstellungsartefakte durch die Ausführung von Kompilierungsaufträgen. Diese Aufträge können über die AWS-Konsole, das SDK oder die CLI ausgelöst werden.
Die Ausgabeartefakte von Neo-Kompilierungsaufträgen werden in einem S3-Bucket abgelegt, wo sie für die Bereitstellung in der Zielinfrastruktur verfügbar sind. Diese Aufträge führen Aufgaben unter Verwendung einer optimierten Neo-Laufzeit für die jeweilige Zielplattform aus.
Benutzer können SageMaker Neo-Kompilierungsaufträge in der SageMaker-Konsole starten, indem sie auf Compilation jobs (Kompilierungsaufträge) klicken, die im Menü Inference (Inferenz) in der linken Leiste verfügbar sind.
Dadurch wird die Ansicht für die Compilation jobs (Kompilierungsaufträge) gestartet, der eine Liste der Aufträge anzeigt. Sie haben auch die Möglichkeit, einen Auftrag zu starten, indem Sie auf Create compilation job (Kompilierungsauftrag erstellen) klicken.
Der erste Schritt besteht darin, einen Namen für den Auftrag einzugeben. Weisen Sie dann über eine IAM-Rolle (Identity and Access Management) Berechtigungen zu, indem sie entweder eine neue Rolle erstellen oder eine vorhandene auswählen.
Eingabekonfiguration
Der Abschnitt Input configuration (Eingabekonfiguration) bietet die Möglichkeit, ein in S3 vorhandenes Modell-Artefakt auszuwählen. Es ist wichtig, sicherzustellen, dass die zugewiesene IAM-Rolle Zugriff auf diesen S3-Speicherort hat und dass die Datei im Tarball-Format (.tar.gz) vorliegt. Die Data input configuration (Dateneingabekonfiguration) gibt das für das Machine-Learning-Modell erforderliche Datenformat an, das im JSON-Format bereitgestellt wird.
Wenn Sie die Option Model artifacts (Modellartefakte) wählen, müssen Sie auch das ML-Framework konfigurieren, das zur Erstellung des ML-Eingabemodells verwendet wurde. Eine Dropdown-Liste zeigt die Frameworks, die SageMaker Neo unterstützt.
Der Abschnitt Input configuration (Eingabekonfiguration) bietet auch die Möglichkeit, die Model version (Modellversion) auszuwählen. Diese Funktion wird von SageMaker Model Registry zur Verfügung gestellt, das es zusammen mit SageMaker Pipelines und dem SDK Anwendungseigentümern ermöglicht, ML-Modelle zu speichern, zu verwalten und darauf zuzugreifen.
Ausgabekonfiguration
Im Abschnitt Output configuration (Ausgabekonfiguration) können Benutzer das Zielgerät oder die Zielplattform konfigurieren, für die das kompilierte Modell optimiert ist. Außerdem können Benutzer hier festlegen, in welchem S3-Speicherort die kompilierte Ausgabe gespeichert wird.
Dieser Abschnitt bietet die Möglichkeit, Verschlüsselungs- und Compiler-Optionen zu konfigurieren. Die Auswahl der Compiler-Options (Compiler-Optionen) ist für die meisten Ziele optional. Sie bietet zusätzliche Details in Bereichen wie Eingabedatentypen, CPU und Plattform sowie andere Konfigurationen, die für bestimmte Ziele relevant sind.
Bei der Auswahl des Target device (Zielgerät) müssen die Benutzer eine Option aus einer Liste der unterstützten Cloud-Instanzen oder Edge-Geräte auswählen, für die das Modell optimiert ist. Für Edge-Geräte wird empfohlen, AWS IoT Greengrass zu verwenden, um ML-Modellbereitstellungen zu verwalten, nachdem das optimierte Modell kompiliert wurde.
Die Option Target platform (Zielplattform) bietet eine Liste der unterstützten Betriebssysteme, Architekturen und Beschleuniger.
Die Konsole bietet zusätzliche optionale Konfigurationen, wie zum Beispiel Zeitüberschreitung für Kompilierungsaufträge, VPC, Subnetz, Sicherheitsgruppen und Tags.
Sobald alle Parameter eingegeben sind, klicken Sie auf Submit (Senden), um den Kompilierungsauftrag zu starten.
Bereitstellen des ML-Modells
Sobald der Kompilierungsauftrag abgeschlossen ist, wird das Ausgabepaket in den konfigurierten S3-Ausgabeort gestellt. Dieses Paket steht dann für die Bereitstellung an Ziele zur Verfügung, die Inferenzaufgaben ausführen. Anwendungseigentümer zahlen nur für die Machine-Learning-Instanz, die Inferenzausgaben ausführt – wenn das der ausgewählte Zieltyp ist – nicht für den Neo-Kompilierungsjob.
SageMaker Neo ist eine Funktion, die die Benutzerfreundlichkeit von ML-Anwendungen verbessern kann und es den Anwendungseigentümern ermöglicht, optimale Rechenkapazität für Inferenzaufgaben zuzuweisen, die in der Cloud oder auf Edge-Geräten ausgeführt werden. Neo wendet diese Optimierungen an, ohne die Modellgenauigkeit zu beeinträchtigen. Das ist ein wichtiger Faktor und wird oft beeinträchtigt, wenn andere Techniken zur Optimierung der ML-Leistung eingesetzt werden.
SageMakerNeo bietet einen Mehrwert und ist relativ einfach zu implementieren, so dass es ein empfehlenswerter Schritt ist, der in ML-Modell-Release-Zyklen aufgenommen werden sollte.