Så här fungerar Azure Mašinsko učenje: Arkitektur och begrepp (v1)
GÄLLER FÖR:Azure CLI ml-tillägget v1Python SDK azureml v1
Den här artikeln gäller för den första versionen (v1) av Azure Mašinsko učenje CLI & SDK. Version två (v2) finns i Så här fungerar Azure Mašinsko učenje (v2).
Lär dig mer om arkitekturen och begreppen för Azure Mašinsko učenje. Den här artikeln ger dig en övergripande förståelse av komponenterna och hur de fungerar tillsammans för att hjälpa dig att skapa, distribuera och underhålla maskininlärningsmodeller.
Arbetsyta
En Machine Learning-arbetsyta är en toppnivåresurs för Azure Machine Learning.
Arbetsytan är den centraliserade platsen för att:
- Hantera resurser som du använder för träning och distribution av modeller, till exempel beräkningar
- Lagra tillgångar som du skapar när du använder Azure Mašinsko učenje, inklusive:
En arbetsyta innehåller andra Azure-resurser som används av arbetsytan:
- Azure Container Registry (ACR): Registrerar docker-containrar som du använder under träning och när du distribuerar en modell. För att minimera kostnaderna skapas ACR endast när distributionsbilder skapas.
- Azure Storage-konto: Används som standarddatalager för arbetsytan. Jupyter-notebook-filer som används med dina Azure-Mašinsko učenje 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 behö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 träningsskriptet eller vara värd för tjänstdistributionen. Du kan använda din lokala dator eller en fjärrberäkningsresurs som beräkningsmål. Med beräkningsmål kan du börja träna på din lokala dator och sedan skala ut till molnet utan att ändra träningsskriptet.
Azure Mašinsko učenje introducerar 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 din utvecklingsarbetsstation. Du kan börja köra exempelanteckningsböcker utan att någon installation krävs. En beräkningsinstans kan också användas som beräkningsmål för tränings- och slutsatsdragningsjobb.
Beräkningskluster: Beräkningskluster är ett kluster med virtuella datorer med skalningsfunktioner med 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 träningsberäkningsmål eller för dev/test-distribution.
Mer information om träningsberäkningsmål finns i Träningsberäkningsmål. Mer information om distributionsberäkningsmål finns i Distributionsmål.
Datauppsättningar och datalager
Azure Mašinsko učenje 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 för dina datakällor.
Mer information finns i Skapa och registrera Azure Mašinsko učenje 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 Storage-tjänster. Datalager lagrar anslutningsinformation utan att riskera dina autentiseringsuppgifter och integriteten för den ursprungliga datakällan. De lagrar anslutningsinformation, till exempel ditt prenumerations-ID och tokenauktorisering i ditt Key Vault som är associerat 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
En miljö är inkapslingen av miljön där träning eller bedömning av din maskininlärningsmodell sker. Miljön anger Python-paket, miljövariabler och programvaruinställningar kring dina tränings- och bedömningsskript.
Kodexempel finns i avsnittet "Hantera miljöer" i Så här använder du miljöer.
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 automatiskt ett nytt experiment.
Ett exempel på hur du använder ett experiment finns i Självstudie: Träna din första modell.
Körningar
Körning av arbetsyteexperiment>>
En körning är en enda körning av ett träningsskript. Ett experiment innehåller vanligtvis flera körningar.
Azure Mašinsko učenje 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 samlas in automatiskt av experimentet eller som uttryckligen laddas 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 fler underordnade körningar. Till exempel kan körningen på den översta nivån ha två underordnade körningar, som var och en kan ha en egen underordnad körning.
Köra konfigurationer
Kör körningskonfiguration för arbetsyteexperiment>>>
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 Mašinsko učenje miljö som ska köras, eventuella distribuerade jobbspecifika konfigurationer och några ytterligare egenskaper. Mer information om den fullständiga uppsättningen konfigurerbara alternativ för körningar finns i ScriptRunConfig.
En körningskonfiguration kan sparas i en fil i katalogen som innehåller ditt träningsskript. Eller så kan den konstrueras som ett minnesinternt objekt och användas för att skicka en körning.
Exempel på körningskonfigurationer finns i Konfigurera en träningskörning.
Ögonblicksbilder
Körningsögonblicksbild för arbetsyteexperiment>>>
När du skickar en körning komprimerar Azure Mašinsko učenje katalogen 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 Mašinsko učenje lagrar även zip-filen som en ögonblicksbild som en del av körningsposten. Alla som har åtkomst till arbetsytan kan bläddra i en körningspost och ladda ned ögonblicksbilden.
Loggning
Azure Mašinsko učenje 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 loggarna: övervaka körningsstatus i realtid eller visa resultat efter slutförande. Mer information finns i Övervaka och visa ML-körningsloggar.
Kommentar
Om du vill förhindra att onödiga filer tas med i ögonblicksbilden skapar du en ignorerande fil (.gitignore
eller .amlignore
) i katalogen. Lägg till de filer och kataloger som ska undantas i den här filen. Mer information om syntaxen som ska användas i den här filen finns i syntax och mönster för .gitignore
. Filen .amlignore
använder samma syntax. Om båda filerna finns .amlignore
används filen och .gitignore
filen används inte.
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 hjälp av en skriptkörningskonfiguration eller ML-pipeline. Det fungerar också för körningar som skickas från SDK eller Mašinsko učenje CLI.
Mer information finns i Git-integrering för Azure Mašinsko učenje.
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 Mašinsko učenje anropas med ögonblicksbilds-ID:t för den kodögonblicksbild som sparades i föregående avsnitt.
Azure Mašinsko učenje skapar ett körnings-ID (valfritt) och en Mašinsko učenje tjänsttoken, som senare används av beräkningsmål som Mašinsko učenje Compute/VMs för att kommunicera med Mašinsko učenje-tjänsten.
Du kan välja antingen ett hanterat beräkningsmål (till exempel Mašinsko učenje Compute) eller ett ohanterat beräkningsmål (till exempel 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 med SSH-autentiseringsuppgifter i ett nyckelvalv i Microsoft-prenumerationen. Azure Mašinsko učenje kör hanteringskod på beräkningsmålet som:
- Förbereder miljön. (Docker är ett alternativ för virtuella datorer och lokala datorer. Se följande steg för Mašinsko učenje Compute för att förstå hur det fungerar att köra experiment på Docker-containrar.)
- Laddar ned koden.
- Konfigurerar miljövariabler och konfigurationer.
- Kör användarskript (den kodögonblicksbild som nämns i föregående avsnitt).
- Mašinsko učenje Compute, som nås via en arbetsytehanterad identitet. Eftersom Mašinsko učenje Compute är ett hanterat beräkningsmål (dvs. hanteras det av Microsoft) körs det under din Microsoft-prenumeration.
- Fjärrbygget av Docker startas om det behövs.
- Hanteringskoden skrivs till användarens Azure Files-resurs.
- Containern startas med ett inledande kommando. Det vill: hanteringskod 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 inträffar det här steget när träningsberäkningsmålet skriver tillbaka körningsmåtten till Azure Mašinsko učenje från lagringen i Azure Cosmos DB-databasen. Klienter kan anropa Azure Mašinsko učenje. Mašinsko učenje hämtar i sin tur mått från Azure Cosmos DB-databasen och returnerar dem tillbaka till klienten.
Modeller
Som enklast är en modell en kod som tar indata och genererar utdata. Att skapa en maskininlärningsmodell innebär att välja en algoritm, tillhandahålla data och justera hyperparametrar. Träning är en iterativ process som skapar en tränad modell som kapslar in det som modellen lärde sig under träningsprocessen.
Du kan ta med en modell som har tränats utanför Azure Mašinsko učenje. Eller så kan du träna en modell genom att skicka en körning av ett experiment till ett beräkningsmål i Azure Mašinsko učenje. När du har en modell registrerar du modellen på arbetsytan.
Azure Mašinsko učenje är ramverksagnostisk. När du skapar en modell kan du använda valfritt populärt maskininlärningsramverk, till exempel Scikit-learn, XGBoost, PyTorch, TensorFlow och Chainer.
Ett exempel på hur du tränar en modell med Scikit-learn finns i Självstudie: Träna en bildklassificeringsmodell med Azure Mašinsko učenje.
Modellregister
Med modellregistret kan du hålla reda på alla modeller på din Azure Mašinsko učenje-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 under samma namn.
När du registrerar modellen kan du ange ytterligare metadatataggar och sedan använda taggarna när du söker efter modeller.
Dricks
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-Mašinsko učenje 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 Mašinsko učenje.
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 din modell för slutsatsdragning.
- Poängkod. Det här skriptet accepterar begäranden, poängsätter begäranden med hjälp av modellen och returnerar resultatet.
- Inferenskonfiguration. 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 Mašinsko učenje.
Slutpunkter
En slutpunkt är en instansiering av din modell till en webbtjänst som kan hanteras i molnet.
Webbtjänstslutpunkt
När du distribuerar en modell som en webbtjänst kan slutpunkten distribueras på Azure Container Instances eller Azure Kubernetes Service. Du skapar tjänsten från din modell, skript och associerade filer. Dessa placeras i en bascontaineravbildning som innehåller körningsmiljön för modellen. Avbildningen har en belastningsbalanserad HTTP-slutpunkt som tar emot bedömningsbegäranden som skickas till webbtjänsten.
Du kan aktivera Application Insights-telemetri eller modelltelemetri för att övervaka webbtjänsten. Telemetridata är endast tillgängliga för dig. Den lagras i dina Application Insights- och lagringskontoinstanser. Om du har aktiverat automatisk skalning skalar Azure automatiskt distributionen.
Följande diagram visar arbetsflödet för slutsatsdragning för en modell som distribueras som en webbtjänstslutpunkt:
Här följer detaljerna:
- Användaren registrerar en modell med hjälp av en klient som Azure Mašinsko učenje 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 avbildningen som skapades i föregående steg.
- Information om bedömningsbegäran lagras i Application Insights, som finns i användarens prenumeration.
- Telemetri skickas också till Microsoft Azure-prenumerationen.
Ett exempel på hur du distribuerar en modell som en webbtjänst finns i Självstudie: Träna och distribuera en modell.
Realtidsslutpunkter
När du distribuerar en tränad modell i designern kan du distribuera modellen som en realtidsslutpunkt. En realtidsslutpunkt tar ofta emot en enskild begäran via REST-slutpunkten och returnerar en förutsägelse i realtid. Detta står i kontrast till 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 är versionshanterad. Du kan välja en standardpipeline för slutpunkten eller ange en version i REST-anropet.
Automation
Azure Machine Learning CLI
Azure Mašinsko učenje CLI v1 ä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 maskininlärningspipelines för att skapa och hantera arbetsflöden som sammanfogar maskininlärningsfaser. En pipeline kan till exempel omfatta förberedelse av data, modellträning, modelldistribution och slutsatsdragnings-/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 om kostsamma förberedelsesteg för data 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 maskininlärningsarbetsflöde.
Övervakning och loggning
Azure Mašinsko učenje tillhandahåller följande funktioner för övervakning och loggning:
- För dataforskare kan du övervaka dina experiment och logga information från dina träningskörningar. Mer information finns i följande artiklar:
- För administratörer kan du övervaka information om arbetsytan, relaterade Azure-resurser och händelser som att skapa och ta bort resurser med hjälp av Azure Monitor. Mer information finns i Övervaka Azure Mašinsko učenje.
- För DevOps eller MLOps kan du övervaka information som genereras av modeller som distribueras som webbtjänster för att identifiera problem med distributionerna och samla in data som skickas till tjänsten. Mer information finns i Samla in modelldata och Övervaka med Application Insights.
Interagera med din arbetsyta
Studio
Azure Mašinsko učenje Studio innehåller 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 studion.
I studion får du också åtkomst till de interaktiva verktyg som ingår i Azure Mašinsko učenje:
- Azure Mašinsko učenje designer för att utföra arbetsflödessteg utan att skriva kod
- Webbupplevelse för automatiserad maskininlärning
- Azure Mašinsko učenje notebook-filer för att skriva och köra din egen kod i integrerade Jupyter Notebook-servrar.
- Dataetikettprojekt för att skapa, hantera och övervaka projekt för etikettering av bilder eller text.
Programmeringsverktyg
Viktigt!
Verktyg som är markerade (förhandsversion) nedan är för närvarande i offentlig förhandsversion. Förhandsversionen tillhandahålls utan ett 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.
- Interagera med tjänsten i alla Python-miljöer med Azure Mašinsko učenje SDK för Python.
- Använd Azure Mašinsko učenje designer för att utföra arbetsflödesstegen utan att skriva kod.
- Använd Azure Mašinsko učenje CLI för automatisering.
Nästa steg
Information om hur du kommer igång med Azure Mašinsko učenje finns i: