Condividi tramite


Esercitazione: Introduzione a uno script Python in Azure Machine Learning (SDK v1, parte 1 di 3)

SI APPLICA A:Python SDK azureml v1

In questa esercitazione si esegue il primo script Python nel cloud con Azure Machine Learning. Questa esercitazione è la parte 1 di una serie di esercitazioni in tre parti.

Questa esercitazione evita la complessità del training di un modello di Machine Learning. Verrà eseguito uno script Python "Hello World" nel cloud. Si apprenderà come viene usato uno script di controllo per configurare e creare un'esecuzione in Azure Machine Learning.

In questa esercitazione si apprenderà come:

  • Creare ed eseguire un "Hello world!" Script Python.
  • Creare uno script di controllo Python per inviare "Hello world!" ad Azure Machine Learning.
  • Acquisire i concetti di Azure Machine Learning nello script di controllo.
  • Inviare ed eseguire lo script "Hello world!".
  • Visualizzare l'output del codice nel cloud.

Prerequisiti

Creare ed eseguire uno script Python

Questa esercitazione userà l'istanza di calcolo come computer di sviluppo. Creare prima di tutto alcune cartelle e lo script:

  1. Accedere al studio di Azure Machine Learning e selezionare l'area di lavoro, se richiesto.
  2. A sinistra selezionare Notebook
  3. Nella barra degli strumenti File selezionare +, quindi selezionare Crea nuova cartella. Screenshot che mostra la creazione di un nuovo strumento della cartella nella barra degli strumenti.
  4. Assegnare alla cartella il nome get-started.
  5. A destra del nome della cartella, usare ... per creare un'altra cartella in Get-Started. Screenshot che mostra la creazione di un menu della sottocartella.
  6. Assegnare alla nuova cartella il nome src. Usare il collegamento Modifica percorso se il percorso del file non è corretto.
  7. A destra della cartella src , usare ... per creare un nuovo file nella cartella src .
  8. Assegnare al file il nome hello.py. Impostare Il tipo di file su Python (.py)*.

Copiare questo codice nel file:

# src/hello.py
print("Hello world!")

La struttura di cartelle del progetto avrà ora un aspetto simile al seguente:

La struttura delle cartelle mostra hello.py nella sottocartella src.

Testare lo script

È possibile eseguire il codice in locale, che in questo caso significa nell'istanza di calcolo. L'esecuzione in locale offre il vantaggio del debug interattivo del codice.

Se l'istanza di calcolo è stata arrestata in precedenza, avviarla ora con lo strumento avvia calcolo a destra dell'elenco a discesa di calcolo. Attendere circa un minuto perché lo stato venga modificato in In esecuzione.

Screenshot che mostra l'avvio dell'istanza di calcolo se è stata arrestata

Selezionare Salva ed esegui script nel terminale per eseguire lo script.

Screenshot che mostra lo script di salvataggio ed esecuzione nello strumento terminale sulla barra degli strumenti

Verrà visualizzato l'output dello script nella finestra del terminale visualizzata. Chiudere la scheda e selezionare Termina per chiudere la sessione.

Creare uno script di controllo

Uno script di controllo consente di eseguire lo hello.py script in risorse di calcolo diverse. Usare lo script di controllo per controllare come e dove viene eseguito il codice di Machine Learning.

Selezionare la cartella ... alla fine della guida introduttiva per creare un nuovo file. Creare un file Python denominato run-hello.py e copiare/incollare il codice seguente in tale file:

# get-started/run-hello.py
from azureml.core import Workspace, Experiment, Environment, ScriptRunConfig

ws = Workspace.from_config()
experiment = Experiment(workspace=ws, name='day1-experiment-hello')

config = ScriptRunConfig(source_directory='./src', script='hello.py', compute_target='cpu-cluster')

run = experiment.submit(config)
aml_url = run.get_portal_url()
print(aml_url)

Suggerimento

Se è stato usato un nome diverso quando è stato creato il cluster di calcolo, assicurarsi di modificare anche il nome nel codice compute_target='cpu-cluster' .

Informazioni sul codice

Ecco come funziona lo script di controllo:

ws = Workspace.from_config()

Workspace si connette all'area di lavoro di Azure Machine Learning in modo che sia possibile comunicare con le risorse di Azure Machine Learning.

experiment = Experiment( ... )

L'esperimento offre un modo semplice per organizzare più processi con un singolo nome. Successivamente è possibile vedere in che modo gli esperimenti semplificano il confronto delle metriche tra decine di processi.

config = ScriptRunConfig( ... )

ScriptRunConfig esegue il wrapping del codice hello.py e lo passa all'area di lavoro. Come indicato dal nome, è possibile usare questa classe per configurare la modalità di esecuzione dello script in Azure Machine Learning. Specifica inoltre la destinazione di calcolo in cui verrà eseguito lo script. In questo codice la destinazione è il cluster di elaborazione creato nell'esercitazione relativa alla configurazione.

run = experiment.submit(config)

Invia lo script. Questo invio è denominato run. Nella versione 2 è stato rinominato in un processo. Un processo/esecuzione incapsula una singola esecuzione del codice. Usare un processo per monitorare lo stato dello script, acquisire l'output, analizzare i risultati, visualizzare le metriche e altro ancora.

aml_url = run.get_portal_url()

L'oggetto run fornisce un handle sull'esecuzione del codice. Monitorarne lo stato da Azure Machine Learning Studio con l'URL stampato dallo script di Python.

Inviare ed eseguire il codice nel cloud

  1. Selezionare Salva ed esegui script nel terminale per eseguire lo script di controllo, che a sua volta viene eseguito hello.py nel cluster di calcolo creato nell'esercitazione sull'installazione.

  2. Nel terminale potrebbe essere richiesto di accedere per l'autenticazione. Copiare il codice e seguire il collegamento per completare questo passaggio.

  3. Dopo l'autenticazione, verrà visualizzato un collegamento nel terminale. Selezionare il collegamento per visualizzare il processo.

    Nota

    È possibile che vengano visualizzati alcuni avvisi che iniziano con Errore durante il caricamento azureml_run_type_providers.... È possibile ignorare questi avvisi. Usare il collegamento nella parte inferiore di questi avvisi per visualizzare l'output.

Visualizzare l'output

  1. Nella pagina visualizzata verrà visualizzato lo stato del processo.
  2. Quando lo stato del processo è Completato, selezionare Output e log nella parte superiore della pagina.
  3. Selezionare std_log.txt per visualizzare l'output del processo.

Monitorare il codice nel cloud in studio

L'output dello script conterrà un collegamento allo studio simile al seguente: https://ml.azure.com/experiments/hello-world/runs/<run-id>?wsid=/subscriptions/<subscription-id>/resourcegroups/<resource-group>/workspaces/<workspace-name>.

Seguire il collegamento. All'inizio verrà visualizzato lo stato In coda o Preparazione. La prima esecuzione verrà completata in 5 - 10 minuti, per i motivi seguenti:

  • Un'immagine Docker viene creata nel cloud
  • Il cluster di elaborazione viene ridimensionato da 0 a 1 nodo
  • L'immagine Docker viene scaricata nel calcolo.

I processi successivi sono molto più rapidi (circa 15 secondi) perché l'immagine Docker viene memorizzata nella cache nel calcolo. È possibile testarlo inviando nuovamente il codice seguente dopo il completamento del primo processo.

Attendere circa 10 minuti. Verrà visualizzato un messaggio che indica che il processo è stato completato. Usare quindi Aggiorna per visualizzare la modifica dello stato in Completato. Al termine del processo, passare alla scheda Output e log. in cui è possibile vedere un file std_log.txt simile al seguente:

 1: [2020-08-04T22:15:44.407305] Entering context manager injector.
 2: [context_manager_injector.py] Command line Options: Namespace(inject=['ProjectPythonPath:context_managers.ProjectPythonPath', 'RunHistory:context_managers.RunHistory', 'TrackUserError:context_managers.TrackUserError', 'UserExceptions:context_managers.UserExceptions'], invocation=['hello.py'])
 3: Starting the daemon thread to refresh tokens in background for process with pid = 31263
 4: Entering Job History Context Manager.
 5: Preparing to call script [ hello.py ] with arguments: []
 6: After variable expansion, calling script [ hello.py ] with arguments: []
 7:
 8: Hello world!
 9: Starting the daemon thread to refresh tokens in background for process with pid = 31263
10:
11:
12: The experiment completed successfully. Finalizing job...
13: Logging experiment finalizing status in history service.
14: [2020-08-04T22:15:46.541334] TimeoutHandler __init__
15: [2020-08-04T22:15:46.541396] TimeoutHandler __enter__
16: Cleaning up all outstanding Job operations, waiting 300.0 seconds
17: 1 items cleaning up...
18: Cleanup took 0.1812913417816162 seconds
19: [2020-08-04T22:15:47.040203] TimeoutHandler __exit__

Nella riga 8 viene visualizzato l'output "Hello world!".

Il 70_driver_log.txt file contiene l'output standard di un processo. Questo file può essere utile quando si esegue il debug di processi remoti nel cloud.

Passaggi successivi

In questa esercitazione è stato eseguito un semplice script "Hello world!" ed è stato eseguito in Azure. Si è visto come connettersi all'area di lavoro di Azure Machine Learning, creare un esperimento e inviare al cloud il codice hello.py.

Nell'esercitazione successiva si approfondiranno queste informazioni eseguendo uno script più interessante di print("Hello world!").

Nota

Se si sceglie di terminare questa serie di esercitazioni senza procedere con il passaggio successivo, assicurarsi di pulire le risorse.