Waar bestanden worden opgeslagen en geschreven voor Azure Machine Learning-experimenten

VAN TOEPASSING OP: Python SDK azureml v1

In dit artikel leert u waar u invoerbestanden kunt opslaan en waar uitvoerbestanden van uw experimenten moeten worden geschreven om opslaglimietfouten en experimentlatentie te voorkomen.

Wanneer u trainingstaken op een rekendoel start, worden ze geïsoleerd van buitenomgevingen. Het doel van dit ontwerp is om reproduceerbaarheid en portabiliteit van het experiment te garanderen. Als u hetzelfde script twee keer uitvoert, ontvangt u dezelfde resultaten op hetzelfde of een ander rekendoel. Met dit ontwerp kunt u rekendoelen behandelen als staatloze rekenresources, elk zonder affiniteit met de taken die worden uitgevoerd nadat ze zijn voltooid.

Waar invoerbestanden worden opgeslagen

Voordat u een experiment op een rekendoel of uw lokale computer kunt initiëren, moet u ervoor zorgen dat de benodigde bestanden beschikbaar zijn voor dat rekendoel, zoals afhankelijkheidsbestanden en gegevensbestanden die uw code moet uitvoeren.

Trainingsscripts voor Azure Machine Learning-taken door de volledige bronmap te kopiëren. Als u gevoelige gegevens hebt die u niet wilt uploaden, gebruikt u een .ignore-bestand of neemt u het niet op in de bronmap. Open in plaats daarvan uw gegevens met behulp van een gegevensarchief.

De opslaglimiet voor momentopnamen van experimenten is 300 MB en/of 2000 bestanden.

Daarom raden we het volgende aan:

  • Uw bestanden opslaan in een Azure Machine Learning-gegevensset. Dit voorkomt latentieproblemen met experimenten en heeft de voordelen van toegang tot gegevens vanaf een extern rekendoel, wat betekent dat verificatie en koppelen worden beheerd door Azure Machine Learning. Meer informatie over het opgeven van een gegevensset als invoergegevensbron in uw trainingsscript met Trainen met gegevenssets.

  • Als u slechts een paar gegevensbestanden en afhankelijkheidsscripts nodig hebt en geen gegevensarchief kunt gebruiken, plaatst u de bestanden in dezelfde mapmap als uw trainingsscript. Geef deze map op als uw source_directory rechtstreeks in uw trainingsscript of in de code die uw trainingsscript aanroept.

Opslaglimieten voor momentopnamen van experimenten

Voor experimenten maakt Azure Machine Learning automatisch een momentopname van uw code op basis van de map die u voorstelt wanneer u de taak configureert. Voor een pijplijn wordt de map voor elke stap geconfigureerd.

Dit heeft een totale limiet van 300 MB en/of 2000 bestanden. Als u deze limiet overschrijdt, ziet u de volgende fout:

While attempting to take snapshot of .
Your total snapshot size exceeds the limit of 300.0 MB

Sla uw experimentbestanden op in een gegevensarchief om deze fout op te lossen. Als u geen gegevensarchief kunt gebruiken, biedt de onderstaande tabel mogelijke alternatieve oplossingen.

Beschrijving van experiment Oplossing voor opslaglimiet
Minder dan 2000 bestanden en kunnen geen gegevensarchief gebruiken Groottelimiet voor momentopnamen overschrijven met
azureml._restclient.snapshots_client.SNAPSHOT_MAX_SIZE_BYTES = 'insert_desired_size' en azureml._restclient.constants.SNAPSHOT_MAX_SIZE_BYTES = 'insert_desired_size'
Dit kan enkele minuten duren, afhankelijk van het aantal en de grootte van bestanden.
Moet een specifieke scriptmap gebruiken Als u wilt voorkomen dat onnodige bestanden worden opgenomen in de momentopname, maakt u een genegeerd bestand (.gitignore of .amlignore) in de map. Voeg de bestanden en mappen toe die u wilt uitsluiten van dit bestand. Zie de syntaxis en patronen voor .gitignoremeer informatie over de syntaxis die in dit bestand moet worden gebruikt. Het .amlignore bestand gebruikt dezelfde syntaxis. Als beide bestanden bestaan, wordt het .amlignore bestand gebruikt en wordt het .gitignore bestand niet gebruikt.
Pijplijn Een andere submap gebruiken voor elke stap
Jupyter-notebooks Maak een .amlignore bestand of verplaats uw notitieblok naar een nieuwe, lege submap en voer de code opnieuw uit.

Waar bestanden te schrijven

Vanwege de isolatie van trainingsexperimenten worden de wijzigingen in bestanden die tijdens taken plaatsvinden, niet noodzakelijkerwijs buiten uw omgeving bewaard. Als uw script de bestanden lokaal wijzigt om te berekenen, worden de wijzigingen niet bewaard voor de volgende experimenttaak en worden ze niet automatisch doorgegeven aan de clientcomputer. Daarom zijn de wijzigingen die tijdens de eerste experimenttaak zijn aangebracht, niet van invloed op de wijzigingen in de tweede.

Bij het schrijven van wijzigingen wordt u aangeraden bestanden naar de opslag te schrijven via een Azure Machine Learning-gegevensset met een OutputFileDatasetConfig-object. Zie hoe u een OutputFileDatasetConfig maakt.

Anders schrijft u bestanden naar de ./outputs en/of ./logs map.

Belangrijk

Twee mappen, uitvoer en logboeken, ontvangen een speciale behandeling door Azure Machine Learning. Wanneer u tijdens de training bestanden naar./outputs en./logs mappen schrijft, worden de bestanden automatisch geüpload naar uw taakgeschiedenis, zodat u er toegang toe hebt zodra uw taak is voltooid.

  • Voor uitvoer zoals statusberichten of scoreresultaten schrijft u bestanden naar de ./outputs map, zodat ze worden bewaard als artefacten in de taakgeschiedenis. Houd rekening met het aantal en de grootte van bestanden die naar deze map worden geschreven, omdat de latentie kan optreden wanneer de inhoud wordt geüpload naar de taakgeschiedenis. Als latentie een probleem is, wordt het schrijven van bestanden naar een gegevensarchief aanbevolen.

  • Als u het geschreven bestand wilt opslaan als logboeken in de taakgeschiedenis, schrijft u bestanden naar ./logs de map. De logboeken worden in realtime geüpload, dus deze methode is geschikt voor het streamen van live-updates vanaf een externe taak.

Volgende stappen