Så Azure Machine Learning fungerar: Arkitektur och koncept

Lär dig mer om arkitekturen och begreppen för Azure Machine Learning. Den här artikeln ger dig en högnivåförståelse av komponenterna och hur de fungerar tillsammans för att hjälpa dig att skapa, distribuera och underhålla maskininlärningsmodeller.

Arbetsytan

En arbetsyta för maskininlärning är den översta resursen för Azure Machine Learning.

Diagram: Azure Machine Learning arkitektur för en arbetsyta och dess komponenter

Arbetsytan är den centraliserade platsen för att:

En arbetsyta innehåller andra Azure-resurser som används av arbetsytan:

  • Azure Container Registry (ACR):Registrerar dockercontainrar som du använder under träningen och när du distribuerar en modell. För att minimera kostnaderna skapas ACR endast när distributionsavbildningar skapas.
  • Azure Storage konto:Används som standarddatalager för arbetsytan. Jupyter Notebooks som används med dina Azure Machine Learning-beräkningsinstanser lagras även här.
  • Azure Application Insights:Lagrar övervakningsinformation om dina modeller.
  • Azure Key Vault:Lagrar hemligheter som används av beräkningsmål och annan känslig information som krävs av arbetsytan.

Du kan dela en arbetsyta med andra.

Beräknar

Ett beräkningsmål är en dator eller uppsättning datorer som du använder för att köra ditt träningsskript eller vara värd för tjänstdistributionen. Du kan använda den lokala datorn eller en fjärrbearbetningsresurs som beräkningsmål. Med beräkningsmål kan du börja träna på den lokala datorn och sedan skala ut till molnet utan att ändra ditt träningsskript.

Azure Machine Learning två fullständigt hanterade molnbaserade virtuella datorer (VM) som är konfigurerade för maskininlärningsuppgifter:

  • Beräkningsinstans: En beräkningsinstans är en virtuell dator som innehåller flera verktyg och miljöer som är installerade för maskininlärning. Den primära användningen av en beräkningsinstans är för utvecklingsarbetsstationen. Du kan börja köra exempelanteckningsböcker utan att någon konfiguration krävs. En beräkningsinstans kan också användas som ett beräkningsmål för tränings- och härkomstjobb.

  • Beräkningskluster: Beräkningskluster är ett kluster med virtuella datorer med skalningsfunktioner för flera noder. Beräkningskluster passar bättre för beräkningsmål för stora jobb och produktion. Klustret skalas upp automatiskt när ett jobb skickas. Använd som ett träningsbearbetningsmål eller för dev/test-distribution.

Mer information om att träna beräkningsmål finns i Training compute targets (Träna beräkningsmål). Mer information om beräkningsmål för distribution finns i Distributionsmål.

Datauppsättningar och datalager

Azure Machine Learning Datauppsättningar gör det enklare att komma åt och arbeta med dina data. Genom att skapa en datauppsättning skapar du en referens till datakällans plats tillsammans med en kopia av dess metadata. Eftersom data finns kvar på den befintliga platsen medför du ingen extra lagringskostnad och riskerar inte integriteten hos dina datakällor.

Mer information finns i Skapa och registrera Azure Machine Learning datauppsättningar. Fler exempel med datauppsättningar finns i exempelanteckningsböckerna.

Datauppsättningar använder datalager för att på ett säkert sätt ansluta till dina Azure-lagringstjänster. Datalager lagrar anslutningsinformation utan att dina autentiseringsuppgifter och den ursprungliga datakällans integritet riskeras. De lagrar anslutningsinformation, till exempel ditt prenumerations-ID och tokenauktorisering i din Key Vault som är associerad med arbetsytan, så att du på ett säkert sätt kan komma åt lagringen utan att behöva hårdkoda dem i skriptet.

Miljöer

Arbetsyta > Miljöer

En miljö är inkapsling av miljön där träning eller bedömning av maskininlärningsmodellen sker. Miljön anger Python-paket, miljövariabler och programvaruinställningar runt dina tränings- och bedömningsskript.

Kodexempel finns i avsnittet "Hantera miljöer" i Så här använder du miljöer.

Experiment

Arbetsyta > Experiment

Ett experiment är en gruppering av många körningar från ett angivet skript. Den tillhör alltid en arbetsyta. När du skickar en körning anger du ett experimentnamn. Information för körningen lagras under experimentet. Om namnet inte finns när du skickar ett experiment skapas ett nytt experiment automatiskt.

Ett exempel på hur du använder ett experiment finns i Självstudie: Träna din första modell.

Körningar

Arbetsyta > Experiment > Kör

En körning är en enskild körning av ett träningsskript. Ett experiment innehåller vanligtvis flera körningar.

Azure Machine Learning registrerar alla körningar och lagrar följande information i experimentet:

  • Metadata om körningen (tidsstämpel, varaktighet och så vidare)
  • Mått som loggas av skriptet
  • Utdatafiler som automatiskt insamlas av experimentet eller som uttryckligen laddats upp av dig
  • En ögonblicksbild av katalogen som innehåller dina skript före körningen

Du skapar en körning när du skickar ett skript för att träna en modell. En körning kan ha noll eller flera underordnade körningar. Körningen på den översta nivån kan till exempel ha två underordnade körningar, där var och en kan ha en egen underordnad körning.

Köra konfigurationer

Arbetsyta > Experiment > Kör > Köra konfiguration

En körningskonfiguration definierar hur ett skript ska köras i ett angivet beräkningsmål. Du använder konfigurationen för att ange skriptet, beräkningsmålet och Azure ML-miljön som ska köras på, eventuella distribuerade jobbspecifika konfigurationer och vissa ytterligare egenskaper. Mer information om den fullständiga uppsättningen konfigurerbara alternativ för körningar finns i ScriptRunConfig.

En körningskonfiguration kan bevaras i en fil i katalogen som innehåller ditt träningsskript. Eller så kan den konstrueras som ett minnes in memory-objekt och användas för att skicka en körning.

Exempel på körningskonfigurationer finns i Konfigurera en träningskörning.

Ögonblicksbilder

Arbetsyta > Experiment > Kör > Ögonblicksbild

När du skickar en körning Azure Machine Learning den katalog som innehåller skriptet som en zip-fil och skickar den till beräkningsmålet. Zip-filen extraheras sedan och skriptet körs där. Azure Machine Learning även zip-filen som en ögonblicksbild som en del av körningsposten. Alla med åtkomst till arbetsytan kan bläddra i en körningspost och ladda ned ögonblicksbilden.

Loggning

Azure Machine Learning loggar automatiskt standardkörningsmått åt dig. Du kan dock också använda Python SDK för att logga godtyckliga mått.

Det finns flera sätt att visa dina loggar: övervaka körningsstatus i realtid eller visa resultat efter slutförande. Mer information finns i Övervaka och visa ML körningsloggar.

Anteckning

Du kan förhindra att onödiga filer tas med i ögonblicks bilden genom att göra en IGNORE-fil ( .gitignore eller .amlignore ) i katalogen. Lägg till de filer och kataloger som ska undantas i den här filen. Mer information om vilken syntax som ska användas i den här filen finns i syntax och mönster för .gitignore . .amlignoreFilen använder samma syntax. Om båda filerna finns .amlignore används filen och .gitignore filen är inte används.

Git-spårning och -integrering

När du startar en träningskörning där källkatalogen är en lokal Git-lagringsplats lagras information om lagringsplatsen i körningshistoriken. Detta fungerar med körningar som skickas med en skriptkörningskonfiguration ML en pipeline. Det fungerar även för körningar som skickas från SDK eller Machine Learning CLI.

Mer information finns i Git-integrering för Azure Machine Learning.

Arbetsflöde för träning

När du kör ett experiment för att träna en modell sker följande steg. Dessa illustreras i arbetsflödesdiagrammet för träning nedan:

  • Azure Machine Learning anropas med ögonblicksbild-ID:t för den kodögonblicksbild som sparades i föregående avsnitt.

  • Azure Machine Learning skapar ett körnings-ID (valfritt) och en Machine Learning-tjänsttoken, som senare används av beräkningsmål som Machine Learning Compute/VMs för att kommunicera med Machine Learning-tjänsten.

  • Du kan välja antingen ett hanterat beräkningsmål (till exempel Machine Learning Compute) eller ett ohanterat beräkningsmål (t.ex. virtuella datorer) för att köra träningsjobb. Här är dataflödena för båda scenarierna:

    • Virtuella datorer/HDInsight som nås av SSH-autentiseringsuppgifter i ett nyckelvalv i Microsoft-prenumerationen. Azure Machine Learning kör hanteringskod på beräkningsmålet som:
    1. Förbereder miljön. (Docker är ett alternativ för virtuella datorer och lokala datorer. Se följande steg för att Machine Learning Compute för att förstå hur körning av experiment på Docker-containrar fungerar.)
    2. Laddar ned koden.
    3. Uppsättningar miljövariabler och konfigurationer.
    4. Kör användarskript (kodögonblicksbild som nämns i föregående avsnitt).
    • Machine Learning Beräkning som nås via en arbetsyte-hanterad identitet. Eftersom Machine Learning Compute är ett hanterat beräkningsmål (det vill säga att det hanteras av Microsoft) körs det under din Microsoft-prenumeration.
    1. Docker-fjärrkonstruktionen startades om det behövs.
    2. Hanteringskoden skrivs till användarens Azure Files resurs.
    3. Containern startas med ett inledande kommando. Det vill säga hanteringskoden enligt beskrivningen i föregående steg.
  • När körningen är klar kan du köra frågor mot körningar och mått. I flödesdiagrammet nedan sker det här steget när träningsbearbetningsmålet skriver tillbaka körningsmåtten till Azure Machine Learning från lagringen i Cosmos DB databasen. Klienter kan anropa Azure Machine Learning. Machine Learning hämtar i sin tur mått från Cosmos DB databasen och returnerar dem tillbaka till klienten.

Arbetsflöde för träning

Modeller

I sin enklaste form är en modell ett kodstycke som tar indata och genererar utdata. Att skapa en maskininlärningsmodell innebär att välja en algoritm, ge den data och justera hyperparametrar. Träning är en iterativ process som skapar en tränad modell som kapslar in det modellen lärt sig under träningsprocessen.

Du kan ta med en modell som har tränats utanför Azure Machine Learning. Eller så kan du träna en modell genom att skicka en körning av ett experiment till ett beräkningsmål i Azure Machine Learning. När du har en modell registrerar du modellen på arbetsytan.

Azure Machine Learning är ramverksoberoende. När du skapar en modell kan du använda alla populära maskininlärningsramverk som Scikit-learn, XGBoost, PyTorch, TensorFlow och Chainer.

Ett exempel på hur du tränar en modell med Scikit-learn finns i Tutorial: Train an image classification model with Azure Machine Learning.

Modellregister

Arbetsyta > Modeller

Med modellregistret kan du hålla reda på alla modeller i din Azure Machine Learning arbetsyta.

Modeller identifieras med namn och version. Varje gång du registrerar en modell med samma namn som en befintlig förutsätter registret att det är en ny version. Versionen ökas och den nya modellen registreras med samma namn.

När du registrerar modellen kan du ange ytterligare metadatataggar och sedan använda taggarna när du söker efter modeller.

Tips

En registrerad modell är en logisk container för en eller flera filer som utgör din modell. Om du till exempel har en modell som lagras i flera filer kan du registrera dem som en enda modell i din Azure Machine Learning arbetsyta. Efter registreringen kan du sedan ladda ned eller distribuera den registrerade modellen och ta emot alla filer som har registrerats.

Du kan inte ta bort en registrerad modell som används av en aktiv distribution.

Ett exempel på hur du registrerar en modell finns i Träna en bildklassificeringsmodell med Azure Machine Learning.

Distribution

Du distribuerar en registrerad modell som en tjänstslutpunkt. Du behöver följande komponenter:

  • Miljö. Den här miljön kapslar in de beroenden som krävs för att köra modellen för slutsatsledning.
  • Bedömningskod. Det här skriptet accepterar begäranden, poängar begäranden med hjälp av modellen och returnerar resultatet.
  • Slutsatsledningskonfiguration. Inferenskonfigurationen anger miljön, inmatningsskriptet och andra komponenter som behövs för att köra modellen som en tjänst.

Mer information om dessa komponenter finns i Distribuera modeller med Azure Machine Learning.

Slutpunkter

Arbetsyta > Slutpunkter

En slutpunkt är en instans av din modell i en webbtjänst som kan finnas i molnet.

Webbtjänstslutpunkt

När du distribuerar en modell som en webbtjänst kan slutpunkten distribueras på Azure Container Instances, Azure Kubernetes Service eller FPGA. Du skapar tjänsten från din modell, ditt skript och tillhörande filer. Dessa placeras i en bascontaineravbildning som innehåller modellens körningsmiljö. Avbildningen har en belastningsutjämnad HTTP-slutpunkt som tar emot bedömningsbegäranden som skickas till webbtjänsten.

Du kan aktivera program Insights telemetri eller modelltelemetri för att övervaka din webbtjänst. Telemetridata är endast tillgängliga för dig. Den lagras i instanserna Insights program och lagringskonto. Om du har aktiverat automatisk skalning skalar Azure automatiskt distributionen.

Följande diagram visar slutsatsslutpunktsarbetsflödet för en modell som distribuerats som en webbtjänstslutpunkt:

Här är information:

  • Användaren registrerar en modell med hjälp av en klient som Azure Machine Learning SDK.
  • Användaren skapar en bild med hjälp av en modell, en poängfil och andra modellberoenden.
  • Docker-avbildningen skapas och lagras i Azure Container Registry.
  • Webbtjänsten distribueras till beräkningsmålet (Container Instances/AKS) med hjälp av avbildningen som skapades i föregående steg.
  • Information om bedömningsbegäran lagras Insights program som finns i användarens prenumeration.
  • Telemetri push-skickas också till Microsoft/Azure-prenumerationen.

Slutsatsledningsarbetsflöde

Ett exempel på hur du distribuerar en modell som en webbtjänst finns i Distribuera en bildklassificeringsmodell i Azure Container Instances.

Realtidsslutpunkter

När du distribuerar en tränad modell i designern kan du distribuera modellen som en realtidsslutpunkt. En realtidsslutpunkt tar vanligtvis emot en enskild begäran via REST-slutpunkten och returnerar en förutsägelse i realtid. Detta skiljer sig från batchbearbetning, som bearbetar flera värden samtidigt och sparar resultatet efter slutförande till ett datalager.

Pipelineslutpunkter

Med pipelineslutpunkter kan du anropa ML pipelines programmatiskt via en REST-slutpunkt. Med pipelineslutpunkter kan du automatisera dina pipelinearbetsflöden.

En pipelineslutpunkt är en samling publicerade pipelines. Med den här logiska organisationen kan du hantera och anropa flera pipelines med samma slutpunkt. Varje publicerad pipeline i en pipelineslutpunkt versionsdelade. Du kan välja en standardpipeline för slutpunkten eller ange en version i REST-anropet.

Automation

Azure Machine Learning CLI

Den Azure Machine Learning CLI är ett tillägg till Azure CLI, ett plattformsoberoende kommandoradsgränssnitt för Azure-plattformen. Det här tillägget innehåller kommandon för att automatisera dina maskininlärningsaktiviteter.

ML pipelines

Du använder pipelines för maskininlärning för att skapa och hantera arbetsflöden som sammanfogar maskininlärningsfaser. En pipeline kan till exempel innehålla förberedelse av data, modellträning, modelldistribution och inferens-/bedömningsfaser. Varje fas kan omfatta flera steg som var och en kan köras obevakad i olika beräkningsmål.

Pipelinesteg kan återanvändas och kan köras utan att köra föregående steg igen om utdata från dessa steg inte har ändrats. Du kan till exempel träna om en modell utan att köra kostsamma steg för förberedelse av data igen om data inte har ändrats. Pipelines gör det också möjligt för dataexperter att samarbeta när de arbetar med separata områden i ett arbetsflöde för maskininlärning.

Övervakning och loggning

Azure Machine Learning innehåller följande övervaknings- och loggningsfunktioner:

Interagera med din arbetsyta

Studio

Azure Machine Learning Studio ger en webbvy över alla artefakter på din arbetsyta. Du kan visa resultat och information om dina datauppsättningar, experiment, pipelines, modeller och slutpunkter. Du kan också hantera beräkningsresurser och datalager i studio.

I Studio får du även åtkomst till de interaktiva verktyg som ingår i Azure Machine Learning:

Programmeringsverktyg

Viktigt

Verktyg som är markerade (förhandsversion) nedan är för närvarande i offentlig förhandsversion. Förhandsversionen tillhandahålls utan serviceavtal och rekommenderas inte för produktionsarbetsbelastningar. Vissa funktioner kanske inte stöds eller kan vara begränsade. Mer information finns i Kompletterande villkor för användning av Microsoft Azure-förhandsversioner.

Nästa steg

Kom igång med Azure Machine Learning här: