39 KiB
Spusťte detektor ovoce na okraji
Sketchnote od Nitya Narasimhan. Klikněte na obrázek pro větší verzi.
Toto video poskytuje přehled o spuštění klasifikátorů obrázků na IoT zařízeních, což je téma této lekce.
Kvíz před přednáškou
Úvod
V minulé lekci jste použili svůj klasifikátor obrázků k rozlišení zralého a nezralého ovoce, přičemž jste odesílali obrázky zachycené kamerou na vašem IoT zařízení přes internet do cloudové služby. Tyto požadavky zabírají čas, stojí peníze a v závislosti na typu obrazových dat, která používáte, mohou mít dopady na soukromí.
V této lekci se naučíte, jak spouštět modely strojového učení (ML) na okraji - na IoT zařízeních, která běží ve vaší vlastní síti, nikoli v cloudu. Naučíte se výhody a nevýhody edge computingu oproti cloud computingu, jak nasadit svůj AI model na okraj a jak k němu přistupovat z vašeho IoT zařízení.
V této lekci se zaměříme na:
- Edge computing
- Azure IoT Edge
- Registrace IoT Edge zařízení
- Nastavení IoT Edge zařízení
- Export vašeho modelu
- Příprava kontejneru pro nasazení
- Nasazení kontejneru
- Použití IoT Edge zařízení
Edge computing
Edge computing zahrnuje použití počítačů, které zpracovávají data IoT co nejblíže místu, kde jsou data generována. Místo zpracování v cloudu se přesouvá na okraj cloudu - do vaší interní sítě.
V dosavadních lekcích jste měli zařízení, která shromažďovala data a odesílala je do cloudu k analýze, kde běžely serverless funkce nebo AI modely.
Edge computing zahrnuje přesun některých cloudových služeb z cloudu na počítače běžící ve stejné síti jako IoT zařízení, přičemž komunikace s cloudem probíhá pouze v případě potřeby. Například můžete spouštět AI modely na edge zařízeních pro analýzu zralosti ovoce a do cloudu odesílat pouze analytická data, jako je počet zralých kusů ovoce oproti nezralým.
✅ Zamyslete se nad IoT aplikacemi, které jste dosud vytvořili. Které jejich části by mohly být přesunuty na okraj?
Výhody
Výhody edge computingu jsou:
-
Rychlost - edge computing je ideální pro časově citlivá data, protože akce se provádějí ve stejné síti jako zařízení, místo aby se volaly přes internet. To umožňuje vyšší rychlosti, protože interní sítě mohou běžet podstatně rychleji než internetové připojení, přičemž data cestují mnohem kratší vzdálenost.
💁 Přestože optické kabely používané pro internetové připojení umožňují přenos dat rychlostí světla, data mohou potřebovat čas na cestu kolem světa k poskytovatelům cloudových služeb. Například pokud odesíláte data z Evropy do cloudových služeb v USA, trvá to minimálně 28 ms, než data překonají Atlantik v optickém kabelu, a to bez započítání času potřebného k přenosu dat do transatlantického kabelu, konverzi z elektrických na světelné signály a zpět na druhé straně, a následně z optického kabelu k poskytovateli cloudových služeb.
Edge computing také vyžaduje méně síťového provozu, což snižuje riziko zpomalení dat kvůli přetížení omezené šířky pásma dostupné pro internetové připojení.
-
Dostupnost v odlehlých oblastech - edge computing funguje, když máte omezené nebo žádné připojení, nebo je připojení příliš drahé na neustálé používání. Například při práci v oblastech postižených humanitárními katastrofami, kde je infrastruktura omezená, nebo v rozvojových zemích.
-
Nižší náklady - shromažďování, ukládání, analýza dat a spouštění akcí na edge zařízení snižuje využití cloudových služeb, což může snížit celkové náklady na vaši IoT aplikaci. V poslední době se objevily zařízení navržená pro edge computing, jako jsou AI akcelerátory, například Jetson Nano od NVIDIA, které mohou spouštět AI úlohy pomocí hardwaru založeného na GPU na zařízeních, která stojí méně než 100 USD.
-
Soukromí a bezpečnost - s edge computingem data zůstávají ve vaší síti a nejsou nahrávána do cloudu. To je často preferováno pro citlivé a osobně identifikovatelné informace, zejména proto, že data nemusí být ukládána po jejich analýze, což výrazně snižuje riziko úniku dat. Příklady zahrnují lékařská data a záznamy z bezpečnostních kamer.
-
Řešení problémů s nebezpečnými zařízeními - pokud máte zařízení s známými bezpečnostními chybami, která nechcete připojit přímo k vaší síti nebo internetu, můžete je připojit k samostatné síti k bráně IoT Edge zařízení. Toto edge zařízení může mít také připojení k vaší širší síti nebo internetu a spravovat tok dat tam a zpět.
-
Podpora nekompatibilních zařízení - pokud máte zařízení, která se nemohou připojit k IoT Hubu, například zařízení, která se mohou připojit pouze pomocí HTTP nebo mají pouze Bluetooth, můžete použít IoT Edge zařízení jako bránu, která přeposílá zprávy do IoT Hubu.
✅ Proveďte výzkum: Jaké další výhody by mohl mít edge computing?
Nevýhody
Existují nevýhody edge computingu, kdy může být cloud preferovanou volbou:
-
Škálovatelnost a flexibilita - cloud computing se může přizpůsobit potřebám sítě a dat v reálném čase přidáním nebo snížením serverů a dalších zdrojů. Přidání více edge počítačů vyžaduje manuální přidání dalších zařízení.
-
Spolehlivost a odolnost - cloud computing poskytuje více serverů často na více místech pro redundanci a obnovu po havárii. Pro dosažení stejné úrovně redundance na okraji jsou potřeba velké investice a mnoho konfigurační práce.
-
Údržba - poskytovatelé cloudových služeb zajišťují údržbu systému a aktualizace.
✅ Proveďte výzkum: Jaké další nevýhody by mohl mít edge computing?
Nevýhody jsou vlastně opakem výhod používání cloudu - musíte tato zařízení sami budovat a spravovat, místo abyste se spoléhali na odborné znalosti a škálovatelnost poskytovatelů cloudových služeb.
Některá rizika jsou zmírněna samotnou povahou edge computingu. Například pokud máte edge zařízení běžící ve výrobním závodě, které shromažďuje data ze strojů, nemusíte přemýšlet o některých scénářích obnovy po havárii. Pokud dojde k výpadku elektrické energie v závodě, nepotřebujete záložní edge zařízení, protože stroje, které generují data, která edge zařízení zpracovává, budou také bez energie.
Pro IoT systémy budete často chtít kombinaci cloudového a edge computingu, využívající každou službu na základě potřeb systému, jeho zákazníků a jeho správců.
Azure IoT Edge
Azure IoT Edge je služba, která vám může pomoci přesunout pracovní zátěže z cloudu na okraj. Nastavíte zařízení jako edge zařízení a z cloudu můžete na toto edge zařízení nasadit kód. To vám umožňuje kombinovat schopnosti cloudu a okraje.
🎓 Pracovní zátěže je termín pro jakoukoli službu, která provádí nějakou práci, jako jsou AI modely, aplikace nebo serverless funkce.
Například můžete trénovat klasifikátor obrázků v cloudu a poté jej z cloudu nasadit na edge zařízení. Vaše IoT zařízení pak odesílá obrázky na edge zařízení ke klasifikaci, místo aby je odesílalo přes internet. Pokud potřebujete nasadit novou iteraci modelu, můžete ji trénovat v cloudu a pomocí IoT Edge aktualizovat model na edge zařízení na novou iteraci.
🎓 Software, který je nasazen na IoT Edge, je známý jako moduly. Ve výchozím nastavení IoT Edge spouští moduly, které komunikují s IoT Hubem, jako jsou moduly
edgeAgent
aedgeHub
. Když nasadíte klasifikátor obrázků, je nasazen jako další modul.
IoT Edge je součástí IoT Hubu, takže můžete spravovat edge zařízení pomocí stejné služby, kterou byste použili ke správě IoT zařízení, se stejnou úrovní zabezpečení.
IoT Edge spouští kód z kontejnerů - samostatných aplikací, které běží izolovaně od ostatních aplikací na vašem počítači. Když spustíte kontejner, chová se jako samostatný počítač běžící uvnitř vašeho počítače, se svým vlastním softwarem, službami a aplikacemi. Většinou kontejnery nemohou přistupovat k ničemu na vašem počítači, pokud se nerozhodnete sdílet například složku s kontejnerem. Kontejner pak zpřístupňuje služby prostřednictvím otevřeného portu, ke kterému se můžete připojit nebo jej zpřístupnit vaší síti.
Například můžete mít kontejner s webovou stránkou běžící na portu 80, což je výchozí HTTP port, a můžete jej zpřístupnit z vašeho počítače také na portu 80.
✅ Proveďte výzkum: Přečtěte si o kontejnerech a službách, jako je Docker nebo Moby.
Custom Vision umožňuje stáhnout klasifikátory obrázků a nasadit je jako kontejnery, buď přímo na zařízení, nebo prostřednictvím IoT Edge. Jakmile běží v kontejneru, lze k nim přistupovat pomocí stejného REST API jako u cloudové verze, ale s endpointem směřujícím na edge zařízení, které kontejner provozuje.
Registrace IoT Edge zařízení
Pro použití IoT Edge zařízení je třeba jej zaregistrovat v IoT Hubu.
Úkol - registrace IoT Edge zařízení
-
Vytvořte IoT Hub ve skupině prostředků
fruit-quality-detector
. Dejte mu jedinečný název založený nafruit-quality-detector
. -
Zaregistrujte IoT Edge zařízení s názvem
fruit-quality-detector-edge
ve vašem IoT Hubu. Příkaz k tomu je podobný tomu, který se používá k registraci zařízení bez edge, kromě toho, že přidáte příznak--edge-enabled
.az iot hub device-identity create --edge-enabled \ --device-id fruit-quality-detector-edge \ --hub-name <hub_name>
Nahraďte
<hub_name>
názvem vašeho IoT Hubu. -
Získejte připojovací řetězec pro vaše zařízení pomocí následujícího příkazu:
az iot hub device-identity connection-string show --device-id fruit-quality-detector-edge \ --output table \ --hub-name <hub_name>
Nahraďte
<hub_name>
názvem vašeho IoT Hubu.Zkopírujte připojovací řetězec, který se zobrazí ve výstupu.
Nastavení IoT Edge zařízení
Jakmile vytvoříte registraci edge zařízení ve vašem IoT Hubu, můžete nastavit edge zařízení.
Úkol - Instalace a spuštění IoT Edge Runtime
IoT Edge runtime běží pouze na Linuxových kontejnerech. Může být spuštěn na Linuxu nebo na Windows pomocí Linuxových virtuálních strojů.
-
Pokud používáte Raspberry Pi jako vaše IoT zařízení, pak toto zařízení běží na podporované verzi Linuxu a může hostovat IoT Edge runtime. Postupujte podle průvodce instalací Azure IoT Edge pro Linux na Microsoft Docs pro instalaci IoT Edge a nastavení připojovacího řetězce.
💁 Pamatujte, Raspberry Pi OS je varianta Debian Linuxu.
-
Pokud nepoužíváte Raspberry Pi, ale máte Linuxový počítač, můžete spustit IoT Edge runtime. Postupujte podle průvodce instalací Azure IoT Edge pro Linux na Microsoft Docs pro instalaci IoT Edge a nastavení připojovacího řetězce.
-
Pokud používáte Windows, můžete nainstalovat IoT Edge runtime v Linuxovém virtuálním stroji podle sekce instalace a spuštění IoT Edge runtime v rychlém startu nasazení prvního IoT Edge modulu na Windows zařízení na Microsoft Docs. Můžete přestat, když dosáhnete sekce Nasazení modulu.
-
Pokud používáte macOS, můžete vytvořit virtuální stroj (VM) v cloudu, který použijete jako vaše IoT Edge zařízení. Tyto počítače můžete vytvořit v cloudu a přistupovat k nim přes internet. Můžete vytvořit Linuxový VM, který má nainstalovaný IoT Edge. Postupujte podle průvodce vytvořením virtuálního stroje běžícího IoT Edge pro pokyny, jak to udělat.
Export vašeho modelu
Pro spuštění klasifikátoru na okraji je třeba jej exportovat z Custom Vision. Custom Vision může generovat dva typy modelů - standardní modely a kompaktní modely. Kompaktní modely používají různé techniky ke snížení velikosti modelu, což jej činí dostatečně malým pro stažení a nasazení na IoT zařízení.
Když jste vytvořili klasifikátor obrázků, použili jste doménu Food, verzi modelu optimalizovanou pro trénování na obrázcích jídla. V Custom Vision změníte doménu svého projektu, použijete svá tréninková data k trénování nového modelu s novou doménou. Všechny domény podporované Custom Vision jsou dostupné jako standardní i kompaktní.
Úkol - trénujte svůj model pomocí domény Food (kompaktní)
-
Spusťte portál Custom Vision na CustomVision.ai a přihlaste se, pokud jej ještě nemáte otevřený. Poté otevřete svůj projekt
fruit-quality-detector
. -
Vyberte tlačítko Settings (ikona ⚙).
-
V seznamu Domains vyberte Food (compact).
-
V části Export Capabilities se ujistěte, že je vybrána možnost Basic platforms (Tensorflow, CoreML, ONNX, ...).
-
Na spodní části stránky Nastavení vyberte Save Changes.
-
Znovu natrénujte model pomocí tlačítka Train, přičemž zvolte Quick training.
Úkol - exportujte svůj model
Jakmile je model natrénován, je třeba jej exportovat jako kontejner.
-
Vyberte kartu Performance a najděte svou nejnovější iteraci, která byla natrénována pomocí kompaktní domény.
-
Klikněte na tlačítko Export nahoře.
-
Vyberte DockerFile a zvolte verzi, která odpovídá vašemu edge zařízení:
- Pokud provozujete IoT Edge na počítači s Linuxem, Windows nebo na virtuálním stroji, vyberte verzi Linux.
- Pokud provozujete IoT Edge na Raspberry Pi, vyberte verzi ARM (Raspberry Pi 3).
🎓 Docker je jedním z nejpopulárnějších nástrojů pro správu kontejnerů a DockerFile je sada instrukcí, jak nastavit kontejner.
-
Klikněte na Export, aby Custom Vision vytvořil příslušné soubory, a poté na Download, abyste je stáhli jako zip soubor.
-
Uložte soubory do svého počítače a rozbalte složku.
Příprava kontejneru pro nasazení
Jakmile stáhnete svůj model, je třeba jej sestavit do kontejneru a poté nahrát do registru kontejnerů – online úložiště, kde můžete kontejnery uchovávat. IoT Edge poté může stáhnout kontejner z registru a nasadit jej na vaše zařízení.
Registr kontejnerů, který budete používat v této lekci, je Azure Container Registry. Tato služba není zdarma, takže abyste ušetřili peníze, ujistěte se, že vyčistíte svůj projekt, jakmile skončíte.
💁 Náklady na používání Azure Container Registry si můžete prohlédnout na stránce s cenami Azure Container Registry.
Úkol - instalace Dockeru
Pro sestavení a nasazení klasifikátoru možná budete muset nainstalovat Docker.
Toto budete potřebovat pouze v případě, že plánujete sestavit svůj kontejner na jiném zařízení, než na kterém jste nainstalovali IoT Edge – součástí instalace IoT Edge je i instalace Dockeru.
- Pokud sestavujete docker kontejner na jiném zařízení než na vašem IoT Edge zařízení, postupujte podle pokynů k instalaci Dockeru na stránce instalace Dockeru a nainstalujte Docker Desktop nebo Docker engine. Po instalaci se ujistěte, že Docker běží.
Úkol - vytvoření zdroje registru kontejnerů
-
Spusťte následující příkaz z vašeho terminálu nebo příkazového řádku pro vytvoření zdroje Azure Container Registry:
az acr create --resource-group fruit-quality-detector \ --sku Basic \ --name <Container registry name>
Nahraďte
<Container registry name>
jedinečným názvem pro váš registr kontejnerů, použijte pouze písmena a čísla. Základem může býtfruitqualitydetector
. Tento název se stane součástí URL pro přístup k registru kontejnerů, takže musí být globálně jedinečný. -
Přihlaste se do Azure Container Registry pomocí následujícího příkazu:
az acr login --name <Container registry name>
Nahraďte
<Container registry name>
názvem, který jste použili pro váš registr kontejnerů. -
Nastavte registr kontejnerů do režimu správce, abyste mohli vygenerovat heslo pomocí následujícího příkazu:
az acr update --admin-enabled true \ --name <Container registry name>
Nahraďte
<Container registry name>
názvem, který jste použili pro váš registr kontejnerů. -
Vygenerujte hesla pro váš registr kontejnerů pomocí následujícího příkazu:
az acr credential renew --password-name password \ --output table \ --name <Container registry name>
Nahraďte
<Container registry name>
názvem, který jste použili pro váš registr kontejnerů.Zkopírujte hodnotu
PASSWORD
, protože ji budete později potřebovat.
Úkol - sestavení vašeho kontejneru
To, co jste stáhli z Custom Vision, byl DockerFile obsahující instrukce, jak by měl být kontejner sestaven, spolu s aplikačním kódem, který bude spuštěn uvnitř kontejneru pro hostování vašeho modelu Custom Vision, spolu s REST API pro jeho volání. Pomocí Dockeru můžete sestavit označený kontejner z DockerFile a poté jej nahrát do vašeho registru kontejnerů.
🎓 Kontejnery jsou označeny tagem, který definuje jejich název a verzi. Když potřebujete aktualizovat kontejner, můžete jej sestavit se stejným tagem, ale s novější verzí.
-
Otevřete svůj terminál nebo příkazový řádek a přejděte do rozbalené složky modelu, kterou jste stáhli z Custom Vision.
-
Spusťte následující příkaz pro sestavení a označení obrazu:
docker build --platform <platform> -t <Container registry name>.azurecr.io/classifier:v1 .
Nahraďte
<platform>
platformou, na které bude tento kontejner spuštěn. Pokud provozujete IoT Edge na Raspberry Pi, nastavte to nalinux/armhf
, jinak nastavte nalinux/amd64
.💁 Pokud tento příkaz spouštíte ze zařízení, na kterém provozujete IoT Edge, například z Raspberry Pi, můžete vynechat část
--platform <platform>
, protože výchozí hodnota je aktuální platforma.Nahraďte
<Container registry name>
názvem, který jste použili pro váš registr kontejnerů.💁 Pokud používáte Linux nebo Raspberry Pi OS, možná budete muset použít
sudo
pro spuštění tohoto příkazu.Docker sestaví obraz, nakonfiguruje veškerý potřebný software. Obraz bude poté označen jako
classifier:v1
.➜ 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
Úkol - nahrání vašeho kontejneru do registru kontejnerů
-
Použijte následující příkaz pro nahrání vašeho kontejneru do registru kontejnerů:
docker push <Container registry name>.azurecr.io/classifier:v1
Nahraďte
<Container registry name>
názvem, který jste použili pro váš registr kontejnerů.💁 Pokud používáte Linux, možná budete muset použít
sudo
pro spuštění tohoto příkazu.Kontejner bude nahrán do registru kontejnerů.
➜ 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
-
Pro ověření nahrání můžete vypsat kontejnery ve vašem registru pomocí následujícího příkazu:
az acr repository list --output table \ --name <Container registry name>
Nahraďte
<Container registry name>
názvem, který jste použili pro váš registr kontejnerů.➜ d4ccc45da0bb478bad287128e1274c3c.DockerFile.Linux az acr repository list --name fruitqualitydetectorjimb --output table Result ---------- classifier
Ve výstupu uvidíte váš klasifikátor.
Nasazení vašeho kontejneru
Váš kontejner nyní může být nasazen na vaše IoT Edge zařízení. Pro nasazení je třeba definovat nasazovací manifest – JSON dokument, který uvádí moduly, které budou nasazeny na edge zařízení.
Úkol - vytvoření nasazovacího manifestu
-
Vytvořte nový soubor s názvem
deployment.json
někde na vašem počítači. -
Přidejte do tohoto souboru následující:
{ "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 } } } } } }
💁 Tento soubor najdete ve složce code-deployment/deployment.
Nahraďte tři instance
<Container registry name>
názvem, který jste použili pro váš registr kontejnerů. Jeden je v sekci moduluImageClassifier
, další dva jsou v sekciregistryCredentials
.Nahraďte
<Container registry password>
v sekciregistryCredentials
vaším heslem k registru kontejnerů. -
Ze složky obsahující váš nasazovací manifest spusťte následující příkaz:
az iot edge set-modules --device-id fruit-quality-detector-edge \ --content deployment.json \ --hub-name <hub_name>
Nahraďte
<hub_name>
názvem vašeho IoT Hubu.Modul klasifikátoru obrázků bude nasazen na vaše edge zařízení.
Úkol - ověření, že klasifikátor běží
-
Připojte se k IoT Edge zařízení:
-
Pokud používáte Raspberry Pi pro provoz IoT Edge, připojte se pomocí ssh buď z vašeho terminálu, nebo prostřednictvím vzdálené SSH relace ve VS Code.
-
Pokud provozujete IoT Edge v Linuxovém kontejneru na Windows, postupujte podle kroků v průvodci ověřením úspěšné konfigurace pro připojení k IoT Edge zařízení.
-
Pokud provozujete IoT Edge na virtuálním stroji, můžete se připojit pomocí SSH na stroj pomocí
adminUsername
apassword
, které jste nastavili při vytváření VM, a pomocí IP adresy nebo DNS názvu:ssh <adminUsername>@<IP address>
Nebo:
ssh <adminUsername>@<DNS Name>
Zadejte své heslo, když budete vyzváni.
-
-
Jakmile jste připojeni, spusťte následující příkaz pro získání seznamu modulů IoT Edge:
iotedge list
💁 Možná budete muset tento příkaz spustit s
sudo
.Uvidíte běžící moduly:
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
-
Zkontrolujte logy modulu Image classifier pomocí následujícího příkazu:
iotedge logs ImageClassifier
💁 Možná budete muset tento příkaz spustit s
sudo
.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)
Úkol - testování klasifikátoru obrázků
-
Můžete použít CURL pro testování klasifikátoru obrázků pomocí IP adresy nebo názvu hostitele počítače, na kterém běží IoT Edge agent. Najděte IP adresu:
- Pokud jste na stejném zařízení, na kterém běží IoT Edge, můžete použít
localhost
jako název hostitele. - Pokud používáte VM, můžete použít buď IP adresu, nebo DNS název VM.
- Jinak můžete získat IP adresu zařízení, na kterém běží IoT Edge:
- Na Windows 10 postupujte podle průvodce nalezením IP adresy.
- Na macOS postupujte podle průvodce nalezením IP adresy na Macu.
- Na Linuxu postupujte podle sekce o nalezení soukromé IP adresy v průvodci nalezením IP adresy v Linuxu.
- Pokud jste na stejném zařízení, na kterém běží IoT Edge, můžete použít
-
Kontejner můžete otestovat s lokálním souborem spuštěním následujícího příkazu curl:
curl --location \ --request POST 'http://<IP address or name>/image' \ --header 'Content-Type: image/png' \ --data-binary '@<file_Name>'
Nahraďte
<IP address or name>
IP adresou nebo názvem hostitele počítače, na kterém běží IoT Edge. Nahraďte<file_Name>
názvem souboru, který chcete otestovat.Ve výstupu uvidíte výsledky predikce:
{ "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": "" }
💁 Zde není třeba poskytovat klíč predikce, protože se nejedná o použití Azure zdroje. Místo toho by byla bezpečnost nakonfigurována na interní síti na základě interních bezpečnostních potřeb, spíše než spoléhání na veřejný endpoint a API klíč.
Použití vašeho IoT Edge zařízení
Nyní, když byl váš klasifikátor obrázků nasazen na IoT Edge zařízení, můžete jej používat ze svého IoT zařízení.
Úkol - použití vašeho IoT Edge zařízení
Projděte si relevantní průvodce pro klasifikaci obrázků pomocí IoT Edge klasifikátoru:
Přetrénování modelu
Jednou z nevýhod provozování klasifikátorů obrázků na IoT Edge je, že nejsou propojeny s vaším projektem Custom Vision. Pokud se podíváte na kartu Predictions v Custom Vision, neuvidíte obrázky, které byly klasifikovány pomocí klasifikátoru na Edge.
Toto je očekávané chování – obrázky nejsou odesílány do cloudu pro klasifikaci, takže nebudou dostupné v cloudu. Jednou z výhod používání IoT Edge je ochrana soukromí, která zajišťuje, že obrázky neopustí vaši síť, další výhodou je možnost pracovat offline, takže není nutné nahrávat obrázky, když zařízení nemá připojení k internetu. Nevýhodou je zlepšování vašeho modelu – museli byste implementovat jiný způsob ukládání obrázků, které lze ručně překlasifikovat pro zlepšení a přetrénování klasifikátoru obrázků.
✅ Přemýšlejte o způsobech, jak nahrávat obrázky pro přetrénování klasifikátoru.
🚀 Výzva
Provozování AI modelů na edge zařízeních může být rychlejší než v cloudu – síťový přenos je kratší. Mohou být ale také pomalejší, protože hardware, na kterém model běží, nemusí být tak výkonný jako cloud.
Proveďte měření a porovnejte, zda je volání vašeho edge zařízení rychlejší nebo pomalejší než volání do cloudu? Přemýšlejte o důvodech, které vysvětlují rozdíl, nebo jeho absenci. Prozkoumejte způsoby, jak spouštět AI modely rychleji na edge pomocí specializovaného hardwaru.
Kvíz po přednášce
Recenze a samostudium
- Přečtěte si více o kontejnerech na stránce o virtualizaci na úrovni OS na Wikipedii.
- Přečtěte si více o edge computingu, se zaměřením na to, jak může 5G pomoci rozšířit edge computing, v článku na NetworkWorld: Co je edge computing a proč na něm záleží?
- Zjistěte více o provozování AI služeb na IoT Edge sledováním epizody Learn Live na Microsoft Channel9: Naučte se používat Azure IoT Edge na předem připravené AI službě na Edge pro detekci jazyka
Úkol
Provozujte další služby na edge
Prohlášení:
Tento dokument byl přeložen pomocí služby pro automatický překlad Co-op Translator. Ačkoli se snažíme o přesnost, mějte na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádné nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu.