Condividi tramite


Dove salvare e scrivere file per esperimenti di Azure Machine Learning

Si applica a: Python SDK azureml v1

In questo articolo si apprenderà dove salvare i file di input e dove scrivere file di output risultanti dagli esperimenti al fine di evitare errori di limite di archiviazione e di latenza degli esperimenti.

Quando si eseguono processi di training in una destinazione di calcolo, questi vengono isolati dagli ambienti esterni. Lo scopo di questa progettazione è garantire riproducibilità e portabilità dell'esperimento. Se si esegue lo stesso script due volte nella stessa destinazione di calcolo o in un'altra, si ottengono gli stessi risultati. Questa progettazione consente di considerare le destinazioni di calcolo come risorse di calcolo senza stato, ognuna senza alcuna affinità con i processi in esecuzione al loro termine.

Dove salvare i file di input

Prima di poter avviare un esperimento in una destinazione di calcolo o nel computer locale, è necessario assicurarsi che i file necessari siano disponibili per tale destinazione di calcolo. Ad esempio, i file di dipendenza e i file di dati necessari per l'esecuzione del codice.

Script di training dei processi di Azure Machine Learning attraverso la copiatura dell'intera directory di origine. Se si dispone di dati sensibili che non si desidera caricare, usare un file .ignore oppure evitare di includerli nella directory di origine. Accedere invece ai dati usando un archivio dati.

Il limite di archiviazione per gli snapshot dell'esperimento è di massimo 300 MB e/o 2.000 file.

Per questo motivo, è consigliabile:

  • Archiviare i file in un set di dati di Azure Machine Learning. L'uso di set di dati previene problemi di latenza degli esperimenti e offre i vantaggi dell'accesso ai dati da una destinazione di calcolo remota. Azure Machine Learning gestisce l'autenticazione e il montaggio del set di dati. Altre informazioni su come specificare un set di dati come origine dati di input nello script di training con Training con set di dati.

  • Se sono necessari solo un paio di file di dati e script di dipendenza e non è possibile usare un archivio dati, inserire i file nella stessa directory di cartelle dello script di training. Specificare questa cartella come source_directory direttamente nello script di training o nel codice che richiama lo script di training.

Limiti di archiviazione degli snapshot esperimento

Per gli esperimenti, Azure Machine Learning crea automaticamente uno snapshot (istantanea) dell'esperimento del codice in base alla directory suggerita durante la configurazione del processo. Per una pipeline, la directory viene configurata per ogni passaggio.

Tale operazione ha un limite totale di massimo 300 MB e/o 2,000 file. Se si supera questo limite, verrà visualizzato l'errore seguente:

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

Per risolvere questo errore, archiviare i file dell'esperimento in un archivio dati. Se non è possibile usare un archivio dati, la tabella seguente offre possibili soluzioni alternative.

Descrizione dell'esperimento Soluzione limite di archiviazione
Meno di 2.000 file e non può essere usato un archivio dati Eseguire la sostituzione del limite di dimensioni dello snapshot con
azureml._restclient.snapshots_client.SNAPSHOT_MAX_SIZE_BYTES = 'insert_desired_size' e azureml._restclient.constants.SNAPSHOT_MAX_SIZE_BYTES = 'insert_desired_size'
L'operazione può richiedere alcuni minuti a seconda del numero e delle dimensioni dei file.
Deve usare una directory script specifica Per evitare che i file non necessari vengano inclusi nello snapshot, impostare un file “ignore" (.gitignore o .amlignore) nella directory. Aggiungere i file e le directory da escludere. Per altre informazioni sulla sintassi da utilizzare in questo file, vedere sintassi e criteri per .gitignore. Il file .amlignore utilizza la stessa sintassi. Se esistono entrambi i file, il file .amlignore viene usato mentre il file .gitignore non viene utilizzato.
Pipeline Usare una sottodirectory diversa per ogni passaggio
Notebook Jupyter Creare un file .amlignore o spostare il notebook in una nuova sottodirectory vuota ed eseguire di nuovo il codice.

Dove scrivere i file

A causa dell'isolamento degli esperimenti di training, le modifiche apportate ai file che si verificano durante i processi non vengono necessariamente mantenute all'esterno dell'ambiente. Se lo script modifica i file locali da calcolare, le modifiche non vengono mantenute nell'esecuzione successiva e non vengono propagate automaticamente nel computer client. Pertanto, le modifiche apportate durante il primo processo dell'esperimento non influiscono e non devono influire su quelle nel secondo.

Quando si apportano modifiche, è consigliabile scrivere file per la risorsa di archiviazione tramite un set di dati di Azure Machine Learning con un oggetto OutputFileDatasetConfig. Vedere come creare un OutputFileDatasetConfig.

In caso contrario, scrivere i file nella cartella ./outputs e/o ./logs.

Importante

Due cartelle outputs e logs, hanno un trattamento speciale in Azure Machine Learning. Durante il training, quando si scrivono file nelle cartelle ./outputs e ./logs, i file verranno caricati automaticamente nella cronologia processi, in modo da avere accesso a tali file al termine del processo.

  • Per output quali messaggi di stato o risultati dell'assegnazione dei punteggi, scrivere file nella cartella ./outputs, in modo che vengano salvati in modo permanente come artefatti nella cronologia dei processi. Tenere presente il numero e le dimensioni dei file scritti in questa cartella, perché potrebbe verificarsi latenza quando il contenuto viene caricato nella cronologia dei processi. Se la latenza è un problema, è consigliabile scrivere i file in un archivio dati.

  • Per salvare il file scritto come log nella cronologia dei processi, scrivere i file nella cartella ./logs. I log vengono caricati in tempo reale, quindi questo metodo è adatto per lo streaming degli aggiornamenti live da un processo remoto.

Passaggi successivi