Självstudie: En lösning från slutpunkt till slutpunkt med Hjälp av Azure Mašinsko učenje och IoT Edge
Gäller för: IoT Edge 1.1
Viktigt!
IoT Edge 1.1 slutdatum för support var den 13 december 2022. I informationen om Microsoft-produktens livscykel hittar du fler uppgifter om vilken support som gäller för denna produkt, tjänst, teknik eller detta API. Mer information om hur du uppdaterar till den senaste versionen av IoT Edge finns i Uppdatera IoT Edge.
Ofta vill IoT-program dra nytta av det intelligenta molnet och den intelligenta gränsen. I den här självstudien går vi igenom hur du tränar 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.
Kommentar
Begreppen i den här uppsättningen självstudier gäller för alla versioner av IoT Edge, men exempelenheten 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. Även om vi berör många aspekter av ett allmänt arbetsflöde för maskininlärning är den här självstudien inte avsedd som en djupgående introduktion till maskininlärning. Till exempel 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 livskraftig modell för IoT-databearbetning.
I det här avsnittet i självstudien beskrivs:
- Förutsättningarna för att slutföra de efterföljande delarna av självstudien.
- Målgruppen för självstudiekursen.
- Användningsfallet som självstudiekursen simulerar.
- Den övergripande processen som självstudien följer för att uppfylla användningsfallet.
Om du inte har en Azure-prenumeration skapar du ett kostnadsfritt Azure-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 kanske du kan komma igång med ett kostnadsfritt Azure-konto.
Du behöver också en dator med PowerShell installerad 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 huvudklientdel för förberedelse av data och maskininlärningsexperiment. Att köra Python-kod i en notebook-fil på en delmängd av exempeldata är ett bra sätt att få snabb iterativ och interaktiv vändning under förberedelse av data. Jupyter Notebooks kan också användas för att förbereda skript för att köras i stor skala i en beräkningsserverdel.
Azure Mašinsko učenje som en serverdel för maskininlärning i stor skala och för maskininlärningsbildgenerering. Vi kör Azure Mašinsko učenje-serverdelen med skript som förberetts och testats i Jupyter Notebooks.
Azure IoT Edge för program utanför molnet för en maskininlärningsbild
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. Att distribuera maskininlärning vid gränsen kräver kunskap om hur du ansluter en mängd olika tekniker. I den här självstudien beskrivs därför ett helt scenario från slutpunkt till slutpunkt för att demonstrera ett sätt att förena dessa tekniker för en IoT-lösning. I en verklig miljö kan dessa uppgifter distribueras 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 medarbetare med olika roller för att följa självstudien tillsammans, samla dina kunskaper och lära dig hur saker och ting passar ihop som ett team.
I båda fallen anger varje artikel i den här självstudien användarens roll för att hjälpa till att orientera läsaren eller läsaren. 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 prognostik och hälsohantering (PHM08) 2008. Målet är att förutsäga återstående livslängd (RUL) för en uppsättning turbofanflygplansmotorer. Dessa data genererades med C-MAPSS, den kommersiella versionen av PROGRAMVARAN MAPSS (Modular Aero-Propulsion System Simulation). Den här programvaran tillhandahåller en flexibel turbofanmotorsimuleringsmiljö för att enkelt simulera parametrarna hälsa, kontroll och motor.
De data som används i den här självstudien hämtas från datauppsättningen för turbofanmotorns nedbrytningssimulering.
Från readme-filen:
Experimentellt scenario
Datauppsättningar består av flera tidsserier med flera variat. Varje datauppsättning är ytterligare indelad i underuppsättningar för träning och testning. Varje tidsserie kommer från en annan motor, dvs. data kan anses komma från en motorflotta av samma typ. Varje motor börjar med olika grader av initial förslitning och tillverkningsvariation, vilket är okänt för användaren. Detta slitage och variation anses vara normalt, dvs. det anses inte vara ett feltillstånd. Det finns tre driftsinställningar som har en betydande effekt på motorns prestanda. De här inställningarna ingår också i data. Data är förorenade med sensorbrus.
Motorn körs 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 storlek tills systemet misslyckas. I testuppsättningen slutar tidsserien en tid före systemfel. Målet med tävlingen är att förutsäga antalet återstående driftcykler före fel i testuppsättningen, dvs. Gav också en vektor med RUL-värden (True Remaining Useful Life) för testdata.
Eftersom data publicerades för en tävling har flera metoder för att härleda maskininlärningsmodeller publicerats separat. Vi har upptäckt att det är bra att studera exempel för att förstå processen och resonemanget i skapandet av en specifik maskininlärningsmodell. Se till exempel:
Förutsägelsemodell för flygplansmotorfel av GitHub-användaren jancervenka.
Turbofanmotorförsämring av GitHub-användaren hankroark.
Process
Bilden nedan illustrerar de grova steg 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 för 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 turbofanmotorer, 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 datarensning, omformatering av data eller förbearbetning för att mata in ytterligare information som maskininlärning kan vara nyckeln till.
För våra maskindata för flygplansmotorn innebär dataförberedelser att beräkna explicita tid-till-fel-tider för varje datapunkt i exemplet baserat på de faktiska observationerna 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örväntade utfallet som beräknas av modellen med det verkliga resultatet som observerats på en uppsättning motorer för testning. I Azure Mašinsko učenje kan vi hantera de olika iterationerna 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å över till distribution. Det innebär att omsluta modellen till 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 utförs inte när modellen har distribuerats. I många fall vill vi fortsätta att 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. 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-enhet så att den fungerar 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.