Share via


Bestanden opslaan en schrijven voor Azure Machine Learning-experimenten

VAN TOEPASSING OP:Python SDK azureml v1

In dit artikel leert u waar u invoerbestanden kunt opslaan en waar u uitvoerbestanden van uw experimenten kunt schrijven om fouten met opslaglimieten en experimentlatentie te voorkomen.

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

Waar kunnen invoerbestanden worden opgeslagen

Voordat u een experiment op een rekendoel of uw lokale computer kunt starten, 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 hele bronmap te kopiëren. Als u gevoelige gegevens hebt die u niet wilt uploaden, gebruikt u een .ignore-bestand of neemt u dit niet op in de bronmap. In plaats daarvan kunt u uw gegevens openen 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 uw invoergegevensbron in uw trainingsscript met Trainen met gegevenssets.

  • Als u slechts een paar gegevensbestanden en afhankelijkheidsscripts nodig hebt en een gegevensarchief niet 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 waarmee uw trainingsscript wordt aangeroepen.

Opslaglimieten van momentopnamen van experimenten

Voor experimenten maakt Azure Machine Learning automatisch een momentopname van het experiment van uw code op basis van de map die u voorstelt wanneer u de taak configureert. 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

U kunt deze fout oplossen door uw experimentbestanden op te slaan in een gegevensarchief. Als u een gegevensarchief niet kunt gebruiken, biedt de onderstaande tabel mogelijke alternatieve oplossingen.

Beschrijving van experiment Oplossing voor opslaglimiet
Minder dan 2000 bestanden & kunnen geen gegevensarchief gebruiken Limiet voor de grootte van momentopnamen overschrijven met
azureml._restclient.snapshots_client.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 ignore-bestand (.gitignore of .amlignore) in de map. Voeg de bestanden en mappen toe die u wilt uitsluiten van dit bestand. Zie syntaxis en patronen voor .gitignorevoor meer 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 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 u bestanden kunt schrijven

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

Wanneer u wijzigingen schrijft, raden we u aan bestanden naar opslag te schrijven via een Azure Machine Learning-gegevensset met een OutputFileDatasetConfig-object. Zie hoe u een OutputFileDatasetConfig maakt.

Schrijf anders bestanden naar de ./outputs map en/of ./logs .

Belangrijk

Twee mappen, uitvoer en logboeken krijgen een speciale behandeling van 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 map, zodat ze worden bewaard als artefacten in de ./outputs taakgeschiedenis. Houd rekening met het aantal en de grootte van bestanden die naar deze map worden geschreven, omdat er 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 een geschreven bestand wilt opslaan als logboeken in de taakgeschiedenis, schrijft u bestanden naar de ./logs map. De logboeken worden in realtime geüpload, dus deze methode is geschikt voor het streamen van live-updates vanuit een externe taak.

Volgende stappen