Bereitstellen von Azure Machine Learning als IoT Edge-Modul – VorschauDeploy 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.

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.

VoraussetzungenPrerequisites

Sie benötigen ein IoT Edge-Gerät, um die in diesem Tutorial erstellten Machine Learning-Module zu testen.To test the Machine Learning module that you build in this tutorial, you need an IoT Edge device. Sie können das Gerät verwenden, das Sie im Rahmen der Schnellstartanleitung für Linux-Geräte oder Windows-Geräte konfiguriert haben.You can use the device that you configured 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.

Auf dem Entwicklungscomputer müssen die folgenden Komponenten vorhanden sein:Have the following prerequisites on your development machine:

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.

Um die Prozessidentifizierung 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, 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 ifconfig in Ihre Befehlszeile ein, und kopieren Sie die IP-Adresse der Schnittstelle docker0.Enter ifconfig 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.

Laden Sie auf dem Computer, auf dem die Modulverwaltung für Azure ML ausgeführt wird, iot_score.py und model.pkl aus dem Azure ML IoT-Toolkit auf GitHub herunter und speichern Sie sie.On the machine running Module Management for Azure ML, download and save iot_score.py and model.pkl from the Azure ML IoT Toolkit on GitHub. Diese Dateien definieren das trainierte Machine Learning-Modell, das Sie auf Ihrem Iot Edge-Gerät bereitstellen werden.These files define the trained machine learning model that you will deploy to your Iot Edge device.

Verwenden Sie das trainierte Modell, um einen Container zu erstellen, der für IoT Edge-Geräte bereitgestellt werden kann.Use the trained model to create a container that can be deployed to IoT Edge devices. Verwenden Sie den folgenden Befehl, um folgende Aktionen auszuführen:Use the following command to:

  • Registrieren des ModellsRegister your model.
  • Erstellen Sie ein Manifest.Create a manifest.
  • Erstellen eines Docker-Containerimages namens machinelearningmoduleCreate a Docker container image named machinelearningmodule.
  • Bereitstellen des Images in Ihrem AKS-Cluster (Azure Kubernetes Service)Deploy the image to your Azure Kubernetes Service (AKS) cluster.
az ml service create realtime --model-file model.pkl -f iot_score.py -n machinelearningmodule -r python

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: .azureacr.io/machinelearningmodule:1It should look like this: <registry_name>.azureacr.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 Azure Machine Learning-Modul.Click Add and select Azure Machine Learning 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 des IoT Hub-Explorers oder 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 IoT Hub explorer or 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 bereits erstellten Ressourcen und Konfigurationen beibehalten und wiederverwenden.If you will be continuing to the next recommended article, you can keep the resources and configurations you've already created and reuse them.

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 created in this article to avoid charges.

Wichtig

Das Löschen der Azure-Ressourcen und der Ressourcengruppe kann nicht rückgängig gemacht werden.Deleting Azure resources and resource group is irreversible. Die Ressourcengruppe und alle darin enthaltenen Ressourcen werden unwiderruflich gelöscht.Once deleted, the resource group and all the resources contained in it are permanently deleted. Achten Sie daher darauf, dass Sie nicht versehentlich die falsche Ressourcengruppe oder die falschen Ressourcen löschen.Make sure that you do not 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 contains resources you want to keep, only delete the IoT Hub resource itself instead of deleting the resource group.

Wenn Sie nur die IoT Hub-Instanz löschen möchten, führen Sie den folgenden Befehl mit dem Namen des Hubs und dem Namen der Ressourcengruppe aus:To delete only the IoT Hub execute the following command using your hub name and resource group name:

az iot hub delete --name MyIoTHub --resource-group TestResources

Löschen Sie die gesamte Ressourcengruppe wie folgt anhand des Namens:To delete the entire resource group by name:

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

  2. Geben Sie im Textfeld Nach Name filtern... den Namen der Ressourcengruppe ein, die Ihre IoT Hub-Ressource enthält.In the Filter by name... textbox, type the name of the resource group containing your IoT Hub.

  3. Klicken Sie in der Ergebnisliste rechts neben Ihrer Ressourcengruppe auf ... und dann auf Ressourcengruppe löschen.To the right of your resource group in the result list, click ... then Delete resource group.

  1. Sie werden aufgefordert, das Löschen der Ressourcengruppe zu bestätigen.You will be asked to confirm the deletion of the resource group. Geben Sie zur Bestätigung erneut den Namen Ihrer Ressourcengruppe ein, und klicken Sie anschließend auf Löschen.Type the name of your resource group again to confirm, and then click Delete. Daraufhin werden die Ressourcengruppe und alle darin enthaltenen Ressourcen gelöscht.After a few moments, the resource group and all of its contained resources are deleted.

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.