Auf Englisch lesen

Freigeben über


Lernprogramm: Eine End-to-End-Lösung mit Azure Machine Learning und IoT Edge

Gilt für:Ja-Symbol IoT Edge 1.1

Wichtig

IoT Edge 1.1 Ende des Supports war der 13. Dezember 2022. Informationen darüber, wie dieses Produkt, dieser Dienst, diese Technologie oder diese API unterstützt werden, finden Sie im Microsoft Product Lifecycle. Weitere Informationen zum Aktualisieren auf die neueste Version von IoT Edge finden Sie unter Update IoT Edge.

Häufig möchten IoT-Anwendungen die intelligente Cloud und den intelligenten Edge nutzen. In diesem Lernprogramm führen wir Sie durch die Schulung eines Machine Learning-Modells mit Daten, die von IoT-Geräten in der Cloud gesammelt werden, das Modell in IoT Edge bereitstellen und das Modell regelmäßig verwalten und verfeinern.

Hinweis

Die Konzepte in dieser Reihe von Lernprogrammen gelten für alle Versionen von IoT Edge, aber das Beispielgerät, das Sie zum Testen des Szenarios erstellen, führt IoT Edge Version 1.1 aus.

Das Hauptziel dieses Lernprogramms ist die Einführung der Verarbeitung von IoT-Daten mit maschinellem Lernen, insbesondere am Edge. Während wir viele Aspekte eines allgemeinen maschinellen Lernworkflows berühren, ist dieses Lernprogramm nicht als eine ausführliche Einführung in maschinelles Lernen gedacht. Als Fall versuchen wir nicht, ein hochoptimiertes Modell für den Anwendungsfall zu erstellen – wir tun nur genug, um den Prozess der Erstellung und Verwendung eines lebensfähigen Modells für die IoT-Datenverarbeitung zu veranschaulichen.

In diesem Abschnitt des Lernprogramms wird folgendes erläutert:

  • Die Voraussetzungen, um die nachfolgenden Teile des Lernprogramms abzuschließen.
  • Die Zielgruppe des Lernprogramms.
  • Der Anwendungsfall, den das Lernprogramm simuliert.
  • Der gesamte Prozess, dem das Tutorial folgt, um den Anwendungsfall umzusetzen.

Wenn Sie kein Azure-Abonnement haben, erstellen Sie ein kostenloses Azure-Konto, bevor Sie beginnen.

Voraussetzungen

Um das Lernprogramm abzuschließen, benötigen Sie Zugriff auf ein Azure-Abonnement, in dem Sie über Berechtigungen zum Erstellen von Ressourcen verfügen. In diesem Lernprogramm werden mehrere der verwendeten Dienste Azure-Gebühren verursachen. Wenn Sie noch nicht über ein Azure-Abonnement verfügen, können Sie möglicherweise mit einem kostenlosen Azure-Konto beginnen.

Sie benötigen auch einen Computer mit PowerShell, auf dem Sie Skripts ausführen können, um einen virtuellen Azure-Computer als Entwicklungscomputer einzurichten.

In diesem Dokument verwenden wir die folgenden Tools:

  • Ein Azure IoT-Hub für die Datenerfassung

  • Azure Notebooks als unser Haupt-Front-End für Datenvorbereitung und maschinelle Lernexperimente. Das Ausführen von Python-Code in einem Notizbuch in einer Teilmenge der Beispieldaten ist eine hervorragende Möglichkeit, um während der Datenvorbereitung schnell iterativ und interaktiv zu arbeiten. Jupyter-Notizbücher können auch verwendet werden, um Skripts vorzubereiten, die in einem Compute-Back-End skaliert ausgeführt werden.

  • Azure Machine Learning als Backend für maschinelles Lernen im großen Maßstab und für die Bildgenerierung mit maschinellem Lernen. Wir steuern das Azure Machine Learning-Back-End mithilfe von Skripts, die in Jupyter-Notizbüchern vorbereitet und getestet wurden.

  • Azure IoT Edge für off-Cloud-Anwendung eines Machine Learning-Images

Offensichtlich stehen weitere Optionen zur Verfügung. In bestimmten Szenarien kann IoT Central z. B. als No-Code-Alternative zum Erfassen anfänglicher Schulungsdaten von IoT-Geräten verwendet werden.

Zielgruppe und Rollen

Dieser Artikelsatz ist für Entwickler ohne vorherige Erfahrung in der IoT-Entwicklung oder maschinellem Lernen vorgesehen. Die Bereitstellung von maschinellem Lernen am Netzwerkrand erfordert Kenntnisse darüber, wie man eine Vielzahl von Technologien miteinander verbinden kann. Daher befasst sich dieses Lernprogramm mit einem vollständigen End-to-End-Szenario, um eine Möglichkeit zu veranschaulichen, diese Technologien für eine IoT-Lösung zusammenzuführen. In einer realen Umgebung können diese Aufgaben unter mehreren Personen mit unterschiedlichen Spezialisierungen verteilt werden. Entwickler konzentrieren sich beispielsweise auf Geräte- oder Cloudcode, während Data Scientists die Analysemodelle entworfen haben. Um es einem einzelnen Entwickler zu ermöglichen, dieses Lernprogramm erfolgreich abzuschließen, haben wir zusätzliche Anleitungen mit Erkenntnissen und Links zu weiteren Informationen bereitgestellt, die wir hoffen, dass es ausreichend ist, um zu verstehen, was getan wird, und warum.

Alternativ können Sie sich mit Kollegen verschiedener Rollen zusammenfassen, um das Lernprogramm zusammen zu verfolgen, Ihr volles Fachwissen zu tragen und als Team zu lernen, wie die Dinge zusammenpassen.

In beiden Fällen gibt jeder Artikel in diesem Lernprogramm die Rolle des Benutzers an, um die Leser zu orientieren. Zu diesen Rollen gehören:

  • Cloudentwicklung (einschließlich eines Cloudentwicklers, der in einer DevOps-Kapazität arbeitet)
  • Datenanalysen

Anwendungsfall: Prädiktive Wartung

Wir basieren auf diesem Szenario auf einem Anwendungsfall, der 2008 auf der Konferenz über Prognostik und Gesundheitsmanagement (PHM08) vorgestellt wurde. Ziel ist es, die verbleibende Nutzungsdauer (RUL) einer Reihe von Turbofan-Flugzeugmotoren vorherzusagen. Diese Daten wurden mit C-MAPSS generiert, der kommerziellen Version von MAPSS (Modular Aero-Propulsion System Simulation) Software. Diese Software bietet eine flexible Turbofan-Motorsimulationsumgebung, um die Integritäts-, Steuerungs- und Motorparameter bequem zu simulieren.

Die in diesem Lernprogramm verwendeten Daten stammen aus dem Turbofan Motordegradierungssimulationsdatensatz.

Aus der Readme-Datei:

Experimentelles Szenario

Datensätze bestehen aus mehreren multivariaten Zeitreihen. Jeder Datensatz wird weiter in Schulungs- und Testuntermengen unterteilt. Jede Serienserie stammt aus einem anderen Motor , d. h. die Daten können als aus einer Flotte von Motoren desselben Typs betrachtet werden. Jeder Motor beginnt mit unterschiedlichen Graden des anfänglichen Verschleißes und der Herstellungsvariationen, die dem Benutzer unbekannt sind. Diese Abnutzung und Variation gilt als normal, d. h., es wird nicht als Fehlerbedingung betrachtet. Es gibt drei Betriebseinstellungen, die erhebliche Auswirkungen auf die Motorleistung haben. Diese Einstellungen sind auch in den Daten enthalten. Die Daten sind mit Sensorgeräuschen kontaminiert.

Der Motor läuft normal zu Beginn jeder Zeitreihe und entwickelt irgendwann während der Serie einen Fehler. Im Trainingssatz nimmt der Fehler an Größe zu, bis ein Systemausfall auftritt. Im Testsatz endet die Zeitreihe eine gewisse Zeit vor einem Systemfehler. Ziel des Wettbewerbs ist es, die Anzahl der verbleibenden Betriebszyklen vor dem Ausfall im Prüfsatz vorherzusagen, d. h. die Anzahl der Betriebszyklen nach dem letzten Zyklus, den der Motor weiter betreiben wird. Außerdem wurde ein Vektor der tatsächlichen Restwertwerte (Remaining Useful Life, RUL) für die Testdaten bereitgestellt.

Da die Daten für einen Wettbewerb veröffentlicht wurden, wurden mehrere Ansätze zur Ableitung von Machine Learning-Modellen unabhängig voneinander veröffentlicht. Wir haben festgestellt, dass das Studium von Beispielen hilfreich ist, um den Prozess und die Begründung zu verstehen, die an der Erstellung eines bestimmten maschinellen Lernmodells beteiligt ist. Siehe beispiel:

Flugzeugmotorfehlervorhersagemodell von GitHub-Benutzer jancervenka.

Turbofan-Motorbeeinträchtigung durch GitHub-Benutzer hankroark.

Prozess

Die folgende Abbildung veranschaulicht die groben Schritte, die wir in diesem Lernprogramm ausführen:

Architekturdiagramm für Prozessschritte

  1. Sammeln von Schulungsdaten: Der Prozess beginnt mit der Erfassung von Schulungsdaten. In einigen Fällen wurden daten bereits gesammelt und sind in einer Datenbank oder in Form von Datendateien verfügbar. In anderen Fällen, insbesondere für IoT-Szenarien, müssen die Daten von IoT-Geräten und Sensoren erfasst und in der Cloud gespeichert werden.

    Wir gehen davon aus, dass Sie keine Sammlung von Turbofanmotoren haben, daher enthalten die Projektdateien einen einfachen Gerätesimulator, der die NASA-Gerätedaten an die Cloud sendet.

  2. Vorbereiten von Daten. In den meisten Fällen müssen die rohen Daten, die von Geräten und Sensoren gesammelt werden, für maschinelles Lernen vorbereitet werden. In diesem Schritt können Datenbereinigung, Datenumformatierung oder Vorverarbeitung durchgeführt werden, um zusätzliche Informationen einzufügen, auf die das maschinelle Lernen zugreifen kann.

    Bei der Datenvorbereitung für die Maschinendaten unseres Flugzeugmotors werden explizite Zeit-bis-zum-Ausfall-Zeiten für jeden Datenpunkt in der Stichprobe basierend auf den tatsächlichen Beobachtungen der Daten berechnet. Diese Informationen ermöglichen es dem Machine Learning-Algorithmus, Korrelationen zwischen tatsächlichen Sensordatenmustern und der erwarteten verbleibenden Lebensdauer des Moduls zu finden. Dieser Schritt ist hochgradig domänenspezifisch.

  3. Erstellen Sie ein Machine Learning-Modell. Basierend auf den vorbereiteten Daten können wir nun mit verschiedenen Machine Learning-Algorithmen und Parametrisierungen experimentieren, um Modelle zu trainieren und die Ergebnisse miteinander zu vergleichen.

    In diesem Fall vergleichen wir zum Testen das vom Modell berechnete vorhergesagte Ergebnis mit dem tatsächlichen Ergebnis, das für eine Reihe von Motoren beobachtet wurde. In Azure Machine Learning können wir die verschiedenen Iterationen von Modellen verwalten, die wir in einer Modellregistrierung erstellen.

  4. Stellen Sie das Modell bereit. Sobald wir ein Modell haben, das unseren Erfolgskriterien entspricht, können wir zur Bereitstellung wechseln. Dazu gehört das Umschließen des Modells in eine Webdienst-App, die mithilfe von REST-Aufrufen mit Daten gefüttert und Analyseergebnisse zurückgegeben werden kann. Die Webdienst-App wird dann in einen Docker-Container verpackt, der wiederum entweder in der Cloud oder als IoT Edge-Modul bereitgestellt werden kann. In diesem Beispiel konzentrieren wir uns auf die Implementierung auf IoT Edge.

  5. Verwalten und Verfeinern des Modells. Unsere Arbeit ist nicht abgeschlossen, sobald das Modell bereitgestellt wurde. In vielen Fällen möchten wir weiterhin Daten sammeln und diese Daten regelmäßig in die Cloud hochladen. Anschließend können wir diese Daten verwenden, um unser Modell neu zu trainieren und zu verfeinern, das wir dann für IoT Edge erneut bereitstellen können.

Bereinigen von Ressourcen

Dieses Tutorial ist Teil einer Reihe, bei der jeder Artikel auf der Arbeit der vorherigen aufbaut. Warten Sie, bis Sie das letzte Tutorial abgeschlossen haben, um alle Ressourcen bereinigen zu können.

Nächste Schritte

Dieses Lernprogramm ist in die folgenden Abschnitte unterteilt:

  1. Richten Sie Ihren Entwicklungscomputer und Azure-Dienste ein.
  2. Generieren Sie die Schulungsdaten für das Machine Learning-Modul.
  3. Trainieren und Bereitstellen des Machine Learning-Moduls.
  4. Konfigurieren Sie ein IoT Edge-Gerät so, dass es als transparentes Gateway fungiert.
  5. Erstellen und Bereitstellen von IoT Edge-Modulen
  6. Senden Sie Daten an Ihr IoT Edge-Gerät.

Fahren Sie mit dem nächsten Artikel fort, um einen Entwicklungscomputer einzurichten und Azure-Ressourcen bereitzustellen.