Déployer Bonsai des cerveaux avec Azure IoT


  • Durée totale : 40 minutes
  • Temps de préparation Azure : 30 minutes
  • Temps d’activité : 10 minutes

Utilisez Azure IoT Central pour publier des cerveaux formés Bonsai en tant que modules de service cloud et exécuter l’IA sur des appareils de périphérie avec iotedge et le moby moteur.

Notes

Bonsai l’exportation prend en charge les architectures de processeur suivantes :

  • x64 : systèmes AMD et Intel sur du matériel 64 bits ou 32 bits (systèmes Linux à usage général)
  • arm64 (V8) : systèmes RISC 64 bits (Raspberry Pi 3+, Linux, systèmes industriels plus récents)
  • arm32 (v7) : systèmes RISC 32 bits (Raspberry Pi 1, Raspberry Pi 2, Linux, anciens systèmes industriels)

Avant de commencer

  • Vous devez avoir un cerveau complet et completBonsai.
  • Vous devez connaître vos informations d’identification Azure Container Registry. Si vous ne connaissez pas vos informations d’identification ACR, suivez le guide Azure CLI pour les trouver.
  • Vous devez disposer d’une application Azure IoT Central. Notez l’URL de votre application IoT. Si vous n’avez pas d’application IoT, suivez le guide de démarrage rapide IoT Central pour créer un déploiement à l’aide du modèle « Application personnalisée ».
  • Vous devez disposer d’un modèle pour votre appareil Azure Edge. Pour déployer des conteneurs avec Azure IoT Central, vous devez disposer d’un modèle d’appareil configuré pour le matériel sur lequel vous allez déployer le Bonsai cerveau. Si vous n’avez pas de modèle en place, suivez le guide de configuration du modèle IoT pour créer un modèle d’appareil edge.
  • Vous devez ajouter votre appareil à votre application IoT Central.
  • Vous devez lier votre application et Bonsai votre espace de travail Azure IoT Central. Vous pouvez vérifier que l’URL de l’application IoT Central est correctement définie sur la page de service de votre Bonsai espace de travail dans le Portail Azure.

    Bonsai service page

    Screenshot of the service page in the Azure portal for a Bonsai workspace.
    The "Azure IoT Central Application URL" setting is circled in blue to show
    where the IoT app URL is configured.
    

Étape 1 : Exporter le cerveau et obtenir le code JSON de déploiement Azure IoT

Important

Bien que Raspberry Pi 3+ s’exécute sur du matériel 64 bits, Azure IoT prend uniquement en charge arm32 (v7) pour le déploiement de conteneur Stretch du système d’exploitation Raspberry Pi. Pour plus d’informations, consultez Azure IoT systèmes pris en charge par Edge.

  1. Connectez-vous à l’interfaceBonsai utilisateur.
  2. Sélectionnez le cerveau et la version que vous souhaitez utiliser.
  3. Accédez au volet Train (Apprentissage).
  4. Cliquez sur le bouton Export brain (Exporter le cerveau).
  5. Dans la boîte de dialogue qui s’ouvre :
    • Entrez un nom pour le cerveau exporté.
    • Sélectionnez l’architecture de processeur sur laquelle le cerveau s’exécutera.
  6. Sélectionnez Exporter.

Dans la fenêtre contextuelle d’exportation, sélectionnez l’onglet Déploiement Azure IoT et copiez le bloc JSON fourni.

Brain export popup

Capture d’écran du panneau de réussite de l’exportation Bonsai du cerveau avec l’onglet « Déploiement Azure Iot » sélectionné.

Conseil

Vous pouvez accéder à nouveau au json IoT dans l’interface Bonsai utilisateur en sélectionnant le menu contextuel (les trois points) du cerveau exporté et en sélectionnant « Afficher les instructions de déploiement ».

Étape 2 : Mettre à jour votre manifeste de déploiement IoT

Conseil

Vous pouvez ouvrir le portail Azure IoT Central directement à partir de la fenêtre contextuelle des instructions de déploiement dans l’interface Bonsai utilisateur en cliquant sur le lien « Azure IoT Portail ». Ou, si vous avez VS Code installé, vous pouvez utiliser VS Code pour générer votre projet IoT au lieu de travailler directement dans Portail Azure.

  1. Créez un manifeste de déploiement IoT Edge ou ouvrez un manifeste existant que vous souhaitez utiliser avec Bonsai des cerveaux. REMARQUE : Vous n’avez pas besoin de vous soucier de la création ou de la configuration d’itinéraires dans votre manifeste pour un Bonsai déploiement.
  2. Remplacez le modules bloc dans le modèle d’appareil par le Bonsaibloc JSON fourni. Exemple :
    "modules": { 
        "Bonsai": { 
            "version": "1.0", 
            "type": "docker", 
            "status": "running", 
            "restartPolicy": "always", 
            "settings": {
                "image":"bonsaidocs.azurecr.io/7a4e3c73-0eaf-47e6-9ad1-ffa98d492a4f/balancer:1-linux-amd64", 
                "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"5000/tcp\":[{\"HostPort\":\"5005\"}]}},\"ExposedPorts\":{\"5000/tcp\":{}}}"
            }
        }
    }
    
  3. Si vous souhaitez utiliser autre chose que la valeur par défaut HostPort () ou PortBindings (),5000 mettez à jour l’entrée createOptions pour utiliser vos5005 ports préférés.
  4. Ajoutez vos informations d’identification de registre ACR à la registryCredentials section du modèle. Exemple :
     "registryCredentials": {
       "bonsaidocs": {
         "username": "ACR_USERNAME",
         "password": "ACR_PASSWORD",
         "address": "bonsaidocs.azurecr.io"
       }
     }   
    
  5. Enregistrez les nouvelles informations de manifeste.

Étape 3 : Activer la télémétrie IoT

  1. Ajoutez une variable d’environnement nommée BONSAI\_TELEMETRY au Bonsai module dans votre manifeste de déploiement et définissez la valeur sur IOT:
    "modules": { 
        "Bonsai": { 
            "version": "1.0", 
            "type": "docker", 
            "status": "running", 
            "restartPolicy": "always", 
            "settings": {
                "image":"bonsaidocs.azurecr.io/7a4e3c73-0eaf-47e6-9ad1-ffa98d492a4f/balancer:1-linux-amd64", 
                "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"5000/tcp\":[{\"HostPort\":\"5005\"}]}},\"ExposedPorts\":{\"5000/tcp\":{}}}"
            },
            "env": { "BONSAI_TELEMETRY": { "value": "IOT" } }
        }
    }
    
  2. Ajoutez un itinéraire de télémétrie vers properties.desired le module edgeHub pour configurer votre appareil afin d’envoyer des données de journalisation à votre application IoT Central :
    "$edgeHub": { 
      "properties.desired": { 
        "schemaVersion": "1.1", 
        "routes": {
          "telemetry": "FROM /messages/modules/Bonsai/outputs/* INTO $upstream"
        }
        "storeAndForwardConfiguration": {
          "timeToLiveSecs": 7200
        }
      }
    }
    
  3. Enregistrez les nouvelles informations de manifeste.

Important

Bonsai active la télémétrie pour les cerveaux exportés par défaut. Si vous souhaitez désactiver la télémétrie pour votre appareil IoT, vous devez la définir ENABLE\_TELEMETRYFALSE dans le manifeste de votre appareil.

Étape 4 : Déployer le cerveau exporté

Pour déployer le cerveau exporté, vous devez publier votre modèle d’appareil. Le modèle d’appareil définit les caractéristiques et les comportements des appareils de périphérie connectés à votre application Azure IoT Centrale, y compris la prise en charge des données de télémétrie.

  1. Créez un modèle d’appareil à partir du manifeste de déploiement.
  2. Publiez le nouveau modèle pour envoyer (push) le nouveau modèle d’appareil à votre matériel périphérique.
  3. Appliquez le nouveau manifeste à l’appareil.

Étape 5 : Vérifier que votre application IoT peut collecter des données de télémétrie

  1. Ouvrez le tableau de bord de l’appareil dans votre application IoT Central. La plupart des applications IoT Central ont des URL telles que https://APP_NAME.azureiotcentral.comAPP_NAME le nom de votre application IoT Central.
  2. Accédez à la page de détails de votre appareil IoT.
  3. Envoyez une demande de prédiction au cerveau à l’aide de l’appareil IoT.
  4. Vous devez voir les données de télémétrie sous l’onglet Données brutes .

    Example telemetry data

    Capture d’écran d’une application IoT Central utilisée pour déployer l’exemple Moab sur un appareil IoT avec l’onglet « Données brutes » mis en surbrillance. Les données de télémétrie entrantes s’affichent sous forme de données JSON sous l’onglet sélectionné.

Conseil

Les données de télémétrie doivent apparaître dans un délai d’une minute après le début d’une itération. Parfois, l’actualisation de l’interface utilisateur le rend plus tôt.

FACULTATIF : Enregistrer les données de télémétrie dans Azure Data Explorer

Si vous souhaitez interroger vos données de télémétrie avec KQL, vous devez disposer d’un cluster Azure Data Explorer (ADX) pour stocker les données, ainsi qu’un Hub d’événements Azure pour diriger vos données de télémétrie d’IoT Central vers Azure Data Explorer.

  1. Accédez au portail Azure.
  2. Provisionnez un cluster ADX. Remarque : l’approvisionnement d’un cluster ADX peut prendre jusqu’à 20 minutes.
  3. Créez un Hub d’événements Azure.
  4. Suivez les données d’ingestion de IoT Hub dans Azure Data Explorer guide pour extraire des données de télémétrie de votre appareil IoT dans votre cluster ADX.

Exemple de manifeste de déploiement

{
  "modulesContent": {
    "$edgeAgent": {
      "properties.desired": {
        "schemaVersion": "1.1",
        "runtime": {
          "type": "docker",
          "settings": {
            "minDockerVersion": "v1.25",
            "loggingOptions": "",
            "registryCredentials": {
              "ACR_REGISTRY_NAME": {
                "username": "ACR_USERNAME",
                "password": "ACR_PASSWORD",
                "address": "ACR_URL"
              }
            }
          }
        },
        "systemModules": {
          "edgeAgent": {
            "type": "docker",
            "settings": {
            "image": "mcr.microsoft.com/azureiotedge-agent:1.1",
            "createOptions": "{}"
            }
          },
          "edgeHub": {
            "type": "docker",
            "status": "running",
            "restartPolicy": "always",
            "settings": {
              "image": "mcr.microsoft.com/azureiotedge-hub:1.1",
              "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}],\"443/tcp\":[{\"HostPort\":\"443\"}]}}}"
            }
          }
        },
        "modules": {
          "Bonsai": {
            "version": "1.0",
            "type": "docker",
            "status": "running",
            "restartPolicy": "always",
            "settings": {
              "image": "EXPORTED_BRAIN_ACR_URL",
              "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"5000/tcp\":[{\"HostPort\":\"5005\"}]}},\"ExposedPorts\":{\"5000/tcp\":{}}}"
            },
            "env": {
              "ENABLE_TELEMETRY": {
                "value": "TRUE"
              }
            }
          }
        }
      }
    },
    "$edgeHub": {
      "properties.desired": {
        "schemaVersion": "1.1",
        "routes": {
          "telemetry": "FROM /messages/modules/Bonsai/outputs/* INTO $upstream"
        },
        "storeAndForwardConfiguration": {
          "timeToLiveSecs": 7200
        }
      }
    }
  }
}