Wat zijn Azure Machine Learning-omgevingen?

Azure Machine Learning-omgevingen zijn een inkapseling van de omgeving waarin uw machine learning-training plaatsvindt. Ze geven de Python-pakketten en software-instellingen op rond uw trainings- en scorescripts. De omgevingen zijn beheerde en versie-entiteiten in uw Machine Learning-werkruimte die reproduceerbare, controleerbare en draagbare machine learning-werkstromen in verschillende rekendoelen mogelijk maken.

U kunt een Environment object gebruiken om het volgende te doen:

  • Ontwikkel uw trainingsscript.
  • Gebruik dezelfde omgeving op Azure Machine Learning Compute opnieuw voor modeltraining op schaal.
  • Implementeer uw model met dezelfde omgeving.
  • Ga opnieuw naar de omgeving waarin een bestaand model is getraind.

In het volgende diagram ziet u hoe u één Environment object kunt gebruiken in zowel uw taakconfiguratie (voor training) als uw deductie- en implementatieconfiguratie (voor webservice-implementaties).

Diagram of an environment in machine learning workflow

De omgeving, het rekendoel en het trainingsscript vormen samen de taakconfiguratie: de volledige specificatie van een trainingstaak.

Typen omgevingen

Omgevingen kunnen breed worden onderverdeeld in drie categorieën: gecureerd, door de gebruiker beheerd en door het systeem beheerd.

Gecureerde omgevingen worden geleverd door Azure Machine Learning en zijn standaard beschikbaar in uw werkruimte. Ze zijn bedoeld om als zodanig te worden gebruikt, ze bevatten verzamelingen python-pakketten en -instellingen om u te helpen aan de slag te gaan met verschillende machine learning-frameworks. Deze vooraf gemaakte omgevingen bieden ook een snellere implementatietijd. Gecureerde omgevingen worden gehost in AzureML Registry. Zie de omgevingen in het azureml-register voor een volledige lijst.

In door de gebruiker beheerde omgevingen bent u verantwoordelijk voor het instellen van uw omgeving en het installeren van elk pakket dat uw trainingsscript nodig heeft op het rekendoel. Zorg er ook voor dat u eventuele afhankelijkheden opneemt die nodig zijn voor modelimplementatie. Door de gebruiker beheerde omgeving kan BYOC (Bring Your Own Container) of Docker Build Context zijn op basis van het delegeren van de materialisatie van installatiekopieën naar AzureML.

U gebruikt door het systeem beheerde omgevingen wanneer u wilt dat Conda de Python-omgeving voor u beheert. Er wordt een nieuwe Conda-omgeving gerealiseerd op basis van uw Conda-specificatie boven op een basis-Docker-installatiekopieën.

Omgevingen maken en beheren

U kunt omgevingen maken van clients zoals de Azure Machine Learning Python SDK, azure Machine Learning CLI, de pagina Omgevingen in Azure Machine Learning-studio en de VS Code-extensie. Met elke client kunt u indien nodig de basisinstallatiekopieën, Dockerfile en Python-laag aanpassen.

Zie de sectie 'Een omgeving maken' van Omgevingen gebruiken voor specifieke codevoorbeelden.

Omgevingen worden ook eenvoudig beheerd via uw werkruimte, zodat u het volgende kunt doen:

  • Omgevingen registreren.
  • Haal omgevingen op uit uw werkruimte die moeten worden gebruikt voor training of implementatie.
  • Maak een nieuw exemplaar van een omgeving door een bestaande te bewerken.
  • Bekijk wijzigingen in uw omgevingen in de loop van de tijd, waardoor reproduceerbaarheid wordt gegarandeerd.
  • Bouw automatisch Docker-installatiekopieën vanuit uw omgevingen.

Anonieme omgevingen worden automatisch geregistreerd in uw werkruimte wanneer u een experiment indient. Ze worden niet weergegeven, maar kunnen worden opgehaald per versie.

Zie de sectie 'Omgevingen beheren' van Omgevingen beheren voor codevoorbeelden.

Omgeving bouwen, opslaan in cache en hergebruik

Azure Machine Learning bouwt omgevingsdefinities in Docker-installatiekopieën. Ook worden de omgevingen in de cache opgeslagen, zodat ze opnieuw kunnen worden gebruikt in volgende trainingstaken en implementaties van service-eindpunten. Voor het extern uitvoeren van een trainingsscript is het maken van een Docker-installatiekopie vereist. Standaard beheert AzureML het builddoel voor installatiekopieën op het beschikbare serverloze rekenquotum van de werkruimte als er geen toegewezen rekenkracht is ingesteld voor de werkruimte.

Notitie

Voor netwerkbeperkingen in De AzureML-werkruimte is mogelijk een toegewezen door de gebruiker beheerde installatiekopieën voor het bouwen van rekenprocessen vereist. Volg de stappen om werkruimtebronnen te beveiligen.

Een taak verzenden met behulp van een omgeving

Wanneer u een externe taak voor het eerst verzendt met behulp van een omgeving of handmatig een omgevingsexemplementatie maakt, bouwt Azure Machine Learning een installatiekopieën voor de opgegeven specificatie. Resultaatinstallatiekopieën worden in de cache opgeslagen in het containerregisterexemplaar dat is gekoppeld aan de werkruimte. Gecureerde omgevingen worden al in de cache opgeslagen in het AzureML-register. Aan het begin van de taakuitvoering wordt de installatiekopieën opgehaald door het rekendoel uit het relevante containerregister.

Omgevingen bouwen als Docker-installatiekopieën

Als de installatiekopie voor een bepaalde omgevingsdefinitie nog niet bestaat in het containerregisterexemplaar dat is gekoppeld aan AzureML Workspace, wordt er een nieuwe installatiekopie gemaakt. Voor door het systeem beheerde omgevingen bestaat de build van de installatiekopieën uit twee stappen:

  1. Een basisinstallatiekopieën downloaden en eventuele Docker-stappen uitvoeren
  2. Het bouwen van een conda-omgeving volgens conda-afhankelijkheden die zijn opgegeven in de omgevingsdefinitie.

Voor door de gebruiker beheerde omgevingen wordt docker-context gebouwd. In dit geval bent u verantwoordelijk voor het installeren van Python-pakketten, door ze op te nemen in uw basisinstallatiekopieën of aangepaste Docker-stappen op te geven.

Afbeeldingen opslaan in cache en opnieuw gebruiken

Als u dezelfde omgevingsdefinitie voor een andere taak gebruikt, gebruikt Azure Machine Learning de in de cache opgeslagen installatiekopieën uit het containerregister dat is gekoppeld aan uw werkruimte.

Als u de details van een afbeelding in de cache wilt bekijken, controleert u de pagina Omgevingen in Azure Machine Learning-studio of gebruikt MLClient.environments u deze om de omgeving op te halen en te inspecteren.

Azure Machine Learning berekent een hashwaarde uit de omgevingsdefinitie en vergelijkt deze met de hashes van bestaande omgevingen om te bepalen of een installatiekopieën in de cache opnieuw moeten worden gebruikt of een nieuwe moet worden gemaakt. De hash fungeert als een unieke id voor een omgeving en is gebaseerd op de volgende omgevingsdefinities:

  • Basisinstallatiekopieën
  • Aangepaste docker-stappen
  • Python-pakketten

De hash wordt niet beïnvloed door de omgevingsnaam of -versie. Als u de naam van uw omgeving wijzigt of een nieuwe maakt met dezelfde instellingen en pakketten als een andere omgeving, blijft de hashwaarde hetzelfde. De omgevingsdefinitie verandert echter, zoals het toevoegen of verwijderen van een Python-pakket of het wijzigen van een pakketversie, verandert de resulterende hash-waarde. Als u de volgorde van afhankelijkheden of kanalen in een omgeving wijzigt, wordt ook de hash gewijzigd en is een nieuwe build van de installatiekopieën vereist. Op dezelfde manier resulteert elke wijziging in een gecureerde omgeving in het maken van een aangepaste omgeving.

Notitie

U kunt geen lokale wijzigingen indienen in een gecureerde omgeving zonder de naam van de omgeving te wijzigen. De voorvoegsels 'AzureML-' en 'Microsoft' zijn exclusief gereserveerd voor gecureerde omgevingen en uw taakverzending mislukt als de naam met een van beide begint.

De berekende hashwaarde van de omgeving wordt vergeleken met die in het containerregister van de werkruimte. Als er een overeenkomst is, wordt de in de cache opgeslagen installatiekopie opgehaald en gebruikt, anders wordt er een build van een installatiekopie geactiveerd.

In het volgende diagram ziet u drie omgevingsdefinities. Twee daarvan hebben verschillende namen en versies, maar identieke basisinstallatiekopieën en Python-pakketten, wat resulteert in dezelfde hash en bijbehorende afbeelding in de cache. De derde omgeving heeft verschillende Python-pakketten en -versies, wat leidt tot een andere hash- en cache-installatiekopieën.

Diagram of environment caching and Docker images

Werkelijke installatiekopieën in de cache in het containerregister van uw werkruimte hebben namen die vergelijkbaar azureml/azureml_e9607b2514b066c851012848913ba19f zijn met de hash die aan het einde wordt weergegeven.

Belangrijk

  • Als u een omgeving maakt met een losgemaakte pakketafhankelijkheid (bijvoorbeeld numpy), gebruikt de omgeving de pakketversie die beschikbaar was toen de omgeving werd gemaakt. Elke toekomstige omgeving die gebruikmaakt van een overeenkomende definitie, gebruikt de oorspronkelijke versie.

    Als u het pakket wilt bijwerken, geeft u een versienummer op om het opnieuw opbouwen van een installatiekopieën af te dwingen. Een voorbeeld hiervan zou veranderen numpy in numpy==1.18.1. Nieuwe afhankelijkheden, inclusief geneste afhankelijkheden, worden geïnstalleerd en kunnen een eerder werkend scenario verbreken.

  • Als u een losgemaakte basisinstallatiekopieën zoals mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04 in uw omgevingsdefinitie gebruikt, kan dit ertoe leiden dat de installatiekopieën telkens opnieuw worden opgebouwd wanneer de latest tag wordt bijgewerkt. Dit helpt de installatiekopieën de nieuwste patches en systeemupdates te ontvangen.

Patching van installatiekopieën

Microsoft is verantwoordelijk voor het patchen van de basisinstallatiekopieën voor bekende beveiligingsproblemen. Updates voor ondersteunde installatiekopieën worden elke twee weken uitgebracht, met een toezegging van niet-gepatchte beveiligingsproblemen die ouder zijn dan 30 dagen in de nieuwste versie van de installatiekopieën. Patch-installatiekopieën worden uitgebracht met een nieuwe onveranderbare tag en de :latest tag wordt bijgewerkt naar de nieuwste versie van de gepatchte installatiekopieën.

U moet gekoppelde Azure Machine Learning-assets bijwerken om de zojuist gepatchte installatiekopieën te kunnen gebruiken. Wanneer u bijvoorbeeld werkt met een beheerd online-eindpunt, moet u uw eindpunt opnieuw implementeren om de patchinstallatiekopie te gebruiken.

Als u uw eigen installatiekopieën opgeeft, bent u verantwoordelijk voor het bijwerken en bijwerken van de Azure Machine Learning-assets die deze gebruiken.

Zie de volgende koppelingen voor meer informatie over de basisafbeeldingen:

Volgende stappen