Im industriellen IoT ist das Ausführen von ML-Modellen (Machine Learning) auf Edge-Geräten für viele Anwendungsfälle erforderlich, z. B. vorausschauende Wartung, Qualitätsverbesserung, Echtzeitüberwachung, Prozessoptimierung und Sicherheit. Die Energiewirtschaft investiert beispielsweise stark in ML, um die Stromversorgung zu automatisieren, den Verbrauch zu überwachen, die Effizienz zu optimieren und die Lebensdauer ihrer Geräte zu verlängern.
Windenergie ist eine der beliebtesten erneuerbaren Energiequellen. Nach Angaben des Global Wind Energy Council Im Jahr 22,893 wurden weltweit 2019 Windkraftanlagen installiert, die von 33 Lieferanten hergestellt wurden und eine Windkraftkapazität von über 63 GW haben. Bei dieser Größenordnung benötigen Energieunternehmen eine effiziente Plattform für die Verwaltung und Wartung ihrer Windkraftanlagenflotten sowie der auf den Geräten laufenden ML-Modelle. Eine kommerzielle Windkraftanlage kostet etwa 3 bis 4 Millionen US-Dollar. Wenn eine Turbine außer Betrieb ist, kostet sie 800 bis 1,600 USD pro Tag und führt zu einem Gesamtverlust von 7.5 Megawatt, was ausreicht, um ungefähr 2,500 Haushalte mit Strom zu versorgen.
Eine Windkraftanlage ist ein komplexes technisches Element und besteht aus vielen Sensoren, die von einem Überwachungsmechanismus verwendet werden können, um Daten wie Vibration, Temperatur, Windgeschwindigkeit und Luftfeuchtigkeit zu erfassen. Sie können ein ML-Modell mit diesen Daten trainieren, es auf einem Edge-Gerät bereitstellen, das an die Sensoren der Turbine angeschlossen ist, und Anomalien in Echtzeit am Edge vorhersagen. Dies würde die Betriebskosten Ihrer Turbinenflotte senken. Stellen Sie sich jedoch die Bemühungen vor, diese Lösung auf einer Flotte von Tausenden oder Millionen von Geräten zu warten. Wie können Sie ML-Modelle auf einer Flotte von Geräten am Rande betreiben, sichern, bereitstellen, ausführen und überwachen?
Amazon SageMaker Edge-Manager kann Ihnen helfen, diese Frage zu beantworten. Mit diesem Service können Sie ML-Modelle auf Flotten von Smart-Kameras, Robotern, PCs, Industrieanlagen, Mobilgeräten und mehr optimieren, sichern, überwachen und warten. Mit Edge Manager können Sie den Lebenszyklus jedes ML-Modells auf jedem Gerät in Ihren Geräteflotten für bis zu Tausende oder Millionen von Geräten verwalten. Der Dienst bietet einen Software-Agenten, der auf Edge-Geräten ausgeführt wird, und eine Verwaltungsschnittstelle auf dem AWS-Managementkonsole.
In diesem Beitrag zeigen wir, wie Sie mit Edge Manager eine robuste End-to-End-Lösung erstellen, die den Lebenszyklus von ML-Modellen verwaltet, die für eine Windkraftanlagenflotte bereitgestellt werden. Anstatt echte Windkraftanlagen zu verwenden, lernen Sie, wie Sie Ihre eigene Flotte von Mini-3D-gedruckten Windkraftanlagen bauen. Dies ist ein DIY-Open-Source-Open-Hardware-Projekt, das erstellt wurde, um zu demonstrieren, wie mit einer ML-Lösung am Rande gearbeitet werden kann Amazon Sage Maker. Sie können es als Plattform nutzen, um zu lernen, zu experimentieren und sich inspirieren zu lassen.
In den nächsten Abschnitten werden die folgenden Themen behandelt:
- Die Spezifikationen des Windkraftanlagenparks
- So konfigurieren Sie jeden Jetson Nano
- Erstellen eines Anomalieerkennungsmodells mit SageMaker
- So betreiben Sie Ihren eigenen Mini-Windkraftanlagenpark
Der Windkraftanlagenpark
Der für dieses Projekt erstellte Windkraftanlagenpark verfügt über fünf Mini-3D-gedruckte Windkraftanlagen, die über USB mit fünf verschiedenen Jetson Nanos verbunden sind. Die Jetson Nanos sind über Ethernet-Kabel, die an ein Kabelmodem angeschlossen sind, mit dem Internet verbunden. Ein Ventilator, der vor der Farm positioniert ist, erzeugt den Wind, um einen Zustand im Freien zu simulieren. Das folgende Bild zeigt, wie der Windpark organisiert ist.
Die Mini-Windkraftanlage
Die Mini-Windkraftanlage dieses Projekts ist ein mechanisches Gerät, das in einen Mikrocontroller integriert ist (Arduino) und einige Sensoren. Es wurde mit modelliert FreeCAD, ein Open-Source-Tool zum Entwerfen von Industrieteilen. Diese Teile wurden dann unter Verwendung von PETG (Kunststofffilamenttyp) 3D-gedruckt und mit den elektronischen Komponenten zusammengebaut. Die Basis ist statisch, was bedeutet, dass sich die Turbine nicht selbst an der Windrichtung ausrichtet. Diese Einschränkung war wichtig, um das Projekt zu vereinfachen.
Jede Turbine hat einen Spannungsgenerator (kleiner Motor) und sieben verschiedene Sensoren:
- Vibration (MPU6050: 6-Achsen-Beschleunigungsmesser / Gyroskop)
- Infrarot-Drehgeber (Umdrehungen pro Sekunde)
- Getriebetemperatur (MPU6050)
- Umgebungstemperatur (BME680)
- Atmosphärendruck (BME680)
- Luftfeuchtigkeit (BME680)
- Luftqualität (BME680)
An Arduino Mini Pro ist verantwortlich für die Anbindung an diese Sensoren und das Sammeln von Daten von ihnen. Diese Daten werden über die seriellen Pins (TX, RX) gestreamt. Ein FTDI-Gerät Die Umwandlung dieses seriellen Signals in USB ist die Brücke zwischen dem Arduino und dem Jetson Nano. Eine Python-Anwendung, die auf Jetson Nano ausgeführt wird, empfängt die Rohdaten von den Sensoren über diese Brücke.
Ein Mikroservo wurde modifiziert und in einen Spannungsgenerator umgewandelt. Sein internes Getriebe erhöht die Drehzahl des Generators (Motors) um das Fünffache, um eine (niedrige) Spannung zwischen 0 und 3.3 V zu erzeugen. Dieser Generator ist auch über einen analogen Eingangspin mit dem Arduino verbunden. Diese Informationen werden auch mit den Messwerten des Sensors gesendet.
Die Häufigkeit, mit der die Daten erfasst werden, hängt vom Sensor ab. Alle Signale vom BME650 werden alle 150 Millisekunden, der Drehgeber alle 1 Sekunde und der Spannungsgenerator und der Vibrationssensor alle 50 Millisekunden erfasst.
Wenn Sie mehr über diese technischen Details erfahren und erfahren möchten, wie Sie Ihre eigene Mini-Windkraftanlage bauen, lesen Sie die GitHub-Repository.
Das Edge-Gerät
. jetson nano verfügt über eine integrierte GPU mit 128-Kern-NVIDIA Maxwell ™ und eine Quad-Core-ARM® A57-CPU mit 1.43 GHz. Diese Hardware reicht aus, um eine Python-Anwendung auszuführen, die die Daten von den Sensoren der Turbine sammelt und formatiert und dann die aufruft Edge Manager-Agent API, um die Vorhersagen zu erhalten. Diese Anwendung vergleicht die Vorhersage mit einem Schwellenwert, um die Daten auf Anomalien zu überprüfen. Das Modell wird in Echtzeit aufgerufen.
Wann SageMaker Neo kompiliert das ML-Modell für Jetson Nano, eine Laufzeit (DLR), das für dieses Zielgerät optimiert wurde, ist im Bereitstellungspaket enthalten. Diese Laufzeit erkennt automatisch, dass sie auf einem Jetson Nano ausgeführt wird, und lädt das Modell für maximale Leistung direkt in die GPU des Geräts.
Der Edge Manager-Agent wird auch als Linux-Anwendung (arm64) verteilt, die als Hintergrundprozess (Daemon) auf Ihrem Jetson Nano ausgeführt werden kann. Es verwendet die Laufzeit, die SageMaker Neo im Kompilierungspaket enthält, um eine Schnittstelle mit dem optimierten Modell herzustellen und es als genau definierte API verfügbar zu machen. Diese API ist über ein Protokoll mit geringer Latenz (grpc + unix-Socket) in die lokale Anwendung integriert.
Die Cloud-Dienste
Nachdem Sie einige Details zur physischen Hardware für die Entwicklung des Windkraftanlagenparks kennen, ist es an der Zeit zu prüfen, welche AWS-Services die Lösung auf der Cloud-Seite unterstützen. Für ein minimales, eigenständiges Setup, um ein Modell auf dem Edge Manager-Agenten bereitzustellen und auszuführen, ist nur SageMaker und nichts weiter erforderlich. In diesem Projekt wurden jedoch andere Dienste mit zwei wichtigen Merkmalen verwendet: einem Mechanismus für die drahtlose Bereitstellung (OTA) und einem Dashboard zur Überwachung der Anomalien nahezu in Echtzeit.
Zusammenfassend sind folgende Komponenten für dieses Projekt erforderlich:
- Eine Geräteflotte (Edge Manager), die ein oder mehrere registrierte Geräte über den Agenten organisiert und steuert (auf jedem Gerät ausgeführt).
- Eins IoT-Sache pro Gerät und IoT-Dinggruppe, der vom OTA-Mechanismus verwendet wird, um über MQTT mit den Geräten zu kommunizieren
- AWS IoT Regeln und ein AWS Lambda Funktion zum Abrufen und Filtern von Anwendungsprotokollen und zum Aufnehmen in Amazon Elasticsearch-Dienst (Amazon ES)
- Eine Lambda-Funktion zum Analysieren der vom Agenten erfassten Modellmetriken, um sie in Amazon ES aufzunehmen
- Ein Elasticsearch-Server mit Kibana, mit Dashboards zur Überwachung der Anomalien (optional)
- SageMaker zum Erstellen, Kompilieren und Packen des ML-Modells
Das folgende Diagramm veranschaulicht diese Architektur.
Alles zusammenfügen
Nachdem wir alle Komponenten unseres Windkraftanlagenparks haben, ist es an der Zeit, die Schritte zu verstehen, die erforderlich sind, um all diese beweglichen Teile zu integrieren, ein Modell auf unseren Edge-Geräten bereitzustellen und eine Anwendung in Echtzeit laufen zu lassen und Anomalien vorherzusagen.
Das folgende Diagramm zeigt alle am Prozess beteiligten Schritte.
Die Lösung besteht aus folgenden Schritten:
- Der Datenwissenschaftler untersucht den Datensatz und entwirft ein Anomalieerkennungsmodell (Autoencoder) mit PyTorch unter Verwendung von SageMaker-Studio.
- Das Modell wird mit einem SageMaker-Schulungsjob geschult.
- Mit Neo wird das Modell für Jetson Nano optimiert (kompiliert).
- Edge Manager erstellt ein Bereitstellungspaket mit dem kompilierten Modell.
- Der Datenwissenschaftler erstellt einen IoT-Job, der eine Benachrichtigung über das neue Modell an die Edge-Geräte sendet.
- Die auf Jetson Nano ausgeführte Anwendung führt Folgendes aus:
- Erhält diese Benachrichtigung und lädt das Modellpaket von der herunter Amazon Simple Storage-Service (Amazon S3) Eimer.
- Entpackt das Modell und lädt es mithilfe der Edge Manager-Agenten-API (LoadModel).
- Liest die Sensoren von der Windkraftanlage, bereitet die Daten auf, ruft das ML-Modell auf und erfasst einige Modellmetriken mithilfe der Edge Manager-Agenten-API.
- Vergleicht die Vorhersage mit einer Basislinie, um mögliche Anomalien zu erkennen.
- Sendet die rohen Sensordaten an ein AWS IoT-Thema.
- Durch eine Regel liest AWS IoT das Thema der App-Protokolle und exportiert die Daten nach Amazon ES.
- Eine Lambda-Funktion erfasst die vom Agenten exportierten Modellmetriken (mittlerer durchschnittlicher Fehler) und nimmt die Daten in Amazon ES auf.
- Der Bediener verwendet ein Kibana-Dashboard, um nach Anomalien zu suchen.
Konfigurieren Sie Ihr Edge-Gerät
Der Edge Manager-Agent verwendet die von bereitgestellten Zertifikate AWS IoT-Kern um andere AWS-Services zu authentifizieren und aufzurufen. Auf diese Weise müssen Sie zuerst ein IoT-Objekt und dann eine Edge-Geräteflotte erstellen. Zunächst müssen Sie jedoch einige grundlegende Ressourcen vorbereiten, um Ihre Lösung zu unterstützen.
Erstellen Sie die erforderlichen Ressourcen
Bevor Sie beginnen, müssen Sie konfigurieren AWS-Befehlszeilenschnittstelle zuerst auf Ihrer Workstation (falls erforderlich) und dann, um die folgenden Ressourcen zu erstellen:
- Ein S3-Bucket zum Speichern der erfassten Daten
- An AWS Identity and Access Management and (IAM) Rolle für Ihre Geräte
- Eine IoT-Sache, die Sie Ihrem Edge Manager-Gerät zuordnen können
- Eine IoT-Richtlinie zum Steuern der Berechtigungen der temporären Anmeldeinformationen des Edge-Geräts
- Erstellen Sie einen neuen Bucket für die Lösung.
Jedes Mal, wenn Sie CaptureData in der Agenten-API aufrufen, werden die Tensoren (Eingaben und Vorhersagen) in diesen Bucket hochgeladen.
Als Nächstes erstellen Sie Ihre IAM-Rolle.
- Erstellen Sie auf der IAM-Konsole eine Rolle mit dem Namen WindTurbineFarm, damit die Geräte auf Ressourcen in Ihrem Konto zugreifen können.
- Fügen Sie dieser Rolle Berechtigungen hinzu, um Dateien in den von Ihnen erstellten S3-Bucket hochzuladen.
- Fügen Sie der Rolle die folgenden vertrauenswürdigen Entitäten hinzu:
amazonaws.com
iot.amazonaws.com
amazonaws.com
Verwenden Sie den folgenden Code (geben Sie den Namen für den S3-Bucket, Ihr AWS-Konto und die Region an):
Sie können jetzt Ihr IoT-Objekt erstellen, das Sie später Ihrem Edge Manager-Gerät zuordnen.
- Auf der AWS IoT Core-Konsole unter Verwalten, wählen Dinge
- Auswählen Erstellen.
- Benennen Sie Ihr Gerät (für diesen Beitrag Edge-Device-0).
- Erstellen Sie eine neue Gruppe oder wählen Sie eine vorhandene Gruppe aus (für diesen Beitrag WindTurbineFarm).
- Erstellen Sie ein Zertifikat.
- Laden Sie die Zertifikate einschließlich der Stammzertifizierungsstelle herunter.
- Aktivieren Sie das Zertifikat.
Sie erstellen jetzt Ihre Richtlinie, die die Berechtigungen der temporären Anmeldeinformationen des Edge-Geräts steuert.
- Auf der AWS IoT Core-Konsole unter Security, wählen Richtlinien.
- Auswählen Erstellen.
- Nennen Sie die Richtlinie (für diesen Beitrag WindTurbine).
- Auswählen Erweiterter Modus.
- Geben Sie die folgende Richtlinie ein und geben Sie Ihr AWS-Konto und Ihre Region an:
- Auswählen Erstellen.
Zuletzt hängen Sie die Richtlinie an das Zertifikat an.
- Auf der AWS IoT Core-Konsole unter Security, wählen Zertifikate.
- Wählen Sie das von Ihnen erstellte Zertifikat aus.
- Auf dem Aktionen Menü, wählen Sie Richtlinie anhängen.
- Wählen Sie die Richtlinie WindTurbine aus.
- Auswählen Anfügen.
Jetzt kann Ihr IoT-Objekt mit einem Edge-Gerät verbunden werden. Wiederholen Sie diese Schritte (außer zum Erstellen der Richtlinie) für jedes weitere Gerät in Ihrer Geräteflotte. In einer Produktionsumgebung mit Hunderten oder Tausenden von Geräten wenden Sie einfach einen anderen Ansatz an und verwenden automatisierte Skripts und Parameterdateien, um alle IoT-Dinge bereitzustellen.
Erstellen Sie die Edge-Flotte
Führen Sie die folgenden Schritte aus, um Ihre Edge-Flotte zu erstellen:
- Auf der SageMaker-Konsole unter Kanteninferenz, wählen Edge-Geräteflotten.
- Auswählen Geräteflotte erstellen.
- Geben Sie einen Namen für das Gerät ein (für diesen Beitrag:
WindTurbineFarm
). - Geben Sie den ARN der IAM-Rolle ein, die Sie in den vorherigen Schritten verwendet haben (
arn:aws:iam::<<AWS_ACCOUNT_ID>>:role/WindTurbineFarm
). - Geben Sie den Ausgangs-S3-Bucket-URI ein (
s3://<<NAME_OF_YOUR_BUCKET>>/wind_turbine_data/
). - Auswählen Absenden.
Jetzt müssen Sie der Flotte ein neues Gerät hinzufügen.
- Auf der SageMaker-Konsole unter Kanteninferenz, wählen Edge-Geräte.
- Auswählen Geräte registrieren.
- Aussichten für Device PropertiesGeben Sie den Namen der von Ihnen erstellten Geräteflotte ein (
WindTurbineFarm
). - Auswählen Weiter.
- Aussichten für GerätenameGeben Sie einen eindeutigen Namen für Ihr Gerät ein (für diesen Beitrag verwenden wir denselben Namen wie für unser IoT-Objekt.)
edge-device-wind-turbine-00000000000
). - Aussichten für IoT-NameGeben Sie den Namen des zuvor erstellten Objekts ein (
edge-device-0
). - Auswählen Absenden.
Wiederholen Sie den Registrierungsvorgang für alle anderen Geräte. Jetzt können Sie SSH an Ihren Jetson Nano senden und die Konfiguration Ihres Geräts abschließen.
Bereiten Sie das Edge-Gerät vor
Bevor Sie mit der Konfiguration Ihres Jetson Nano beginnen, müssen Sie ihn installieren Jetpack 4.4.1 in deinem Nano. Dies ist die Version, mit der Sie diese Demo erstellen, ausführen und testen.
Der Modellvorbereitungsprozess für Ihr Zielgerät ist in Bezug auf die auf Ihrem Gerät installierten Versionen der Bibliotheken sehr empfindlich. Da das Zielgerät beispielsweise ein Jetson Nano ist, optimiert Neo das Modell und die Laufzeit auf eine bestimmte Version von TensorRT und CUDA. Die Laufzeit (libdlr.so
) ist physisch mit den Versionen verknüpft, die Sie im Kompilierungsjob angegeben haben. Dies bedeutet, dass wenn Sie Ihr Modell mit Neo für JetPack 4.4.1 kompilieren, es mit JetPack 3.x nicht funktioniert. und umgekehrt.
- Wenn JetPack 4.4.1 auf Ihrem Jetson Nano ausgeführt wird, können Sie Ihr Gerät mit den folgenden Befehlen konfigurieren:
- Laden Sie die Linux ARMv8-Version des Edge Manager-Agenten herunter.
- Kopieren Sie das Paket auf Ihren Jetson Nano (
scp
). Erstellen Sie einen Ordner für den Agenten und entpacken Sie das Paket in Ihrem Home-Verzeichnis:
- Kopieren Sie die AWS IoT Core-Zertifikate, die Sie im vorherigen Abschnitt für Ihr Ding bereitgestellt haben, in das Verzeichnis
~/agent/certificates/iot
in Ihrem Jetson Nano.
In diesem Verzeichnis sollten die folgenden Dateien angezeigt werden:
- pem - CA root
- < > -public.pem.key - Öffentlicher Schlüssel
- < > -private.pem.key - Privat Schlüssel
- < > -certificate.pem.crt - Zertifikat
- Rufen Sie das Stammzertifikat ab, das zum Signieren des von Edge Manager erstellten Bereitstellungspakets verwendet wird. Der Agent verwendet dies, um das Modell zu validieren.
- Kopieren Sie dieses Zertifikat in das Verzeichnis
~/agent/certificates/root
in Ihrem Jetson Nano.
Als Nächstes erstellen Sie die Konfigurationsdatei des Edge Manager-Agenten.
- Öffnen Sie eine leere Datei mit dem Namen ~ / agent / sagemaker_edge_config.json und geben Sie den folgenden Code ein:
Geben Sie die Informationen für die folgenden Ressourcen an:
- SAGEMAKER_EDGE_DEVICE_NAME - Der eindeutige Name Ihres Geräts, den Sie zuvor definiert haben.
- AWS_REGION - Die Region, in der Sie Ihr Edge-Gerät erstellt haben.
- LINUX_USER - Der Linux-Benutzername, den Sie in Jetson Nano verwenden.
- CERT_PRÄFIX - Das Präfix der Zertifikatdateien, die Sie bei der Bereitstellung Ihres IoT-Dings im vorherigen Abschnitt erstellt haben.
- CREDENTIALS_ENDPOINT_HOST - Ihr Endpunkt-Host. Sie können diesen Endpunkt über das erhalten AWS-Befehlszeilenschnittstelle (AWS CLI). (Installieren Sie die AWS CLI, falls Sie sie noch nicht haben.) Verwenden Sie Anmeldeinformationen desselben Kontos und derselben Region, die Sie in den vorherigen Abschnitten verwendet haben (dies ist nicht die Schatten-URL des IoT-Dings). Führen Sie dann den folgenden Befehl aus, um den Endpunkthost abzurufen:
- S3_BUCKET - Der Name des S3-Buckets, mit dem Sie im vorherigen Abschnitt Ihre Edge-Geräteflotte konfiguriert haben.
- Speichern Sie die Datei mit all diesen Änderungen.
Jetzt können Sie den Edge Manager-Agenten in Ihrem Jetson Nano ausführen.
- Führen Sie die folgenden Befehle aus, um den Agenten zu testen:
Der folgende Screenshot zeigt Ihre Ausgabe.
Der Agent wird jetzt ausgeführt. Nach einigen Minuten sehen Sie den Herzschlag des Geräts, der auf der Konsole angezeigt wird. Um es auf der SageMaker-Konsole zu sehen, klicken Sie unter Kanteninferenz, wählen Edge-Geräte und wählen Sie Ihr Gerät.
Konfigurieren Sie die Anwendung
Jetzt ist es Zeit, die Anwendung einzurichten, die auf dem Edge-Gerät ausgeführt wird. Diese Anwendung ist verantwortlich für Folgendes:
- Rufen Sie die temporären Anmeldeinformationen mithilfe des Zertifikats ab
- Hören Sie sich die OTA-Aktualisierungsthemen an, um festzustellen, ob ein neues Modellpaket zur Bereitstellung bereit ist
- Stellen Sie das verfügbare Modellpaket auf dem Edge-Gerät bereit
- Laden Sie das Modell bei Bedarf in den Agenten
- Führen Sie eine Endlosschleife durch:
- Lesen Sie die Sensordaten
- Formatieren Sie die Eingabedaten
- Rufen Sie das ML-Modell auf und erfassen Sie einige Metriken der Vorhersage
- Vergleichen Sie die Vorhersagen MAE (mittlerer durchschnittlicher Fehler) mit der Basislinie
- Veröffentlichen Sie Rohdaten in einem IoT-Thema (MQTT).
Um die Anwendung zu installieren, rufen Sie zuerst den benutzerdefinierten AWS IoT-Endpunkt ab. Wählen Sie in der AWS IoT Core-Konsole aus Einstellungen . Kopieren Sie den Endpunkt und verwenden Sie ihn im folgenden Code:
Die Anwendung gibt ungefähr den folgenden Screenshot aus.
Optional: Führen Sie diese Anwendung mit dem Parameter –test-mode aus, wenn Sie nur einen Test ausführen möchten, ohne dass eine Windkraftanlage an das Edge-Gerät angeschlossen ist.
Wenn alles gut gegangen ist, wartet die Anwendung auf ein neues Modell. Es ist Zeit, ein neues Modell zu trainieren und es auf dem Jetson Nano einzusetzen.
Trainieren und implementieren Sie das ML-Modell
Dieser Beitrag zeigt, wie Anomalien in den Komponenten einer Windkraftanlage erkannt werden. Es gibt viele Möglichkeiten, dies mit den von den Sensoren erfassten Daten zu tun. Um dieses Beispiel so einfach wie möglich zu halten, erstellen Sie ein Modell, das Vibration, Windgeschwindigkeit, Rotation (pro Sekunde) und die erzeugte Spannung analysiert, um festzustellen, ob eine Anomalie vorliegt oder nicht. Zu diesem Zweck trainieren wir eine Autoencoder Verwendung von PyTorch auf SageMaker und bereiten Sie es für die Bereitstellung auf Ihrem Jetson Nano vor.
Diese Modellarchitektur bietet zwei Vorteile: Sie ist unbeaufsichtigt, sodass wir unsere Daten nicht kennzeichnen müssen, und Sie können Daten von Windkraftanlagen erfassen, die einwandfrei funktionieren. Daher ist Ihr Modell darauf trainiert, festzustellen, was Sie als normales Verhalten Ihrer Windkraftanlagen betrachten. Wenn in einem Teil der Turbine ein Defekt auftritt, tritt eine Drift in den Sensordaten auf, die das Modell als abnormales Verhalten (eine Anomalie) interpretiert.
Der folgende Screenshot ist ein Beispiel für die Rohdaten, die von den Turbinensensoren erfasst wurden.
Die Daten weisen die folgenden Merkmale auf:
- nanoID - ID des Edge-Geräts, das die Daten gesammelt hat
- Turbinen-Id - ID der Turbine, die diese Daten erzeugt hat
- arduino_timestamp - Zeitstempel des Arduino, der diese Turbine betrieb
- nanoFreemem: Menge an freiem Speicher in Bytes
- EreignisZeit - Zeitstempel der Reihe
- rPS - Drehung des Rotors in Umdrehungen pro Sekunde
- Spannung - Vom Generator erzeugte Spannung in Millivolt
- qw, qx, qy, qz - Quaternion-Winkelbeschleunigung
- gx, gy, gz - Schwerkraftbeschleunigung
- Axt, ay, az - Lineare Beschleunigung
- Getriebetemp - Innentemperatur
- Umgebungstemperatur - Außentemperatur
- Luftfeuchtigkeit - Luftfeuchtigkeit
- Druck - Luftdruck
- Gas - Luftqualität
- wind_speed_rps - Windgeschwindigkeit in Umdrehungen pro Sekunde
Die ausgewählten Funktionen, die auf unseren Zielen basieren, sind: qx
,qx
,qy
,qz
(Winkelbeschleunigung), wind_speed_rps
, rps
und voltage
. Das folgende Bild ist ein Beispiel für die Funktion qx
. Die vom Beschleunigungsmesser erzeugten Daten sind zu verrauscht, daher müssen wir sie zuerst bereinigen.
Die Winkelgeschwindigkeit (Quaternion) wird zuerst in Euler-Winkel (Rollen, Neigen, Gieren) umgewandelt. Dann entstören wir alle Funktionen mit Wavelets (PyWavelets) und normalisiere sie. Der folgende Screenshot zeigt die Signale nach diesen Transformationen.
Schließlich wenden wir ein Schiebefenster auf diesen resultierenden Datensatz (sechs Merkmale) an, um die zeitliche Beziehung zwischen den Nachbarablesungen zu erfassen und den Eingangstensor unseres ML-Modells zu erstellen. Das durchschnittliche Intervall zwischen zwei aufeinanderfolgenden Abtastwerten beträgt ungefähr 50 Millisekunden. Jedes Zeitfenster (unseres Schiebefensters) wird dann unter Verwendung der folgenden Struktur in einen Tensor umgewandelt:
- Tensor - 6 Merkmale x 10 Schritte (100 Proben) = 6 × 100
- Schritt - Gruppe von Zeitschritten
- Zeitschritt - Gruppe von Intervallen (time_step = 20 = ~ 5 Sekunden)
- Intervall - Gruppe von Proben (Intervall = 5 = ~ 250 Millisekunden)
- Umgeformter Tensor - 6 x 10 x 10
Interval
, time step
und step
sind Hyperparameter, die Sie während des Trainings anpassen können. Das Endergebnis ist ein Datenstrom, der als mehrdimensionaler Tensor codiert ist (was einige Sekunden in der Vergangenheit darstellt). Der trainierte Autoencoder versucht, den Eingangstensor als Ausgang (Vorhersage) wiederherzustellen. Indem Sie die MAE zwischen Eingabe und Ausgabe messen und mit einem vordefinierten Schwellenwert vergleichen, können Sie potenzielle Anomalien identifizieren.
Ein wichtiger Aspekt dieses Ansatzes besteht darin, dass die linearen und nichtlinearen Korrelationen zwischen den Merkmalen extrahiert werden, um die Auswirkungen eines Merkmals auf ein anderes, wie z. B. die Windgeschwindigkeit auf die Rotation oder die erzeugte Spannung, besser zu verstehen.
Jetzt ist es Zeit, dieses Experiment durchzuführen.
- Zunächst müssen Sie auf Richten Sie Ihre Studio-Umgebung ein wenn du noch keinen hast.
- Klonen Sie das GitHub-Repo
https://github.com/aws-samples/amazon-sagemaker-edge-manager-demo
in einem Studio-Terminal.
Das Repository enthält einen Ordner mit dem Namen 03_Notebooks
mit zwei Jupyter-Notizbüchern.
- Befolgen Sie die Anweisungen im ersten Notizbuch, um den Datensatz vorzubereiten. - Da die Beschleunigerdaten ein Signal sind, enthalten sie Rauschen, sodass Sie einen Entrauschungsmechanismus ausführen, um die Daten zu bereinigen.
Der endgültige Datensatz enthält nur sechs Funktionen: Rollen, Neigen, Gieren (konvertiert von a quaternion zu Euler-Winkel), wind_speed_rps, rps (Umdrehungen pro Sekunde), Spannung (vom Generator erzeugt).
- Befolgen Sie die Anweisungen im zweiten Notizbuch, um das Modell zu trainieren, zu verpacken und bereitzustellen:
- Verwenden Sie SageMaker, um Ihren PyTorch-Autoencoder (CNN-basiert) zu trainieren.
- Führen Sie eine Stapelvorhersage aus, um MAE und Schwellenwert zu berechnen, die von der App verwendet werden, um festzustellen, ob die Vorhersage eine Anomalie ist oder nicht.
- Kompilieren Sie das Modell mit Neo zu Jetson Nano.
- Erstellen Sie ein Bereitstellungspaket mit Edge Manager.
- Erstellen Sie einen IoT-Job, der ein JSON-Dokument zu einem Thema veröffentlicht, das von der Anwendung, die auf Ihrem Jetson Nano ausgeführt wird, abgehört wird.
Die Anwendung ruft das Paket ab, entpackt es, lädt das Modell in den Edge Manager-Agenten und entsperrt den Anwendungslauf.
Beide Notebooks sind sehr detailliert. Befolgen Sie daher die Schritte sorgfältig. Anschließend können Sie ein Anomalieerkennungsmodell in Ihrem Jetson Nano bereitstellen.
Kompilierungsjob und Modelloptimierung
Einer der wichtigsten Schritte des gesamten Prozesses ist der Modelloptimierungsschritt im zweiten Notizbuch. Wenn Sie ein Modell mit SageMaker Neo kompilieren, wird nicht nur das Modell optimiert, um die Vorhersageleistung auf dem Zielgerät zu verbessern, sondern es wird auch das ursprüngliche Modell in eine Zwischendarstellung konvertiert. Nach dieser Konvertierung müssen Sie das ursprüngliche Framework (PyTorch, TensorFlow, MXNet) nicht mehr verwenden. Diese Darstellung wird dann durch eine leichte Laufzeit interpretiert (DLR), die mit dem Modell von Neo verpackt ist. Sowohl die Laufzeit als auch das optimierte Modell sind Bibliotheken, die als native Programme für ein bestimmtes Betriebssystem und eine bestimmte Architektur kompiliert wurden. Im Fall von Jetson Nano ist das Betriebssystem eine Linux-Distribution und die Architektur: ARM8 64bits. Die Laufzeit wird in diesem Fall verwendet TensorRT für maximale Leistung auf der GPU des Jetson.
Wenn Sie einen Kompilierungsjob auf Neo starten, müssen Sie einige Parameter angeben, die sich auf die Einrichtung Ihres Zielgeräts beziehen, z.
- trt-ver - 7.1.3
- cuda-ver - 10.2
- GPU-Code - sm_53
Die GPU des Jetson Nano ist eine NVIDIA Maxwell, Architekturversion 53, daher ist der Parameter gpu-code für alle Kompilierungsjobs gleich. Trt-ver und cuda-ver hängen jedoch von der Version von TensorRT und CUDA ab, die auf Ihrem Nano installiert sind. Bei der Vorbereitung Ihres Edge-Geräts haben Sie Ihren Jetson Nano mit JetPack 4.4.1 eingerichtet. Dies stellt sicher, dass das Modell, das Sie mit Neo optimieren, mit Ihrem Jetson Nano kompatibel ist.
Visualisieren Sie die Ergebnisse
Das Dashboard-Setup ist für diesen Beitrag nicht zulässig. Weitere Informationen finden Sie unter Analysieren Sie gerätegenerierte Daten mit AWS IoT und Amazon Elasticsearch Service.
Nachdem Sie Ihr Modell auf Ihrem Jetson Nano installiert und ausgeführt haben, ist es an der Zeit, das Verhalten Ihrer Windkraftanlagen über ein Dashboard zu überprüfen. Die Anwendung, die Sie auf dem Jetson Nano bereitgestellt haben, sammelt einige Protokolle und sendet sie an zwei verschiedene Orte:
- Das IoT MQTT-Thema
wind-turbine/logs/<<iot_thing_name>>
enthält die App-Protokolle und Rohdaten, die von den Windkraftanlagensensoren gesammelt wurden - Der S3-Eimer
s3://<<S3_BUCKET>>/wind_turbine_data
enthält die Metriken des ML-Modells
Sie können diese Daten abrufen und in Amazon ES oder eine andere Datenbank aufnehmen. Anschließend können Sie Ihre bevorzugten Berichte verwenden, um Dashboards vorzubereiten.
Die folgende Visualisierung zeigt drei verschiedene, aber korrelierte Dinge für jede der fünf Turbinen: die Drehzahl (in U / min), die erzeugte Spannung und die erkannten Anomalien für Spannung, Rotation und Vibration.
In die Rohdaten der Turbinen wurde etwas Rauschen eingespeist, um Ausfälle zu simulieren.
Die folgende Visualisierung zeigt eine Aggregation der Drehzahl der Turbinen und der erzeugten Spannungsanomalien über die Zeit.
Zusammenfassung
Die sichere und zuverlässige Aufrechterhaltung des Lebenszyklus eines ML-Modells, das auf einer Flotte von Geräten bereitgestellt wird, ist keine leichte Aufgabe. Mit Edge Manager können Sie jedoch den Implementierungsaufwand und die Betriebskosten einer solchen Lösung reduzieren. Mit einer Demo wie dem Mini-Windkraftanlagenpark können Sie Ihre ML-Pipeline mit den von AWS bereitgestellten Services und Fachkenntnissen experimentieren, optimieren und automatisieren.
Um eine Lösung für Ihre eigenen Anforderungen zu erstellen, beziehen Sie den in diesem Projekt verwendeten Code und die Artefakte aus dem GitHub Repo. Wenn Sie mehr Übung mit Edge Manager wünschen, lesen Sie die End-to-End-Workshop für Edge Manager in Studio.
Über den Autor
Samir Araújo ist AI / ML Solutions Architect bei AWS. Er hilft Kunden bei der Erstellung von AI / ML-Lösungen, die ihre geschäftlichen Herausforderungen mithilfe von AWS lösen. Er hat an mehreren AI / ML-Projekten gearbeitet, die sich mit Computer Vision, Verarbeitung natürlicher Sprache, Prognose, ML am Rande und vielem mehr befassen. In seiner Freizeit spielt er gerne mit Hardware- und Automatisierungsprojekten und hat ein besonderes Interesse an Robotik.
- 3d
- Beschleuniger
- Zugang
- Konto
- Buchhaltung
- Action
- Zusätzliche
- Amazon
- Amazon Sage Maker
- Anomalieerkennung
- Bienen
- App
- Anwendung
- APT
- Architektur
- um
- Automatisiert
- Automation
- AWS
- Baseline
- BRIDGE
- bauen
- Geschäft
- Kabel
- rufen Sie uns an!
- Kameras
- Fälle
- Bescheinigung
- Zertifikate
- Cloud
- CNN
- Code
- Das Sammeln
- kommerziell
- Unternehmen
- Berechnen
- Computer Vision
- Computer
- Verbrauch
- Umwandlung (Conversion)
- Kosten
- Rat
- Erstellen
- Referenzen
- Strom
- Kunden
- Armaturenbrett
- technische Daten
- Datenwissenschaftler
- Datenbase
- Tag
- Lieferanten
- Entdeckung
- entwickeln
- Geräte
- Diy
- Echo
- Edge
- Effizienz
- Elasticsearch
- Elektronik
- Endpunkt
- Energie
- Entwicklung
- Arbeitsumfeld
- Ausrüstung
- Experiment
- exportieren
- Ausfuhr
- KONZENTRAT
- Bauernhof
- Merkmal
- Eigenschaften
- Ende
- Vorname
- FLOTTE
- folgen
- Unser Ansatz
- Frei
- Funktion
- Git
- GitHub
- Global
- GPU
- Gruppe an
- Hardware
- Startseite
- Ultraschall
- Hilfe
- HTTPS
- hunderte
- IAM
- identifizieren
- Identitätsschutz
- Image
- Einschließlich
- industriell
- industrielle Ausrüstung
- Industrielles IoT
- Energiegewinnung
- Information
- Interesse
- Internet
- beteiligt
- iot
- IT
- Job
- Jobs
- Wesentliche
- Sprache
- starten
- LERNEN
- lernen
- !
- Line
- linux
- aus einer regionalen
- Maschinelles Lernen
- Management
- Karte
- Metrik
- Million
- ML
- Mobil
- mobile Geräte
- Modell
- Überwachung
- Am beliebtesten
- nano
- Natürliche Sprache
- Verarbeitung natürlicher Sprache
- NEO
- Lärm
- Laptops
- Benachrichtigung
- Nvidia
- die
- Andere
- Outdoor
- Leistung
- Persönliche Computer
- Kunststoff
- Plattform
- Gesteckt
- Datenschutzrichtlinien
- Beliebt
- Werkzeuge
- Prognose
- Prognosen
- Druck
- privat
- Produziert
- Produktion
- Programme
- Projekt
- Projekte
- Öffentlichkeit
- veröffentlichen
- Python
- Pytorch
- Qualität
- Roh
- Rohdaten
- Echtzeit
- Veteran
- erneuerbare Energie
- Ressourcen
- Downloads
- Die Ergebnisse
- Robotik
- Roboter
- Rollen
- Ohne eine erfahrene Medienplanung zur Festlegung von Regeln und Strategien beschleunigt der programmatische Medieneinkauf einfach die Rate der verschwenderischen Ausgaben.
- Führen Sie
- Laufen
- RX
- sagemaker
- Skalieren
- Sicherheitdienst
- ausgewählt
- Sensoren
- Lösungen
- kompensieren
- Shadow
- Einfacher
- SIX
- klein
- smart
- So
- Software
- Lösungen
- LÖSEN
- Geschwindigkeit
- Anfang
- begonnen
- Erklärung
- Lagerung
- speichern
- Sudo
- Lieferanten
- Support
- System
- Target
- Technische
- vorübergehend
- Tensorfluss
- Test
- Zeit
- Themen
- Ausbildung
- Turbine
- Aktualisierung
- URI
- USB
- Geschwindigkeit
- Seh-
- Visualisierung
- Wikipedia
- Wind
- Windenergie
- Windkraft
- Windkraftanlage
- Arbeiten
- X