Azure IoT ile beyin dağıtma Bonsai


  • Toplam tamamlanma süresi: 40 dakika
  • Azure hazırlık süresi: 30 dakika
  • Etkin süre: 10 dakika

Azure IoT Central'ı kullanarak eğitilen Bonsai beyinleri bulut hizmeti modülleri olarak yayımlayın ve uç cihazlarda ve moby altyapıyla iotedge yapay zeka çalıştırın.

Not

Bonsai dışarı aktarma aşağıdaki işlemci mimarilerini destekler:

  • x64: 64 bit veya 32 bit donanım üzerinde AMD ve Intel sistemleri (genel amaçlı Linux sistemleri)
  • arm64 (v8): 64 bit RISC sistemleri (Raspberry Pi 3+, Linux, daha yeni endüstriyel sistemler)
  • arm32 (v7): 32 bit RISC sistemleri (Raspberry Pi 1, Raspberry Pi 2, Linux, eski endüstriyel sistemler)

Başlamadan önce

  • Tamamlanmış, tamamen eğitilmiş Bonsai bir beynin olmalı.
  • Azure Container Registry Kimlik Bilgilerinizi bilmeniz gerekir. ACR kimlik bilgilerinizi bilmiyorsanız, bunları bulmak için Azure CLI kılavuzunu izleyin.
  • Bir Azure IoT Central uygulamanız olmalıdır. IoT uygulamanızın URL'sini not edin. IoT uygulamanız yoksa IoT Central hızlı başlangıcını izleyerek "Özel uygulama" şablonunu kullanarak yeni bir dağıtım oluşturun.
  • Azure Edge cihazınız için bir şablonunuzun olması gerekir. Azure IoT Central ile kapsayıcıları dağıtmak için, beyni dağıtacağınız Bonsai donanım için yapılandırılmış bir cihaz şablonunuz olmalıdır. Bir şablon yoksa yeni bir uç cihaz şablonu oluşturmak için IoT şablonu kurulum kılavuzunu izleyin.
  • Cihazınızı IoT Central uygulamanıza eklemeniz gerekir.
  • Azure IoT Central uygulamanızı ve Bonsai çalışma alanınızı bağlamanız gerekir. IoT Central uygulama URL'sinin Azure portal çalışma alanınızın Bonsai hizmet sayfasında düzgün ayarlandığını onaylayabilirsiniz.

    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.
    

1. Adım: Beyni dışarı aktarma ve Azure IoT dağıtımı JSON'unu alma

Önemli

Raspberry Pi 3+ 64 bit donanım üzerinde çalışırken Azure IoT yalnızca Raspberry Pi OS Stretch kapsayıcı dağıtımı için arm32 (v7) sürümünü destekler. Ek ayrıntılar için bkz. Azure IoT Edge desteklenen sistemler.

  1. Kullanıcı arabirimindeBonsai oturum açın.
  2. Çalışmak istediğiniz beyni ve sürümü seçin.
  3. Eğitma paneline gidin.
  4. Beyni dışarı aktar düğmesine tıklayın.
  5. Açılan iletişim kutusunda:
    • Dışarı aktarılan beyin için bir ad verin.
    • Beynin üzerinde çalıştıracağı işlemci mimarisini seçin.
  6. Export (Dışarı aktar) öğesini seçin.

Dışarı aktarma açılır penceresinde Azure IoT Dağıtımı sekmesini seçin ve sağlanan JSON bloğunu kopyalayın.

Brain export popup

Bonsai"Azure IoT Dağıtımı" sekmesinin seçili olduğu beyin başarısını dışarı aktarma panelinin ekran görüntüsü.

İpucu

Dışarı aktarılan beyin için bağlam menüsünü (üç nokta) ve "Dağıtım yönergelerini görüntüle" seçeneğini belirleyerek kullanıcı arabiriminde IoT JSON'a Bonsai yeniden erişebilirsiniz.

2. Adım: IoT dağıtım bildiriminizi güncelleştirme

İpucu

Azure IoT Central portalını doğrudan kullanıcı arabirimindeki Bonsai dağıtım yönergeleri açılan penceresinden "Azure IoT Portalı" bağlantısına tıklayarak açabilirsiniz. VS Code yüklediyseniz doğrudan Azure portal çalışmak yerine IoT projenizi oluşturmak için VS Code kullanabilirsiniz.

  1. Yeni bir IoT Edge dağıtım bildirimi oluşturun veya beyinlerle Bonsai kullanmak istediğiniz mevcut bir bildirimi açın. NOT: Bir dağıtım için Bonsai bildiriminizde yol oluşturma veya yapılandırma konusunda endişelenmeniz gerekmez.
  2. modules Cihaz şablonundaki bloğunu sağlanan JSON bloğuyla Bonsaideğiştirin. Örnek:
    "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. Varsayılan HostPort () veya PortBindings ()50055000 dışında bir şey kullanmak istiyorsanız, girdiyi createOptions tercih ettiğiniz bağlantı noktalarını kullanacak şekilde güncelleştirin.
  4. ACR kayıt defteri kimlik bilgilerinizi şablonun registryCredentials bölümüne ekleyin. Örnek:
     "registryCredentials": {
       "bonsaidocs": {
         "username": "ACR_USERNAME",
         "password": "ACR_PASSWORD",
         "address": "bonsaidocs.azurecr.io"
       }
     }   
    
  5. Yeni bildirim bilgilerini kaydedin.

3. Adım: IoT telemetrisini etkinleştirme

  1. Dağıtım bildiriminizdeki modüle Bonsai adlı BONSAI\_TELEMETRY bir ortam değişkeni ekleyin ve değerini olarak IOTayarlayın:
    "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. Cihazınızı IoT Central uygulamanıza günlük verileri gönderecek şekilde yapılandırmak için edgeHub modülüne bir telemetri yolu properties.desired ekleyin:
    "$edgeHub": { 
      "properties.desired": { 
        "schemaVersion": "1.1", 
        "routes": {
          "telemetry": "FROM /messages/modules/Bonsai/outputs/* INTO $upstream"
        }
        "storeAndForwardConfiguration": {
          "timeToLiveSecs": 7200
        }
      }
    }
    
  3. Yeni bildirim bilgilerini kaydedin.

Önemli

Bonsai varsayılan olarak dışarı aktarılan beyinler için telemetriyi etkinleştirir. IoT cihazınız için telemetriyi devre dışı bırakmak istiyorsanız cihaz bildiriminizde olarak ayarlamanız ENABLE\_TELEMETRYFALSE gerekir.

4. Adım: Dışarı aktarılan beyni dağıtma

Dışarı aktarılan beyni dağıtmak için cihaz şablonunuzu yayımlamanız gerekir. Cihaz şablonu, telemetri desteği de dahil olmak üzere Azure IoT Central uygulamanıza bağlı uç cihazların özelliklerini ve davranışlarını tanımlar.

  1. Dağıtım bildiriminden yeni bir cihaz şablonu oluşturun.
  2. Yeni cihaz şablonunu uç donanımınıza göndermek için yeni şablonu yayımlayın.
  3. Yeni bildirimi cihaza uygulayın.

5. Adım: IoT uygulamanızın telemetri verileri toplayabileceğini doğrulayın

  1. IoT Central uygulamanızda cihaz panosunu açın. Çoğu IoT Central uygulamasında IoT Central uygulamanızın adı gibi APP_NAME URL'ler https://APP_NAME.azureiotcentral.com bulunur.
  2. IoT cihazınızın ayrıntılar sayfasına gidin.
  3. IoT cihazını kullanarak beyne bir tahmin isteği gönderin.
  4. Ham veriler sekmesinde telemetri verilerini görmeniz gerekir.

    Example telemetry data

    Moab örneğini ioT cihazına dağıtmak için kullanılan ve "Ham veriler" sekmesinin vurgulandığı IoT Central uygulamasının ekran görüntüsü. Gelen telemetri verileri, seçilen sekmede JSON verileri olarak görünür.

İpucu

Telemetri verileri, yinelemenin başlamasından itibaren bir dakika içinde görünmelidir. Bazen kullanıcı arabiriminin yenilenmesi daha erken görünmesine neden olur.

İsteğE BAĞLI: Telemetriyi Azure Veri Gezgini kaydetme

Telemetri verilerinizi KQL ile sorgulamak istiyorsanız, verileri depolamak için bir Azure Veri Gezgini (ADX) kümeniz ve Telemetri verilerinizi IoT Central'dan Azure Veri Gezgini'e yöneltmek için bir Azure Olay Hub'ınız olmalıdır.

  1. Azure Portal gidin.
  2. BIR ADX kümesi sağlayın. Not: ADX kümesinin sağlanması 20 dakika kadar sürebilir.
  3. Azure Olay Hub'ı oluşturma.
  4. IoT cihazınızdan ADX kümenize telemetri verilerini çekmek için verileri IoT Hub Azure'a alma Veri Gezgini kılavuzunu izleyin.

Örnek dağıtım bildirimi

{
  "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
        }
      }
    }
  }
}