|
4 weeks ago | |
---|---|---|
.. | ||
README.md | 4 weeks ago | |
assignment.md | 4 weeks ago | |
single-board-computer.md | 4 weeks ago | |
vm-iotedge.md | 4 weeks ago | |
wio-terminal.md | 4 weeks ago |
README.md
Futtasd a gyümölcsdetektorodat az edge-en
Vázlat: Nitya Narasimhan. Kattints a képre a nagyobb verzióért.
Ez a videó áttekintést nyújt arról, hogyan futtathatók képosztályozók IoT-eszközökön, amely a lecke témája.
Előadás előtti kvíz
Bevezetés
Az előző leckében a képosztályozódat használtad arra, hogy érett és éretlen gyümölcsöket osztályozz, miközben a kamerával rögzített képet az IoT-eszközödről az interneten keresztül egy felhőszolgáltatásba küldted. Ezek a hívások időt vesznek igénybe, pénzbe kerülnek, és az általad használt képadatok típusától függően adatvédelmi kérdéseket is felvethetnek.
Ebben a leckében megtanulod, hogyan futtathatsz gépi tanulási (ML) modelleket az edge-en – azaz az IoT-eszközökön, amelyek a saját hálózatodon futnak, nem pedig a felhőben. Megismered az edge computing és a felhőalapú számítástechnika előnyeit és hátrányait, hogyan telepítheted az AI modelledet az edge-re, és hogyan érheted el azt az IoT-eszközödről.
Ebben a leckében a következőket tárgyaljuk:
- Edge computing
- Azure IoT Edge
- IoT Edge-eszköz regisztrálása
- IoT Edge-eszköz beállítása
- Modelled exportálása
- Konténered előkészítése telepítésre
- Konténer telepítése
- IoT Edge-eszköz használata
Edge computing
Az edge computing azt jelenti, hogy az IoT-adatokat feldolgozó számítógépek a lehető legközelebb helyezkednek el az adatok keletkezési helyéhez. Ahelyett, hogy ez a feldolgozás a felhőben történne, az a felhő szélére kerül – azaz a belső hálózatodra.
Az eddigi leckékben az eszközök adatokat gyűjtöttek és küldtek a felhőbe elemzésre, ahol szerver nélküli funkciók vagy AI modellek futottak.
Az edge computing során a felhőszolgáltatások egy részét áthelyezik a felhőről az IoT-eszközökkel azonos hálózaton futó számítógépekre, és csak akkor kommunikálnak a felhővel, ha szükséges. Például AI modelleket futtathatsz edge-eszközökön, hogy elemezd a gyümölcsök érettségét, és csak az elemzéseket küldheted vissza a felhőbe, például az érett és éretlen gyümölcsök számát.
✅ Gondold át az eddig épített IoT-alkalmazásaidat. Mely részeiket lehetne áthelyezni az edge-re?
Előnyök
Az edge computing előnyei a következők:
-
Gyorsaság – az edge computing ideális az időérzékeny adatokhoz, mivel a műveletek ugyanazon a hálózaton történnek, mint az eszköz, nem pedig az interneten keresztül. Ez nagyobb sebességet tesz lehetővé, mivel a belső hálózatok lényegesen gyorsabbak lehetnek, mint az internetkapcsolatok, és az adatok sokkal rövidebb távolságot tesznek meg.
💁 Bár az internetkapcsolatokhoz optikai kábeleket használnak, amelyek lehetővé teszik az adatok fénysebességgel történő továbbítását, az adatoknak időbe telik, hogy a világ körül eljussanak a felhőszolgáltatókhoz. Például, ha Európából küldesz adatokat az Egyesült Államokban lévő felhőszolgáltatásokhoz, legalább 28 ms szükséges ahhoz, hogy az adatok átkeljenek az Atlanti-óceánon egy optikai kábelen, és ez nem számítja bele az időt, amely az adatok kábelhez juttatásához, az elektromos jelek fényjelekké alakításához és visszaalakításához szükséges.
Az edge computing kevesebb hálózati forgalmat is igényel, csökkentve annak kockázatát, hogy az adatok az internetkapcsolat korlátozott sávszélessége miatt lelassuljanak.
-
Távoli hozzáférhetőség – az edge computing akkor is működik, ha korlátozott vagy nincs kapcsolat, vagy ha a kapcsolat túl drága ahhoz, hogy folyamatosan használjuk. Például humanitárius katasztrófa sújtotta területeken, ahol az infrastruktúra korlátozott, vagy fejlődő országokban.
-
Alacsonyabb költségek – az adatok gyűjtése, tárolása, elemzése és a műveletek végrehajtása az edge-eszközön csökkenti a felhőszolgáltatások használatát, ami csökkentheti az IoT-alkalmazás teljes költségét. Az utóbbi időben növekedett az edge computingra tervezett eszközök száma, például az AI-gyorsító táblák, mint az NVIDIA Jetson Nano, amelyek kevesebb mint 100 USD-ért képesek AI-munkaterheléseket futtatni GPU-alapú hardverrel.
-
Adatvédelem és biztonság – az edge computing esetében az adatok a hálózatodon maradnak, és nem kerülnek feltöltésre a felhőbe. Ez különösen előnyös érzékeny és személyazonosításra alkalmas információk esetén, mivel az adatok elemzés után nem szükségesek tárolni, ami jelentősen csökkenti az adatlopás kockázatát. Példák: orvosi adatok és biztonsági kamerafelvételek.
-
Biztonsági hibás eszközök kezelése – ha olyan eszközeid vannak, amelyek ismert biztonsági hibákkal rendelkeznek, és nem szeretnéd közvetlenül csatlakoztatni őket a hálózatodhoz vagy az internethez, akkor külön hálózatra csatlakoztathatod őket egy IoT Edge gateway eszközhöz. Ez az edge-eszköz csatlakozhat a szélesebb hálózathoz vagy az internethez, és kezelheti az adatáramlást.
-
Nem kompatibilis eszközök támogatása – ha olyan eszközeid vannak, amelyek nem tudnak csatlakozni az IoT Hubhoz, például csak HTTP-kapcsolatot támogató eszközök vagy csak Bluetooth-kapcsolattal rendelkező eszközök, akkor egy IoT edge-eszközt használhatsz gateway eszközként, amely továbbítja az üzeneteket az IoT Hubhoz.
✅ Kutass egy kicsit: Milyen más előnyei lehetnek az edge computingnak?
Hátrányok
Az edge computing hátrányai, amikor a felhő lehet előnyösebb:
-
Skálázhatóság és rugalmasság – a felhőalapú számítástechnika valós időben képes alkalmazkodni a hálózati és adatigényekhez további szerverek és erőforrások hozzáadásával vagy csökkentésével. Az edge számítógépek hozzáadása manuális eszközök telepítését igényli.
-
Megbízhatóság és ellenállóképesség – a felhőalapú számítástechnika több szervert biztosít, gyakran több helyszínen a redundancia és a katasztrófa utáni helyreállítás érdekében. Az edge-en ugyanezen szintű redundancia eléréséhez nagy beruházásokra és sok konfigurációs munkára van szükség.
-
Karbantartás – a felhőszolgáltatók biztosítják a rendszer karbantartását és frissítéseit.
✅ Kutass egy kicsit: Milyen más hátrányai lehetnek az edge computingnak?
A hátrányok valójában a felhőhasználat előnyeinek ellentétei – ezeket az eszközöket magadnak kell felépítened és kezelned, ahelyett, hogy a felhőszolgáltatók szakértelmére és méretgazdaságosságára támaszkodnál.
Néhány kockázatot maga az edge computing természete enyhít. Például, ha egy edge-eszköz egy gyárban fut, amely adatokat gyűjt a gépektől, nem kell gondolnod bizonyos katasztrófa utáni helyreállítási forgatókönyvekre. Ha a gyárban elmegy az áram, akkor nincs szükség tartalék edge-eszközre, mivel azok a gépek, amelyek az adatokat generálják, szintén áram nélkül maradnak.
Az IoT-rendszerek esetében gyakran a felhő és az edge computing keverékére lesz szükséged, az egyes szolgáltatásokat a rendszer, az ügyfelek és a karbantartók igényei alapján kihasználva.
Azure IoT Edge
Az Azure IoT Edge egy olyan szolgáltatás, amely segíthet a munkaterheléseket a felhőből az edge-re helyezni. Egy eszközt edge-eszközként állítasz be, és a felhőből kódot telepíthetsz erre az edge-eszközre. Ez lehetővé teszi a felhő és az edge képességeinek keverését.
🎓 A munkaterhelések kifejezés bármilyen szolgáltatásra utal, amely valamilyen munkát végez, például AI modellek, alkalmazások vagy szerver nélküli funkciók.
Például egy képosztályozót betaníthatsz a felhőben, majd a felhőből telepítheted egy edge-eszközre. Az IoT-eszközöd ezután képeket küld az edge-eszköznek osztályozásra, ahelyett, hogy az interneten keresztül küldené azokat. Ha egy új modellverziót kell telepítened, azt a felhőben betaníthatod, és az IoT Edge segítségével frissítheted az edge-eszközön futó modellt az új verzióra.
🎓 Az IoT Edge-re telepített szoftvereket moduloknak nevezik. Alapértelmezés szerint az IoT Edge olyan modulokat futtat, amelyek kommunikálnak az IoT Hubbal, például az
edgeAgent
ésedgeHub
modulokat. Amikor egy képosztályozót telepítesz, az egy további modulként kerül telepítésre.
Az IoT Edge be van építve az IoT Hubba, így az edge-eszközöket ugyanazzal a szolgáltatással kezelheted, amelyet az IoT-eszközök kezelésére használnál, ugyanolyan szintű biztonsággal.
Az IoT Edge kódot futtat konténerekből – önálló alkalmazásokból, amelyek elkülönítve futnak a számítógéped többi alkalmazásától. Amikor egy konténert futtatsz, az olyan, mintha egy külön számítógép futna a számítógépeden belül, saját szoftverrel, szolgáltatásokkal és alkalmazásokkal. A legtöbb esetben a konténerek nem férnek hozzá semmihez a számítógépeden, hacsak nem osztasz meg velük például egy mappát. A konténer ezután nyitott porton keresztül nyújt szolgáltatásokat, amelyekhez csatlakozhatsz, vagy amelyeket megoszthatsz a hálózatoddal.
Például lehet egy konténered, amely egy weboldalt futtat a 80-as porton, az alapértelmezett HTTP-porton, és ezt a számítógépedről is elérhetővé teheted a 80-as porton.
✅ Kutass egy kicsit: Olvass utána a konténereknek és olyan szolgáltatásoknak, mint a Docker vagy a Moby.
A Custom Vision segítségével letöltheted a képosztályozókat, és konténerekként telepítheted őket, akár közvetlenül egy eszközre, akár az IoT Edge-en keresztül. Miután ezek konténerben futnak, ugyanazzal a REST API-val érhetők el, mint a felhőverzió, de az endpoint az edge-eszközre mutat, amely a konténert futtatja.
IoT Edge-eszköz regisztrálása
Ahhoz, hogy egy IoT Edge-eszközt használhass, regisztrálnod kell az IoT Hubban.
Feladat – IoT Edge-eszköz regisztrálása
-
Hozz létre egy IoT Hubot a
fruit-quality-detector
erőforráscsoportban. Adj neki egyedi nevet, példáulfruit-quality-detector
. -
Regisztrálj egy
fruit-quality-detector-edge
nevű IoT Edge-eszközt az IoT Hubban. A parancs hasonló a nem edge-eszköz regisztrálásához, de meg kell adnod a--edge-enabled
kapcsolót.az iot hub device-identity create --edge-enabled \ --device-id fruit-quality-detector-edge \ --hub-name <hub_name>
Cseréld ki a
<hub_name>
helyére az IoT Hubod nevét. -
Szerezd meg az eszköz kapcsolatláncát a következő parancs segítségével:
az iot hub device-identity connection-string show --device-id fruit-quality-detector-edge \ --output table \ --hub-name <hub_name>
Cseréld ki a
<hub_name>
helyére az IoT Hubod nevét.Másold ki a kimenetben megjelenő kapcsolatláncot.
IoT Edge-eszköz beállítása
Miután létrehoztad az edge-eszköz regisztrációját az IoT Hubban, beállíthatod az edge-eszközt.
Feladat – Az IoT Edge Runtime telepítése és elindítása
Az IoT Edge runtime csak Linux konténereket futtat. Linuxon vagy Windows-on Linux virtuális gépek használatával futtatható.
-
Ha Raspberry Pi-t használsz IoT-eszközként, az támogatott Linux-verziót futtat, és képes az IoT Edge runtime futtatására. Kövesd az Azure IoT Edge telepítése Linuxra útmutatót a Microsoft dokumentációjában, hogy telepítsd az IoT Edge-et és állítsd be a kapcsolatláncot.
💁 Ne feledd, a Raspberry Pi OS a Debian Linux egy változata.
-
Ha nem Raspberry Pi-t használsz, de van Linux számítógéped, futtathatod az IoT Edge runtime-ot. Kövesd az Azure IoT Edge telepítése Linuxra útmutatót a Microsoft dokumentációjában, hogy telepítsd az IoT Edge-et és állítsd be a kapcsolatláncot.
-
Ha Windows-t használsz, telepítheted az IoT Edge runtime-ot egy Linux virtu
-
Nyisd meg a Custom Vision portált a CustomVision.ai oldalon, és jelentkezz be, ha még nem tetted meg. Ezután nyisd meg a
fruit-quality-detector
projektedet. -
Válaszd ki a Beállítások gombot (⚙ ikon).
-
A Domainok listában válaszd ki a Food (compact) opciót.
-
Az Exportálási lehetőségek alatt győződj meg róla, hogy a Basic platforms (Tensorflow, CoreML, ONNX, ...) van kiválasztva.
-
A Beállítások oldal alján kattints a Változtatások mentése gombra.
-
Tanítsd újra a modellt a Train gombbal, és válaszd a Gyors tanítás opciót.
Feladat - exportáld a modelledet
Miután a modell betanításra került, konténerként kell exportálni.
-
Válaszd ki a Teljesítmény fület, és keresd meg a legutóbbi iterációt, amelyet a kompakt domain használatával tanítottál.
-
Kattints a Exportálás gombra a tetején.
-
Válaszd ki a DockerFile opciót, majd válassz egy verziót, amely megfelel az edge eszközödnek:
- Ha Linux számítógépen, Windows számítógépen vagy virtuális gépen futtatod az IoT Edge-t, válaszd a Linux verziót.
- Ha Raspberry Pi-n futtatod az IoT Edge-t, válaszd az ARM (Raspberry Pi 3) verziót.
🎓 A Docker az egyik legnépszerűbb eszköz a konténerek kezelésére, és a DockerFile egy utasításkészlet arról, hogyan állítsuk be a konténert.
-
Kattints az Exportálás gombra, hogy a Custom Vision létrehozza a szükséges fájlokat, majd kattints a Letöltés gombra, hogy letöltsd őket egy zip fájlban.
-
Mentsd el a fájlokat a számítógépedre, majd csomagold ki a mappát.
Készítsd elő a konténert a telepítéshez
Miután letöltötted a modelledet, konténerként kell felépíteni, majd feltölteni egy konténer regisztrációs helyre - egy online helyre, ahol tárolhatod a konténereket. Az IoT Edge ezután letölti a konténert a regisztrációs helyről, és telepíti az eszközödre.
A konténer regisztrációs hely, amelyet ebben a leckében használni fogsz, az Azure Container Registry. Ez nem ingyenes szolgáltatás, ezért pénzt takaríthatsz meg, ha kitakarítod a projektedet, miután befejezted.
💁 Az Azure Container Registry használatának költségeit megtekintheted az Azure Container Registry árképzési oldalán.
Feladat - telepítsd a Dockert
Ahhoz, hogy felépítsd és telepítsd az osztályozót, szükséged lehet a Docker telepítésére.
Csak akkor kell ezt megtenned, ha a konténert egy másik eszközről építed, mint amelyre az IoT Edge-t telepítetted - az IoT Edge telepítése részeként a Docker automatikusan telepítésre kerül.
- Ha a Docker konténert egy másik eszközről építed, mint az IoT Edge eszközöd, kövesd a Docker telepítési utasításait a Docker telepítési oldalán, hogy telepítsd a Docker Desktopot vagy a Docker motort. Győződj meg róla, hogy a telepítés után fut.
Feladat - hozz létre egy konténer regisztrációs erőforrást
-
Futtasd az alábbi parancsot a terminálodban vagy parancssorodban, hogy létrehozz egy Azure Container Registry erőforrást:
az acr create --resource-group fruit-quality-detector \ --sku Basic \ --name <Container registry name>
Cseréld ki a
<Container registry name>
helyet egy egyedi névre a konténer regisztrációs helyed számára, csak betűket és számokat használva. Alapozd ezt afruitqualitydetector
névre. Ez a név az URL része lesz, amelyen keresztül elérheted a konténer regisztrációs helyet, ezért globálisan egyedinek kell lennie. -
Jelentkezz be az Azure Container Registry-be az alábbi parancs segítségével:
az acr login --name <Container registry name>
Cseréld ki a
<Container registry name>
helyet azzal a névvel, amelyet a konténer regisztrációs helyedhez használtál. -
Állítsd a konténer regisztrációs helyet adminisztrációs módba, hogy jelszót generálhass az alábbi parancs segítségével:
az acr update --admin-enabled true \ --name <Container registry name>
Cseréld ki a
<Container registry name>
helyet azzal a névvel, amelyet a konténer regisztrációs helyedhez használtál. -
Generálj jelszavakat a konténer regisztrációs helyedhez az alábbi parancs segítségével:
az acr credential renew --password-name password \ --output table \ --name <Container registry name>
Cseréld ki a
<Container registry name>
helyet azzal a névvel, amelyet a konténer regisztrációs helyedhez használtál.Jegyezd fel a
PASSWORD
értékét, mert később szükséged lesz rá.
Feladat - építsd fel a konténeredet
A Custom Vision-től letöltött fájl egy DockerFile volt, amely tartalmazza az utasításokat arról, hogyan kell felépíteni a konténert, valamint az alkalmazáskódot, amely a konténeren belül fut, hogy hosztolja a Custom Vision modelledet, és egy REST API-t biztosítson a hívásához. A Docker segítségével felépíthetsz egy címkézett konténert a DockerFile-ból, majd feltöltheted a konténer regisztrációs helyedre.
🎓 A konténerek címkéket kapnak, amelyek meghatározzák a nevüket és verziójukat. Ha frissíteni kell egy konténert, ugyanazzal a címkével, de újabb verzióval építheted fel.
-
Nyisd meg a terminálodat vagy parancssorodat, és navigálj a kicsomagolt modellhez, amelyet a Custom Vision-től letöltöttél.
-
Futtasd az alábbi parancsot, hogy felépítsd és címkézd az image-t:
docker build --platform <platform> -t <Container registry name>.azurecr.io/classifier:v1 .
Cseréld ki a
<platform>
helyet azzal a platformmal, amelyen a konténer futni fog. Ha Raspberry Pi-n futtatod az IoT Edge-t, állítsdlinux/armhf
-re, különben állítsdlinux/amd64
-re.💁 Ha ezt a parancsot az IoT Edge eszközödön futtatod, például Raspberry Pi-ről, kihagyhatod a
--platform <platform>
részt, mivel alapértelmezés szerint az aktuális platformot használja.Cseréld ki a
<Container registry name>
helyet azzal a névvel, amelyet a konténer regisztrációs helyedhez használtál.💁 Ha Linuxot vagy Raspberry Pi OS-t használsz, előfordulhat, hogy
sudo
-t kell használnod a parancs futtatásához.A Docker felépíti az image-t, konfigurálva az összes szükséges szoftvert. Az image ezután
classifier:v1
címkét kap.➜ d4ccc45da0bb478bad287128e1274c3c.DockerFile.Linux docker build --platform linux/amd64 -t fruitqualitydetectorjimb.azurecr.io/classifier:v1 . [+] Building 102.4s (11/11) FINISHED => [internal] load build definition from Dockerfile => => transferring dockerfile: 131B => [internal] load .dockerignore => => transferring context: 2B => [internal] load metadata for docker.io/library/python:3.7-slim => [internal] load build context => => transferring context: 905B => [1/6] FROM docker.io/library/python:3.7-slim@sha256:b21b91c9618e951a8cbca5b696424fa5e820800a88b7e7afd66bba0441a764d6 => => resolve docker.io/library/python:3.7-slim@sha256:b21b91c9618e951a8cbca5b696424fa5e820800a88b7e7afd66bba0441a764d6 => => sha256:b4d181a07f8025e00e0cb28f1cc14613da2ce26450b80c54aea537fa93cf3bda 27.15MB / 27.15MB => => sha256:de8ecf497b753094723ccf9cea8a46076e7cb845f333df99a6f4f397c93c6ea9 2.77MB / 2.77MB => => sha256:707b80804672b7c5d8f21e37c8396f319151e1298d976186b4f3b76ead9f10c8 10.06MB / 10.06MB => => sha256:b21b91c9618e951a8cbca5b696424fa5e820800a88b7e7afd66bba0441a764d6 1.86kB / 1.86kB => => sha256:44073386687709c437586676b572ff45128ff1f1570153c2f727140d4a9accad 1.37kB / 1.37kB => => sha256:3d94f0f2ca798607808b771a7766f47ae62a26f820e871dd488baeccc69838d1 8.31kB / 8.31kB => => sha256:283715715396fd56d0e90355125fd4ec57b4f0773f306fcd5fa353b998beeb41 233B / 233B => => sha256:8353afd48f6b84c3603ea49d204bdcf2a1daada15f5d6cad9cc916e186610a9f 2.64MB / 2.64MB => => extracting sha256:b4d181a07f8025e00e0cb28f1cc14613da2ce26450b80c54aea537fa93cf3bda => => extracting sha256:de8ecf497b753094723ccf9cea8a46076e7cb845f333df99a6f4f397c93c6ea9 => => extracting sha256:707b80804672b7c5d8f21e37c8396f319151e1298d976186b4f3b76ead9f10c8 => => extracting sha256:283715715396fd56d0e90355125fd4ec57b4f0773f306fcd5fa353b998beeb41 => => extracting sha256:8353afd48f6b84c3603ea49d204bdcf2a1daada15f5d6cad9cc916e186610a9f => [2/6] RUN pip install -U pip => [3/6] RUN pip install --no-cache-dir numpy~=1.17.5 tensorflow~=2.0.2 flask~=1.1.2 pillow~=7.2.0 => [4/6] RUN pip install --no-cache-dir mscviplib==2.200731.16 => [5/6] COPY app /app => [6/6] WORKDIR /app => exporting to image => => exporting layers => => writing image sha256:1846b6f134431f78507ba7c079358ed66d944c0e185ab53428276bd822400386 => => naming to fruitqualitydetectorjimb.azurecr.io/classifier:v1
Feladat - töltsd fel a konténeredet a konténer regisztrációs helyedre
-
Használd az alábbi parancsot, hogy feltöltsd a konténeredet a konténer regisztrációs helyedre:
docker push <Container registry name>.azurecr.io/classifier:v1
Cseréld ki a
<Container registry name>
helyet azzal a névvel, amelyet a konténer regisztrációs helyedhez használtál.💁 Ha Linuxot használsz, előfordulhat, hogy
sudo
-t kell használnod a parancs futtatásához.A konténer feltöltésre kerül a konténer regisztrációs helyre.
➜ d4ccc45da0bb478bad287128e1274c3c.DockerFile.Linux docker push fruitqualitydetectorjimb.azurecr.io/classifier:v1 The push refers to repository [fruitqualitydetectorjimb.azurecr.io/classifier] 5f70bf18a086: Pushed 8a1ba9294a22: Pushed 56cf27184a76: Pushed b32154f3f5dd: Pushed 36103e9a3104: Pushed e2abb3cacca0: Pushed 4213fd357bbe: Pushed 7ea163ba4dce: Pushed 537313a13d90: Pushed 764055ebc9a7: Pushed v1: digest: sha256:ea7894652e610de83a5a9e429618e763b8904284253f4fa0c9f65f0df3a5ded8 size: 2423
-
A feltöltés ellenőrzéséhez listázhatod a konténereket a regisztrációs helyeden az alábbi parancs segítségével:
az acr repository list --output table \ --name <Container registry name>
Cseréld ki a
<Container registry name>
helyet azzal a névvel, amelyet a konténer regisztrációs helyedhez használtál.➜ d4ccc45da0bb478bad287128e1274c3c.DockerFile.Linux az acr repository list --name fruitqualitydetectorjimb --output table Result ---------- classifier
Az outputban látni fogod az osztályozódat.
Telepítsd a konténeredet
A konténered most telepíthető az IoT Edge eszközödre. A telepítéshez létre kell hoznod egy telepítési manifestet - egy JSON dokumentumot, amely felsorolja az edge eszközre telepítendő modulokat.
Feladat - hozz létre egy telepítési manifestet
-
Hozz létre egy új fájlt
deployment.json
néven valahol a számítógépeden. -
Add hozzá az alábbiakat a fájlhoz:
{ "content": { "modulesContent": { "$edgeAgent": { "properties.desired": { "schemaVersion": "1.1", "runtime": { "type": "docker", "settings": { "minDockerVersion": "v1.25", "loggingOptions": "", "registryCredentials": { "ClassifierRegistry": { "username": "<Container registry name>", "password": "<Container registry password>", "address": "<Container registry name>.azurecr.io" } } } }, "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": { "ImageClassifier": { "version": "1.0", "type": "docker", "status": "running", "restartPolicy": "always", "settings": { "image": "<Container registry name>.azurecr.io/classifier:v1", "createOptions": "{\"ExposedPorts\": {\"80/tcp\": {}},\"HostConfig\": {\"PortBindings\": {\"80/tcp\": [{\"HostPort\": \"80\"}]}}}" } } } } }, "$edgeHub": { "properties.desired": { "schemaVersion": "1.1", "routes": { "upstream": "FROM /messages/* INTO $upstream" }, "storeAndForwardConfiguration": { "timeToLiveSecs": 7200 } } } } } }
💁 Ezt a fájlt megtalálhatod a code-deployment/deployment mappában.
Cseréld ki a három
<Container registry name>
előfordulást azzal a névvel, amelyet a konténer regisztrációs helyedhez használtál. Az egyik azImageClassifier
modul szekcióban van, a másik kettő pedig aregistryCredentials
szekcióban.Cseréld ki a
<Container registry password>
-t aregistryCredentials
szekcióban a konténer regisztrációs helyed jelszavával. -
A telepítési manifestet tartalmazó mappából futtasd az alábbi parancsot:
az iot edge set-modules --device-id fruit-quality-detector-edge \ --content deployment.json \ --hub-name <hub_name>
Cseréld ki a
<hub_name>
helyet az IoT Hub nevével.Az image osztályozó modul telepítésre kerül az edge eszközödre.
Feladat - ellenőrizd, hogy az osztályozó fut-e
-
Csatlakozz az IoT Edge eszközhöz:
-
Ha Raspberry Pi-t használsz az IoT Edge futtatásához, csatlakozz ssh-n keresztül a terminálodból vagy egy távoli SSH munkamenetből a VS Code-ban.
-
Ha Linux konténerben futtatod az IoT Edge-t Windows-on, kövesd a sikeres konfiguráció ellenőrzési útmutatót, hogy csatlakozz az IoT Edge eszközhöz.
-
Ha virtuális gépen futtatod az IoT Edge-t, ssh-n keresztül csatlakozhatsz a géphez az
adminUsername
éspassword
használatával, amelyet a VM létrehozásakor állítottál be, valamint az IP cím vagy DNS név használatával:ssh <adminUsername>@<IP address>
Vagy:
ssh <adminUsername>@<DNS Name>
Add meg a jelszavadat, amikor kéri.
-
-
Miután csatlakoztál, futtasd az alábbi parancsot, hogy megkapd az IoT Edge modulok listáját:
iotedge list
💁 Előfordulhat, hogy
sudo
-t kell használnod a parancs futtatásához.Látni fogod a futó modulokat:
jim@fruit-quality-detector-jimb:~$ iotedge list NAME STATUS DESCRIPTION CONFIG ImageClassifier running Up 42 minutes fruitqualitydetectorjimb.azurecr.io/classifier:v1 edgeAgent running Up 42 minutes mcr.microsoft.com/azureiotedge-agent:1.1 edgeHub running Up 42 minutes mcr.microsoft.com/azureiotedge-hub:1.1
-
Ellenőrizd az Image osztályozó modul naplóit az alábbi parancs segítségével:
iotedge logs ImageClassifier
💁 Előfordulhat, hogy
sudo
-t kell használnod a parancs futtatásához.jim@fruit-quality-detector-jimb:~$ iotedge logs ImageClassifier 2021-07-05 20:30:15.387144: I tensorflow/core/platform/cpu_feature_guard.cc:142] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA 2021-07-05 20:30:15.392185: I tensorflow/core/platform/profile_utils/cpu_utils.cc:94] CPU Frequency: 2394450000 Hz 2021-07-05 20:30:15.392712: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x55ed9ac83470 executing computations on platform Host. Devices: 2021-07-05 20:30:15.392806: I tensorflow/compiler/xla/service/service.cc:175] StreamExecutor device (0): Host, Default Version Loading model...Success! Loading labels...2 found. Success! * Serving Flask app "app" (lazy loading) * Environment: production WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. * Debug mode: off * Running on http://0.0.0.0:80/ (Press CTRL+C to quit)
Feladat - teszteld az image osztályozót
-
A CURL segítségével tesztelheted az image osztályozót az IoT Edge ügynököt futtató számítógép IP címével vagy host nevével. Keresd meg az IP címet:
- Ha ugyanazon a gépen vagy, amelyen az IoT Edge fut, használhatod a
localhost
-ot host névként. - Ha VM-et használsz, használhatod a VM IP címét vagy DNS nevét.
- Ellenkező esetben megtalálhatod az IoT Edge-t futtató gép IP címét:
- Windows 10-en kövesd az IP cím keresési útmutatót.
- macOS-en kövesd az IP cím keresési útmutatót Mac-en.
- Linuxon kövesd az IP cím keresési útmutatót Linuxon.
- Ha ugyanazon a gépen vagy, amelyen az IoT Edge fut, használhatod a
-
Tesztelheted a konténert egy helyi fájllal az alábbi curl parancs futtatásával:
curl --location \ --request POST 'http://<IP address or name>/image' \ --header 'Content-Type: image/png' \ --data-binary '@<file_Name>'
Cseréld ki a
<IP address or name>
helyet az IoT Edge-t futtató számítógép IP címével vagy host nevével. Cseréld ki a<file_Name>
helyet a tesztelendő fájl nevével.Az outputban látni fogod az előrejelzési eredményeket:
{ "created": "2021-07-05T21:44:39.573181", "id": "", "iteration": "", "predictions": [ { "boundingBox": null, "probability": 0.9995615482330322, "tagId": "", "tagName": "ripe" }, { "boundingBox": null, "probability": 0.0004384400090202689, "tagId": "", "tagName": "unripe" } ], "project": "" }
💁 Itt nincs szükség előrejelzési kulcs megadására, mivel ez nem egy Azure erőforrást használ. Ehelyett a biztonságot a belső hálózaton belüli igények alapján konfigurálnák, nem pedig egy nyilvános végpont és API kulcs használatával.
Használd az IoT Edge eszközödet
Most, hogy az Image osztályozó telepítve lett az IoT Edge eszközre, használhatod az IoT eszközödről.
Feladat - használd az IoT Edge eszközödet
Dolgozd végig a megfelelő útmutatót, hogy képeket osztályozz az IoT Edge osztályozóval:
Modell újratanítása
Az IoT Edge-en futó image osztályozók egyik hátránya, hogy nem kapcsolódnak a Custom Vision projekthez. Ha megnézed a Predictions fület a Custom Vision-ben, nem fogod látni azokat a képeket, amelyeket az Edge-alapú osztályozóval osztályoztál.
Ez a várt viselkedés - a képek nem kerülnek a felhőbe osztályozásra, így nem lesznek elérhetők a felhőben. Az IoT Edge használatának egyik előnye a magánélet védelme, biztosítva, hogy a képek ne hagyják el a hálózatodat, a másik pedig az offline működés képessége, így nem kell a képeket feltölteni, amikor az eszköznek nincs internetkapcsolata. A hátrány viszont a modelled javítása - más módot kellene megvalósítanod a képek tárolására, amelyeket manuálisan újra lehet osztályozni a kép osztályozó javítása és újratanítása érdekében.
✅ Gondolkodj el azon, hogyan lehetne képeket feltölteni az osztályozó újratanításához.
🚀 Kihívás
Az AI modellek edge eszközökön történő futtatása gyorsabb lehet,
- Olvass többet az edge computingról, különös tekintettel arra, hogyan segíthet a 5G az edge computing terjesztésében a mi az edge computing és miért fontos? cikkben a NetworkWorld oldalán
- Tudj meg többet arról, hogyan futtathatsz AI szolgáltatásokat az IoT Edge-en, ha megnézed a tanuld meg, hogyan használd az Azure IoT Edge-et egy előre elkészített AI szolgáltatáson az Edge-en nyelvfelismeréshez epizódot a Learn Live sorozatban a Microsoft Channel9-en
Feladat
Futtass más szolgáltatásokat az edge-en
Felelősség kizárása:
Ez a dokumentum az AI fordítási szolgáltatás Co-op Translator segítségével lett lefordítva. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt professzionális emberi fordítást igénybe venni. Nem vállalunk felelősséget az ebből a fordításból eredő félreértésekért vagy téves értelmezésekért.