Tutorial: Bereitstellen von Azure Machine Learning als IoT Edge-Modul – VorschauTutorial: Deploy Azure Machine Learning as an IoT Edge module (preview)

Mithilfe von IoT Edge-Modulen können Sie Code bereitstellen, mit dem Ihre Geschäftslogik direkt auf Ihren IoT Edge-Geräten implementiert wird.You can use IoT Edge modules to deploy code that implements your business logic directly to your IoT Edge devices. In diesem Tutorial erfahren Sie Schritt für Schritt, wie Sie ein Azure Machine Learning-Modul bereitstellen, das anhand der Temperaturdaten eines simulierten Computers den Ausfall eines Geräts vorhersagt.This tutorial walks you through deploying an Azure Machine Learning module that predicts when a device fails based on simulated machine temperature data. Weitere Informationen zu Azure ML in IoT Edge finden Sie in der Azure Machine Learning-Dokumentation.For more information about Azure ML on IoT Edge, see Azure Machine Learning documentation.

Das Azure Machine Learning-Modul, das Sie in diesem Tutorial erstellen, liest die von Ihrem Gerät generierten Umgebungsdaten und kennzeichnet die Nachrichten ggf. als anomal.The Azure Machine Learning module that you create in this tutorial reads the environmental data generated by your device and labels the messages as anomalous or not.

In diesem Tutorial lernen Sie Folgendes:In this tutorial, you learn how to:

  • Erstellen eines Azure Machine Learning-ModulsCreate an Azure Machine Learning module
  • Pushen eines Modulcontainers in eine Azure Container RegistryPush a module container to an Azure container registry
  • Bereitstellen eines Azure Machine Learning-Moduls auf Ihrem IoT Edge-GerätDeploy an Azure Machine Learning module to your IoT Edge device
  • Anzeigen generierter DatenView generated data

Hinweis

Azure Machine Learning-Module in Azure IoT Edge sind als Public Preview verfügbar.Azure Machine Learning modules on Azure IoT Edge are in public preview.

Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.If you don't have an Azure subscription, create a free account before you begin.

VoraussetzungenPrerequisites

Ein Azure IoT Edge-Gerät:An Azure IoT Edge device:

  • Sie können Ihren Entwicklungscomputer oder einen virtuellen Computer als Edge-Gerät verwenden, indem Sie die Schritte ausführen, die in der Schnellstartanleitung für Linux- oder Windows-Geräte beschrieben sind.You can use your development machine or a virtual machine as an Edge device by following the steps in the quickstart for Linux or Windows devices.
  • Das Azure Machine Learning-Modul unterstützt keine ARM-Prozessoren.The Azure Machine Learning module does not support ARM processors.

Cloudressourcen:Cloud resources:

Deaktivieren der ProzessidentifizierungDisable process identification

Hinweis

Während der Vorschauphase unterstützt Azure Machine Learning das Sicherheitsfeature der Prozessidentifizierung nicht, das standardmäßig für IoT Edge aktiviert ist.While in preview, Azure Machine Learning does not support the process identification security feature enabled by default with IoT Edge. Das Feature kann mithilfe folgender Schritte deaktiviert werden.Below are the steps to disable it. Dies ist jedoch für Produktionsumgebungen nicht geeignet.This is however not suitable for use in production. Diese Schritte sind nur unter Linux erforderlich, da sie bei der Installation der Windows Edge-Runtime bereits ausgeführt wurden.These steps are only necessary on Linux, as you will have completed this during the Windows Edge runtime installation.

Um die Prozessidentifizierung auf Ihrem IoT Edge-Gerät zu deaktivieren, müssen Sie die IP-Adresse und den Port für workload_uri und management_uri im Abschnitt connect der IoT Edge-Daemonkonfiguration angeben.To disable process identification on your IoT edge device, you'll need to provide the ip address and port for workload_uri and management_uri in the connect section of the IoT Edge daemon configuration.

Ermitteln Sie zunächst die IP-Adresse.Get the IP address first. Geben Sie ipconfig in Ihre Befehlszeile ein, und kopieren Sie die IP-Adresse der Schnittstelle docker0.Enter ipconfig in your command line and copy the IP address of the docker0 interface.

Bearbeiten Sie die Konfigurationsdatei für den IoT Edge-Daemon:Edit the IoT Edge daemon configuration file:

sudo nano /etc/iotedge/config.yaml

Aktualisieren Sie den Abschnitt connect der Konfiguration mit Ihrer IP-Adresse.Update the connect section of the configuration with your IP address. Beispiel:For example:

connect:
  management_uri: "http://172.17.0.1:15580"
  workload_uri: "http://172.17.0.1:15581"

Geben Sie die gleichen Adressen in den Konfigurationsabschnitt listen ein.Enter the same addresses in the listen section of the configuration. Beispiel:For example:

listen:
  management_uri: "http://172.17.0.1:15580"
  workload_uri: "http://172.17.0.1:15581"

Erstellen Sie eine Umgebungsvariable vom Typ „IOTEDGE_HOST“ mit der Adresse für „management_uri“. (Wenn Sie sie dauerhaft festlegen möchten, fügen Sie sie zu /etc/environment hinzu.) Beispiel:Create an environment variable IOTEDGE_HOST with the management_uri address (To set it permanently, add it to /etc/environment).For example:

export IOTEDGE_HOST="http://172.17.0.1:15580"

Erstellen des Azure ML-ContainersCreate the Azure ML container

In diesem Abschnitt laden Sie die trainierten Modelldateien herunter und konvertieren sie in einen Azure ML Container.In this section, you download the trained model files and convert them into an Azure ML container.

Erstellen Sie gemäß der Anleitung unter Vorbereiten der Bereitstellung von Modellen in IoT Edge einen Docker-Container mit Ihrem Machine Learning-Modell.Follow the instructions in the Prepare to deploy models on IoT Edge documentation to create a Docker container with your machine learning model. Alle erforderlichen Komponenten für das Docker-Image finden Sie im Git-Repository mit dem KI-Toolkit für Azure IoT Edge.All the components required for the Docker image are in the AI Toolkit for Azure IoT Edge Git repo.

Anzeigen des ContainerrepositorysView the container repository

Überprüfen Sie, ob Ihr Containerimage erfolgreich erstellt und in der Azure Container Registry-Instanz gespeichert wurde, die Ihrer Machine Learning-Umgebung zugeordnet ist.Check that your container image was successfully created and stored in the Azure Container registry that is associated with your machine learning environment.

  1. Wechseln Sie im Azure-Portal zu Alle Dienste, und wählen Sie Containerregistrierungen aus.On the Azure portal, go to All Services and Select Container registries.
  2. Wählen Sie Ihre Registrierung aus.Select your registry. Der Name sollte mit mlcr beginnen und zu der Ressourcengruppe, dem Speicherort und dem Abonnement gehören, die Sie zum Einrichten der Modulverwaltung verwendet haben.The name should start with mlcr and it belongs to the resource group, location, and subscription that you used to set up Module Management.
  3. Wählen Sie Zugriffsschlüssel aus.Select Access keys
  4. Kopieren Sie Anmeldeserver, Benutzername und Kennwort.Copy the Login server, Username, and Password. Diese sind für den Zugriff auf die Registrierung über Ihre Edge-Geräte erforderlich.You need these to access the registry from your Edge devices.
  5. Wählen Sie Repositorys aus.Select Repositories
  6. Wählen Sie machinelearningmodule aus.Select machinelearningmodule
  7. Sie verfügen jetzt über den vollständigen Imagepfad des Containers.You now have the full image path of the container. Notieren Sie sich diesen Imagepfad für den nächsten Abschnitt.Take note of this image path for the next section. Er sollte wie folgt aussehen: .azurecr.io/machinelearningmodule:1It should look like this: <registry_name>.azurecr.io/machinelearningmodule:1

Bereitstellen auf Ihrem GerätDeploy to your device

  1. Navigieren Sie im Azure-Portal zu Ihrem IoT Hub.On the Azure portal, navigate to your IoT hub.

  2. Wechseln Sie zu IoT Edge, und wählen Sie Ihr IoT Edge-Gerät aus.Go to IoT Edge and select your IoT Edge device.

  3. Wählen Sie Module festlegen aus.Select Set modules.

  4. Fügen Sie im Abschnitt Registrierungseinstellungen die Anmeldeinformationen hinzu, die Sie aus der Azure Container Registry-Instanz kopiert haben.In the Registry Settings section, add the credentials that you copied from your Azure container registry.

    Hinzufügen der Registrierungsanmeldeinformationen

  5. Wenn Sie zuvor das tempSensor-Modul auf Ihrem IoT Edge-Gerät bereitgestellt haben, wird es unter Umständen automatisch aufgefüllt.If you've previously deployed the tempSensor module to your IoT Edge device, it may autopopulate. Wenn es nicht bereits in Ihrer Liste der Module enthalten ist, fügen Sie es hinzu.If it's not already in your list of modules, add it.

    1. Klicken Sie auf Hinzufügen und anschließend auf IoT Edge-Modul.Click Add and select IoT Edge Module.
    2. Geben Sie im Feld Name die Zeichenfolge tempSensor ein.In the Name field, enter tempSensor.
    3. Geben Sie im Feld Image-URI die Zeichenfolge mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:1.0 ein.In the Image URI field, enter mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:1.0.
    4. Wählen Sie Speichernaus.Select Save.
  6. Fügen Sie das von Ihnen erstellte Machine Learning-Modul hinzu.Add the machine learning module that you created.

    1. Klicken Sie auf Hinzufügen und anschließend auf IoT Edge-Modul.Click Add and select IoT Edge Module.
    2. Geben Sie im Feld Name die Zeichenfolge machinelearningmodule ein.In the Name field, enter machinelearningmodule
    3. Geben Sie im Feld Image die Imageadresse ein, z.B. <registry_name>.azurecr.io/machinelearningmodule:1.In the Image field, enter your image address; for example <registry_name>.azurecr.io/machinelearningmodule:1.
    4. Wählen Sie Speichernaus.Select Save.
  7. Wenn Sie zum Schritt Module hinzufügen zurückgekehrt sind, wählen Sie Weiter aus.Back in the Add Modules step, select Next.

  8. Kopieren Sie im Schritt Routen angeben den folgenden JSON-Code in das Textfeld.In the Specify Routes step, copy the JSON below into the text box. Die erste Route transportiert Nachrichten vom Temperatursensor über den Endpunkt „amlInput“ zum Machine Learning-Modul. Dies ist der Endpunkt, den alle Azure Machine Learning-Module verwenden.The first route transports messages from the temperature sensor to the machine learning module via the "amlInput" endpoint, which is the endpoint that all Azure Machine Learning modules use. Die zweite Route transportiert Nachrichten aus dem Machine Learning-Modul an IoT Hub.The second route transports messages from the machine learning module to IoT Hub. Bei dieser Route ist „amlOutput“ der Endpunkt, den alle Azure Machine Learning-Module zur Ausgabe von Daten verwenden, und „$upstream“ kennzeichnet IoT Hub.In this route, ''amlOutput'' is the endpoint that all Azure Machine Learning modules use to output data, and ''$upstream'' denotes IoT Hub.

    {
        "routes": {
            "sensorToMachineLearning":"FROM /messages/modules/tempSensor/outputs/temperatureOutput INTO BrokeredEndpoint(\"/modules/machinelearningmodule/inputs/amlInput\")",
            "machineLearningToIoTHub": "FROM /messages/modules/machinelearningmodule/outputs/amlOutput INTO $upstream"
        }
    }
    
  9. Klicken Sie auf Weiter.Select Next.

  10. Klicken Sie im Schritt für die Bereitstellungsüberprüfung auf Übermitteln.In the Review Deployment step, select Submit.

  11. Kehren Sie zur Seite mit Gerätedetails zurück, und wählen Sie Aktualisieren aus.Return to the device details page and select Refresh. Es sollte nun angezeigt werden, dass das neue Machine Learning-Modul zusammen mit dem tempSensor-Modul und den IoT Edge-Laufzeitmodulen ausgeführt wird.You should see the new machinelearningmodule running along with the tempSensor module and the IoT Edge runtime modules.

Anzeigen generierter DatenView generated data

Sie können Nachrichten anzeigen, die von den einzelnen IoT Edge-Modulen generiert werden, und Sie können Nachrichten anzeigen, die an Ihre IoT Hub-Instanz übermittelt werden.You can view messages being generated by each IoT Edge module, and you can view messages that are delivered to your IoT hub.

Anzeigen von Daten auf Ihrem IoT Edge-GerätView data on your IoT Edge device

Auf Ihrem IoT Edge-Gerät können Sie die Nachrichten anzeigen, die von den einzelnen Modulen gesendet werden.On your IoT Edge device, you can view the messages being sent from every individual module.

Wenn Sie diese Befehle auf einem Linux-Gerät ausführen, müssen Sie ggf. sudo verwenden, um erhöhte Berechtigungen zu erhalten.If you perform these commands on a Linux device, you may need to use sudo for elevated permissions.

  1. Zeigen Sie alle Module auf Ihrem IoT Edge-Gerät an.View all modules on your IoT Edge device.

    iotedge list
    
  2. Zeigen Sie die Nachrichten an, die von einem bestimmten Gerät gesendet werden.View the messages being sent from a specific device. Verwenden Sie den Modulnamen aus der Ausgabe des vorherigen Befehls.Use the module name from the output of the previous command.

    iotedge logs <module_name> -f
    

Anzeigen von Daten, die bei Ihrer IoT Hub-Instanz eingehenView data arriving at your IoT hub

Sie können die Gerät-zu-Cloud-Nachrichten, die Ihre IoT Hub-Instanz empfängt, mithilfe der Azure IoT Toolkit-Erweiterung für Visual Studio Code anzeigen.You can view the device-to-cloud messages that your IoT hub receives by using the Azure IoT Toolkit extension for Visual Studio Code.

Die folgenden Schritte zeigen, wie Sie Visual Studio Code einrichten, um Gerät-zu-Cloud-Nachrichten zu überwachen, die bei Ihrer IoT Hub-Instanz eingehen.The following steps show you how to set up Visual Studio Code to monitor device-to-cloud messages that arrive at your IoT hub.

  1. Wählen Sie in Visual Studio Code IoT Hub-Geräte aus.In Visual Studio Code, select IoT Hub Devices.

  2. Wählen Sie ... und dann IoT Hub-Verbindungszeichenfolge festlegen aus dem Menü aus.Select ... then select Set IoT Hub Connection String from the menu.

    Menü „...“ für IoT Hub-Geräte

  3. Geben Sie in das Textfeld, das sich oben auf der Seite öffnet, die Verbindungszeichenfolge „iothubowner“ für Ihren IoT Hub ein.In the text box that opens at the top of the page, enter the iothubowner connection string for your IoT Hub. Ihr IoT Edge-Gerät sollte in der Liste der IoT Hub-Geräte angezeigt werden.Your IoT Edge device should appear in the IoT Hub Devices list.

  4. Wähle Sie ... erneut aus, und wählen Sie anschließend Start monitoring D2C message (Überwachung von D2C-Nachricht starten).Select ... again then select Start monitoring D2C message.

  5. Beobachten Sie die ankommenden Nachrichten von tempSensor alle fünf Sekunden.Observe the messages coming from tempSensor every five seconds. Der Nachrichtentext enthält die anomaly-Eigenschaft, die vom Machine Learning-Modul den Wert TRUE oder FALSE erhält.The message body contains a property called anomaly which the machinelearningmodule provides with a true or false value. Die AzureMLResponse-Eigenschaft enthält den Wert „OK“, wenn das Modell erfolgreich ausgeführt wurde.The AzureMLResponse property contains the value "OK" if the model ran successfully.

    Azure ML-Antwort im Nachrichtentext

Bereinigen von RessourcenClean up resources

Falls Sie mit dem nächsten empfohlenen Artikel fortfahren möchten, können Sie die erstellten Ressourcen und Konfigurationen beibehalten und wiederverwenden.If you plan to continue to the next recommended article, you can keep the resources and configurations that you created and reuse them. Sie können auch dasselbe IoT Edge-Gerät als Testgerät weiter nutzen.You can also keep using the same IoT Edge device as a test device.

Andernfalls können Sie die in diesem Artikel erstellten lokalen Konfigurationen und Azure-Ressourcen löschen, um Kosten zu vermeiden.Otherwise, you can delete the local configurations and the Azure resources that you created in this article to avoid charges.

Löschen von Azure-RessourcenDelete Azure resources

Das Löschen von Azure-Ressourcen und -Ressourcengruppen kann nicht rückgängig gemacht werden.Deleting Azure resources and resource groups is irreversible. Achten Sie daher darauf, dass Sie nicht versehentlich die falsche Ressourcengruppe oder die falschen Ressourcen löschen.Make sure that you don't accidentally delete the wrong resource group or resources. Wenn Sie die IoT Hub-Ressource in einer bereits vorhandenen Ressourcengruppe erstellt haben, die Ressourcen enthält, die Sie behalten möchten, löschen Sie nicht die Ressourcengruppe, sondern nur die IoT Hub-Ressource.If you created the IoT hub inside an existing resource group that has resources that you want to keep, delete only the IoT hub resource itself, instead of deleting the resource group.

So löschen Sie die Ressourcen:To delete the resources:

  1. Melden Sie sich beim Azure-Portal an, und klicken Sie auf Ressourcengruppen.Sign in to the Azure portal and select Resource groups.

  2. Wählen Sie den Namen der Ressourcengruppe aus, die Ihre IoT Edge-Testressourcen enthält.Select the name of the resource group that contains your IoT Edge test resources.

  3. Überprüfen Sie die Liste der Ressourcen in Ihrer Ressourcengruppe.Review the list of resources contained in your resource group. Wenn Sie alle löschen möchten, klicken Sie auf Ressourcengruppe löschen.If you want to delete all of them, you can select Delete resource group. Wenn Sie nur einige Ressourcen löschen möchten, klicken Sie auf die jeweiligen Ressourcen, um sie einzeln zu löschen.If you want to delete only some of them, you can click into each resource to delete them individually.

Löschen lokaler RessourcenDelete local resources

Wenn Sie die IoT Edge-Runtime und ihre Ressourcen von Ihrem Gerät löschen möchten, führen Sie die entsprechenden Befehle für Ihr Gerätebetriebssystem aus.If you want to remove the IoT Edge runtime and related resources from your device, use the appropriate commands for your device operating system.

WindowsWindows

Deinstallieren Sie die IoT Edge-Runtime.Uninstall the IoT Edge runtime.

. {Invoke-WebRequest -useb aka.ms/iotedge-win} | Invoke-Expression; `
Uninstall-SecurityDaemon

Sobald die IoT Edge-Runtime entfernt wird, werden die Container, die sie erstellt hat, angehalten. Sie sind jedoch weiterhin auf dem Gerät vorhanden.When the IoT Edge runtime is removed, the containers that it created are stopped, but still exist on your device. Zeigen Sie alle Container an.View all containers.

docker ps -a

Löschen Sie die Runtimecontainer, die auf Ihrem Gerät erstellt wurden.Delete the runtime containers that were created on your device.

docker rm -f edgeHub
docker rm -f edgeAgent

Löschen Sie alle weiteren Container, die ggf. in der Ausgabe von docker ps aufgeführt werden, indem Sie auf die Containernamen verweisen.Delete any additional containers that were listed in the docker ps output by referring to the container names.

LinuxLinux

Entfernen Sie die IoT Edge-Runtime.Remove the IoT Edge runtime.

sudo apt-get remove --purge iotedge

Sobald die IoT Edge-Runtime entfernt wird, werden die Container, die sie erstellt hat, angehalten. Sie sind jedoch weiterhin auf dem Gerät vorhanden.When the IoT Edge runtime is removed, the containers that it created are stopped, but still exist on your device. Zeigen Sie alle Container an.View all containers.

sudo docker ps -a

Löschen Sie die Runtimecontainer, die auf Ihrem Gerät erstellt wurden.Delete the runtime containers that were created on your device.

docker rm -f edgeHub
docker rm -f edgeAgent

Löschen Sie alle weiteren Container, die ggf. in der Ausgabe von docker ps aufgeführt werden, indem Sie auf die Containernamen verweisen.Delete any additional containers that were listed in the docker ps output by referring to the container names.

Entfernen Sie die Containerruntime.Remove the container runtime.

sudo apt-get remove --purge moby

Nächste SchritteNext steps

In diesem Tutorial haben Sie ein von Azure Machine Learning unterstütztes IoT Edge-Modul bereitgestellt.In this tutorial, you deployed an IoT Edge module powered by Azure Machine Learning. Sie können mit einem der anderen Tutorials fortfahren, um andere Möglichkeiten kennenzulernen, wie Azure IoT Edge Ihnen beim Umwandeln von Daten in geschäftliche Erkenntnisse auf Edge-Ebene helfen kann.You can continue on to any of the other tutorials to learn about other ways that Azure IoT Edge can help you turn data into business insights at the edge.

Tutorial: Perform image classification at the edge with Custom Vision Service (Tutorial: Ausführen der Bildklassifizierung im Edge-Bereich mit Custom Vision Service)Classify images with Custom Vision service