Självstudie: En lösning från Azure Machine Learning till IoT Edge
Gäller för:
IoT Edge 1,1
Ofta vill IoT-program dra nytta av det intelligenta molnet och det intelligenta gränsmolnet. I den här självstudien går vi igenom träning av en maskininlärningsmodell med data som samlas in från IoT-enheter i molnet, distribuerar modellen till IoT Edge och underhåller och förfinar modellen regelbundet.
Anteckning
Begreppen i den här uppsättningen självstudier gäller för alla versioner av IoT Edge, men den exempelenhet som du skapar för att testa scenariot kör IoT Edge version 1.1.
Det primära målet med den här självstudien är att introducera bearbetning av IoT-data med maskininlärning, särskilt på gränsen. Vi berör många aspekter av ett allmänt arbetsflöde för maskininlärning, men den här självstudien är inte avsedd som en djupgående introduktion till maskininlärning. I det här fallet försöker vi inte skapa en mycket optimerad modell för användningsfallet – vi gör bara tillräckligt för att illustrera processen med att skapa och använda en fungerande modell för IoT-databearbetning.
I det här avsnittet av självstudien beskrivs:
- Förutsättningar för att slutföra de efterföljande delarna av självstudien.
- Målgruppen för självstudien.
- Användningsfallet som självstudien simulerar.
- Den övergripande processen som självstudien följer för att uppfylla användningsfallet.
Om du inte har en Azure-prenumerationkan du skapa ett kostnads fritt konto innan du börjar.
Förutsättningar
För att slutföra självstudien behöver du åtkomst till en Azure-prenumeration där du har behörighet att skapa resurser. Flera av de tjänster som används i den här självstudien medför Azure-avgifter. Om du inte redan har en Azure-prenumeration kan du komma igång med ett kostnadsfritt Azure-konto.
Du behöver också en dator med PowerShell installerat där du kan köra skript för att konfigurera en virtuell Azure-dator som utvecklingsdator.
I det här dokumentet använder vi följande uppsättning verktyg:
En Azure IoT-hubb för datainsamling
Azure Notebooks som vår huvudsakliga frontend för förberedelse av data och machine learning-experimentering. Att köra Python-kod i en notebook-kod på en delmängd av exempeldata är ett bra sätt att få en snabb iterativ och interaktiv drift under förberedelsen av data. Jupyter Notebooks kan också användas för att förbereda skript som ska köras i stor skala i en beräknings-server.
Azure Machine Learning som en backend för maskininlärning i stor skala och för generering av maskininlärningsavbildningar. Vi driver Azure Machine Learning med hjälp av skript som förberetts och testats i Jupyter Notebooks.
Azure IoT Edge för program utanför molnet för en maskininlärningsavbildning
Naturligtvis finns det andra alternativ tillgängliga. I vissa scenarier kan till exempel IoT Central användas som ett alternativ utan kod för att samla in inledande träningsdata från IoT-enheter.
Målgrupp och roller
Den här uppsättningen artiklar är avsedd för utvecklare utan tidigare erfarenhet av IoT-utveckling eller maskininlärning. Distribution av maskininlärning vid gränsen kräver kunskaper om hur du ansluter en mängd olika tekniker. I den här självstudien går vi därför igenom ett helt scenario från punkt till slut för att demonstrera ett sätt att koppla ihop dessa tekniker för en IoT-lösning. I en verklig miljö kan dessa uppgifter fördelas mellan flera personer med olika specialiseringar. Utvecklare skulle till exempel fokusera på antingen enhets- eller molnkod, medan dataexperter utformade analysmodellerna. För att en enskild utvecklare ska kunna slutföra den här självstudien har vi gett kompletterande vägledning med insikter och länkar till mer information som vi hoppas räcker för att förstå vad som görs samt varför.
Du kan också samarbeta med kollegor med olika roller för att följa självstudien tillsammans, ta med dig fullständig expertis och lära dig hur saker och ting fungerar tillsammans som ett team.
I båda fallen anger varje artikel i den här självstudien användarens roll för att ge läsaren en orientering. Dessa roller omfattar:
- Molnutveckling (inklusive en molnutvecklare som arbetar i en DevOps-kapacitet)
- Datanalys
Användningsfall: Förutsägande underhåll
Vi baserade det här scenariot på ett användningsfall som presenterades vid konferensen om Prognostics and Health Management (PHM08) 2008. Målet är att förutsäga återstående användbart liv (RUL) för en uppsättning turbofan-flygplansmotorer. Dessa data genererades med C-MAPSS, den kommersiella versionen av PROGRAMVARAN MAPSS (Modular Aero-Propulsion System Simulation). Den här programvaran ger en flexibel turbofan-motorsimuleringsmiljö för att enkelt simulera parametrarna för hälsa, kontroll och motor.
De data som används i den här självstudien kommer från datauppsättningen för turbofan-motorförsämringssimulering.
Från readme-filen:
Experimentellt scenario
Datauppsättningar består av flera multivarierade tidsserier. Varje datauppsättning är ytterligare indelad i delmängder för träning och testning. Varje tidsserie kommer från en annan motor , dvs. data kan anses komma från en vagnpark med motorer av samma typ. Varje motor börjar med olika grader av inledande förslitning och tillverkningsvariation som är okänd för användaren. Det här förslitningen anses vara normalt, det vill säga att det inte anses vara ett feltillstånd. Det finns tre driftsinställningar som har en betydande inverkan på motorns prestanda. De här inställningarna ingår också i data. Data kontamineras med sensorbrus.
Motorn fungerar normalt i början av varje tidsserie och utvecklar ett fel någon gång under serien. I träningsuppsättningen växer felet i omfattning tills systemfelet. I testuppsättningen avslutas tidsserien en stund innan systemfelet. Målet med konkurrenterna är att förutsäga antalet återstående driftscykler före fel i testuppsättningen, dvs. antalet driftscykler efter den senaste cykeln som motorn kommer att fortsätta att köra. En vektor med sanna värden för återstående livslängd (RUL) för testdata har också angetts.
Eftersom data har publicerats för en konkurrens har flera metoder för att härleda maskininlärningsmodeller publicerats oberoende av varandra. Vi upptäckte att det är användbart att studera exempel för att förstå processen och resonemanget som ingår i skapandet av en specifik maskininlärningsmodell. Se till exempel:
Förutsägelsemodell för flygplansmotorfel av GitHub jancervenka.
Turbofan-motorförsämring GitHub användaren hanark.
Process
Bilden nedan visar de ungefärliga stegen som vi följer i den här självstudien:

Samla in träningsdata: Processen börjar med att samla in träningsdata. I vissa fall har data redan samlats in och är tillgängliga i en databas eller i form av datafiler. I andra fall, särskilt i IoT-scenarier, måste data samlas in från IoT-enheter och sensorer och lagras i molnet.
Vi antar att du inte har någon samling turbofan-motorer, så projektfilerna innehåller en enkel enhetssimulator som skickar NASA-enhetsdata till molnet.
Förbered data. I de flesta fall kräver rådata som samlas in från enheter och sensorer förberedelser för maskininlärning. Det här steget kan omfatta rensning av data, omformatering av data eller förbearbetning för att mata in ytterligare information som maskininlärning kan stänga av.
För våra flygplansmotormaskindata omfattar dataförberedelse att beräkna explicita tid-till-fel-tider för varje datapunkt i urvalet baserat på faktiska observationer av data. Med den här informationen kan maskininlärningsalgoritmen hitta korrelationer mellan faktiska sensordatamönster och motorns förväntade återstående livslängd. Det här steget är mycket domänspecifikt.
Skapa en maskininlärningsmodell. Baserat på förberedda data kan vi nu experimentera med olika maskininlärningsalgoritmer och parameteriseringar för att träna modeller och jämföra resultaten med varandra.
I det här fallet jämför vi det förutsagda utfallet som beräknats av modellen med det verkliga utfall som observerats på en uppsättning motorer. I Azure Machine Learning kan vi hantera de olika iterationer av modeller som vi skapar i ett modellregister.
Distribuera modellen. När vi har en modell som uppfyller våra framgångskriterier kan vi gå vidare till distributionen. Det innebär att omsluta modellen i en webbtjänstapp som kan matas med data med hjälp av REST-anrop och returnera analysresultat. Webbtjänstappen paketeras sedan i en dockercontainer, som i sin tur kan distribueras antingen i molnet eller som en IoT Edge modul. I det här exemplet fokuserar vi på distribution till IoT Edge.
Underhålla och förfina modellen. Vårt arbete är inte klart när modellen har distribuerats. I många fall vill vi fortsätta samla in data och regelbundet ladda upp dessa data till molnet. Vi kan sedan använda dessa data för att träna om och förfina vår modell, som vi sedan kan distribuera om till IoT Edge.
Rensa resurser
Den här självstudien är en del av en uppsättning där varje artikel bygger på det arbete som utförts i föregående artikel. Vänta med att rensa alla resurser tills du har slutfört den sista självstudien.
Nästa steg
Den här självstudien är indelad i följande avsnitt:
- Konfigurera utvecklingsdatorn och Azure-tjänsterna.
- Generera träningsdata för maskininlärningsmodulen.
- Träna och distribuera maskininlärningsmodulen.
- Konfigurera en IoT Edge att fungera som en transparent gateway.
- Skapa och distribuera IoT Edge moduler.
- Skicka data till din IoT Edge enhet.
Fortsätt till nästa artikel för att konfigurera en utvecklingsdator och etablera Azure-resurser.