Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Azure Machine Learning-miljöer kapslar in miljön där din maskininlärningsträning eller slutsatsdragning sker. De anger Python-paket och programvaruinställningar för dina tränings- och bedömningsskript. Machine Learning-arbetsytan hanterar och versioner dessa miljöer, vilket möjliggör reproducerbara, granskningsbara och portabla arbetsflöden för maskininlärning mellan olika beräkningsmål. Använd ett Environment objekt för att:
- Utveckla ditt träningsskript.
- Återanvänd samma miljö på Azure Machine Learning Compute för modellträning i stor skala.
- Distribuera din modell med samma miljö.
- Gå tillbaka till miljön där en befintlig modell har tränats.
Följande diagram visar hur du kan använda ett enda Environment objekt i både din jobbkonfiguration (för träning) och din slutsatsdragning och distributionskonfiguration (för webbtjänstdistributioner).
Miljön, beräkningsmålet och träningsskriptet utgör tillsammans jobbkonfigurationen: den fullständiga specifikationen för ett träningsjobb.
Miljötyper
Miljöer delas in i tre kategorier: kuraterade, användarhanterade och systemhanterade.
Utvalda miljöer tillhandahålls av Azure Machine Learning och är tillgängliga på din arbetsyta som standard. Använd dem som de är. De innehåller samlingar med Python-paket och inställningar som hjälper dig att komma igång med olika ramverk för maskininlärning. Dessa förskapade miljöer ger också snabbare distributionstid. Azure Machine Learning är värd för utvalda miljöer i AzureML-registret, som är ett maskininlärningsregister som hanteras av Microsoft. En fullständig lista finns i miljöerna i AzureML-registret.
I användarhanterade miljöer ansvarar du för att konfigurera din miljö och installera alla paket som träningsskriptet behöver på beräkningsmålet. Se också till att inkludera eventuella beroenden som behövs för modelldistribution. Användarhanterad miljö kan vara BYOC (Bring Your Own Container) eller Docker Build Context baserat på att delegera bildmaterialisering till Azure Machine Learning. På samma sätt som i utvalda miljöer kan du dela användarhanterade miljöer mellan arbetsytor med hjälp av ett maskininlärningsregister som du skapar och hanterar.
Använd systemhanterade miljöer när du vill att Conda ska hantera Python-miljön åt dig. En ny conda-miljö materialiseras från din conda-specifikation ovanpå en bas docker-avbildning.
Skapa och hantera miljöer
Du kan skapa miljöer från Azure Machine Learning Python SDK, Azure Machine Learning CLI, Azure Machine Learning-studio och VS Code-tillägget. Med varje klient kan du anpassa basavbildningen, Dockerfile- och Python-lagret om det behövs.
Specifika kodexempel finns i avsnittet "Skapa en miljö" i Så här använder du miljöer.
Du kan också hantera miljöer via din arbetsyta. Med din arbetsyta kan du:
- Registrera miljöer.
- Hämta miljöer från din arbetsyta som ska användas för träning eller distribution.
- Skapa en ny instans av en miljö genom att redigera en befintlig.
- Visa ändringar i dina miljöer över tid, vilket garanterar reproducerbarhet.
- Skapa Docker-avbildningar automatiskt från dina miljöer.
När du skickar ett experiment registrerar tjänsten automatiskt "anonyma" miljöer på din arbetsyta. De här miljöerna visas inte, men du kan använda versionen för att hämta dem.
Kodexempel finns i avsnittet "Hantera miljöer" i Så här använder du miljöer.
Miljöskapande, cachelagring och återanvändning
Azure Machine Learning skapar miljödefinitioner i Docker-avbildningar. Den cachelagrar också miljöerna så att du kan återanvända dem i efterföljande träningsjobb och tjänstslutpunktsdistributioner. Om du kör ett träningsskript via fjärranslutning måste du skapa en Docker-avbildning. Som standard hanterar Azure Machine Learning avbildningsbyggmålet på den tillgängliga kvoten för serverlös beräkning på arbetsytan om ingen dedikerad beräkningsuppsättning har angetts för arbetsytan.
Kommentar
Eventuella nätverksbegränsningar på Azure Machine Learning-arbetsytan kan kräva dedikerad beräkningskonfiguration för användarhanterad avbildningsversion. Följ stegen för att skydda arbetsyteresurser.
Skicka in ett jobb genom att använda en miljö
När du först skickar ett fjärrjobb med hjälp av en miljö eller skapar en miljöinstans manuellt skapar Azure Machine Learning en avbildning för den angivna specifikationen. Den resulterande avbildningen cachelagras i containerregisterinstansen som är associerad med arbetsytan. Utvalda miljöer cachelagras redan i Azure Machine Learning Registry. I början av jobbkörningen hämtar beräkningsmålet avbildningen från det relevanta containerregistret.
Skapa miljöer som Docker-avbildningar
Om avbildningen för en viss miljödefinition inte redan finns i containerregisterinstansen som är associerad med Azure Machine Learning-arbetsytan skapar tjänsten en ny avbildning. För systemhanterade miljöer består avbildningsprocessen av två steg:
- Ladda ned en basavbildning och köra alla Docker-steg
- Skapa en conda-miljö enligt conda-beroenden som anges i miljödefinitionen.
För användarhanterade miljöer använder tjänsten de tillhandahållna Docker-kontextbyggena som de är. I det här fallet ansvarar du för att installera alla Python-paket genom att inkludera dem i basavbildningen eller ange anpassade Docker-steg.
Cachelagring och återanvändning av bilder
Om du använder samma miljödefinition för ett annat jobb återanvänder Azure Machine Learning den cachelagrade avbildningen från containerregistret som är associerat med din arbetsyta.
Om du vill visa information om en cachelagrad bild går du till sidan Miljöer i Azure Machine Learning-studio eller använder MLClient.environments för att hämta och inspektera miljön.
För att avgöra om du ska återanvända en cachelagrad avbildning eller skapa en ny beräknar Azure Machine Learning ett hash-värde från miljödefinitionen. Därefter jämförs hashen med hashvärden för befintliga miljöer. Hashen fungerar som en unik identifierare för en miljö och baseras på miljödefinitionens:
- Basavbildning
- Anpassade docker-steg
- Python-paket
Miljönamnet och versionen påverkar inte hashen. Om du byter namn på din miljö eller skapar en ny med samma inställningar och paket som en annan miljö förblir hash-värdet detsamma. Miljödefinitionsändringar som att lägga till eller ta bort ett Python-paket eller ändra en paketversion ändrar dock det resulterande hashvärdet. Ändra ordningen på beroenden eller kanaler i en miljö ändrar hashen och kräver en ny avbildningsversion. På samma sätt resulterar alla ändringar i en kurerad miljö i skapandet av en anpassad miljö.
Kommentar
Du kan inte skicka några lokala ändringar till en kurerad miljö utan att ändra namnet på miljön. Prefixen "AzureML-" och "Microsoft" är endast reserverade för utvalda miljöer, och din jobböverföring misslyckas om namnet börjar med någon av dem.
Miljöns beräknade hashvärde jämförs med hashvärdena i arbetsytans containerregister. Om det finns en matchning hämtas och används den cachelagrade avbildningen. Annars startas ett bildbygge.
Följande diagram visar tre miljödefinitioner. Två av dem har olika namn och versioner men identiska basavbildningar och Python-paket, vilket resulterar i samma hash och motsvarande cachelagrade avbildning. Den tredje miljön har olika Python-paket och -versioner, vilket leder till en annan hash- och cachelagrad avbildning.
Faktiska cachelagrade avbildningar i arbetsytans containerregister har namn som liknar azureml/azureml_e9607b2514b066c851012848913ba19f med hashen som visas i slutet.
Viktigt!
Om du skapar en miljö med ett icke-fäst paketberoende (till exempel
numpy) använder miljön den paketversion som var tillgänglig när miljön skapades. Alla framtida miljöer som använder en matchande definition använder den ursprungliga versionen.Om du vill uppdatera paketet anger du ett versionsnummer för att framtvinga en återskapad avbildning. Ett exempel på den här ändringen uppdateras
numpytillnumpy==1.18.1. Nya beroenden, inklusive kapslade, installeras och de kan bryta ett tidigare arbetsscenario.Om du använder en oändrad basavbildning som
mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04i din miljödefinition kan det leda till att avbildningen återskapas varje gång taggenlatestuppdateras. Det här beteendet hjälper avbildningen att ta emot de senaste korrigeringarna och systemuppdateringarna.
Bildkorrigering
Microsoft korrigerar basavbildningarna för kända säkerhetsrisker. Uppdateringar för bilder som stöds släpps varannan vecka, och den senaste versionen av bilden saknar sårbarheter äldre än 30 dagar. Korrigerade bilder släpps med en ny oföränderlig tagg och taggen :latest uppdateras till den senaste versionen av den korrigerade avbildningen.
Du måste uppdatera associerade Azure Machine Learning-tillgångar för att använda den nyligen korrigerade avbildningen. När du till exempel arbetar med en hanterad onlineslutpunkt måste du distribuera om slutpunkten för att använda den korrigerade avbildningen.
Om du anger egna avbildningar ansvarar du för att uppdatera dem och uppdatera de Azure Machine Learning-tillgångar som använder dem.
Mer information om basavbildningarna finns i följande länkar:
- GitHub-lagringsplats för Azure Machine Learning-basavbildningar .
- Använda en anpassad container för att distribuera en modell till en onlineslutpunkt
- Hantera miljöer och containeravbildningar
Relaterat innehåll
- Lär dig hur du skapar och använder miljöer i Azure Machine Learning.
- Se Referensdokumentationen för Python SDK för miljöklassen.