Come superare la paura e iniziare a utilizzare Azure Machine Learning

Conosco molti Data Scientist — e probabilmente mi considero uno di loro — che lavorano su macchine con GPU, locali o virtuali, ospitate nel cloud, sia tramite Jupyter Notebook che tramite qualche ambiente di sviluppo Python. Lavorando per 2 anni come esperto sviluppatore in AI/ML, ho fatto proprio così, preparando i dati su un server normale o una workstation e avviando l'addestramento su una VM con GPU in Azure.

Certo, tutti noi abbiamo sentito parlare di Azure Machine Learning — una piattaforma cloud specializzata per l'apprendimento automatico. Tuttavia, dopo un primo sguardo a articoli introduttivi, si ha l'impressione che Azure ML ti creerà più problemi di quanti ne risolverà. Ad esempio, nell'esempio di addestramento menzionato sopra, l'addestramento su Azure ML viene avviato da Jupyter Notebook, mentre lo script di addestramento stesso è proposto per essere creato e modificato come file di testo in una delle celle — senza utilizzare l'autocompletamento, l'evidenziazione della sintassi e altri vantaggi di un normale ambiente di sviluppo. Per questo motivo, per lungo tempo non abbiamo seriamente utilizzato Azure ML nel nostro lavoro.

Tuttavia, recentemente ho scoperto un modo per iniziare a utilizzare Azure ML in modo efficace nel mio lavoro! Ti interessa sapere i dettagli?

Come superare la paura e iniziare a utilizzare Azure Machine Learning

Il segreto principale è l'estensione di Visual Studio Code per Azure ML. Essa ti consente di sviluppare script di addestramento direttamente in VS Code, sfruttando tutti i vantaggi dell'ambiente — potendo persino eseguire lo script localmente e poi semplicemente inviarlo per l'addestramento nel cluster Azure ML con un paio di clic. Comodo, vero?

In questo contesto, ottieni i seguenti vantaggi dall'uso di Azure ML:

  • Puoi lavorare per la maggior parte del tempo localmente sulla tua macchina in un IDE comodo, e utilizzare la GPU solo per addestrare il modello. Inoltre, il pool delle risorse di addestramento può adattarsi automaticamente al carico richiesto, e impostando il numero minimo di nodi a 0, potrai avviare automaticamente la VM "su richiesta" in presenza di attività di addestramento.
  • Potete memorizzare tutti i risultati dell'addestramento in un unico posto, comprese le metriche ottenute e i modelli generati — non è necessario inventarsi un sistema o un ordine per memorizzare tutti i risultati.
  • In questo su un progetto possono lavorare più persone — possono utilizzare lo stesso cluster informatico, tutti gli esperimenti verranno messi in coda e potranno anche vedere i risultati degli esperimenti degli altri. Uno di questi scenari è l'uso di Azure ML nell'insegnamento del Deep Learning, quando invece di fornire a ciascun studente una macchina virtuale con GPU, puoi creare un unico cluster che sarà utilizzato centralmente da tutti. Inoltre, una tabella dei risultati complessivi con la precisione del modello può fungere da buon elemento di competizione.
  • Con Azure ML è facile eseguire serie di esperimenti, ad esempio per l'ottimizzazione degli iperparametri — questo può essere fatto con poche righe di codice, non è necessario eseguire serie di esperimenti manualmente.

Spero di averti convinto a provare Azure ML! Ecco come puoi iniziare:

Workspace Azure ML e Portal Azure ML

Azure ML è organizzato attorno al concetto di workspace — Workspace. Nello workspace possono essere memorizzati dati, si inviano esperimenti per l'addestramento e lì sono memorizzati anche i risultati dell'addestramento: metriche e modelli ottenuti. Puoi vedere cosa c'è all'interno dello workspace tramite il portale Azure ML — e da lì puoi eseguire molte operazioni, dall'importazione dei dati al monitoraggio degli esperimenti e al dispiegamento dei modelli.

Puoi creare uno workspace tramite l'interfaccia web Azure Portal (vedi istruzioni passo-passo), oppure utilizzando il comando della linea di comando Azure CLI (guida):

az extension add -n azure-cli-ml
az group create -n myazml -l northeurope
az ml workspace create -w myworkspace -g myazml

Lo workspace è anche associato a alcune risorse di calcolo (Calcolo). Una volta creato uno script per addestrare un modello, puoi inviare l'esperimento per l'esecuzione allo workspace, specificando compute target — in questo modo lo script sarà impacchettato, eseguito nell'ambiente di calcolo necessario e successivamente tutti i risultati dell'esperimento saranno salvati nello workspace per ulteriori analisi e utilizzo.

Script di addestramento per MNIST

Consideriamo il classico problema del riconoscimento delle cifre scritte a mano utilizzando il set di dati MNIST. Analogamente, in seguito sarete in grado di eseguire i vostri script di formazione.

Nel nostro repository c'è uno script train_local.py, che addestra un semplice modello di regressione lineare utilizzando la libreria SkLearn. Certo, capisco che non sia il modo migliore per risolvere il problema — lo usiamo come esempio, essendo il più semplice.

Lo script scarica prima i dati MNIST da OpenML e poi utilizza la classe LogisticRegression per addestrare il modello e poi stampa la precisione ottenuta:

mnist = fetch_openml('mnist_784')
mnist['target'] = np.array([int(x) for x in mnist['target']])

shuffle_index = np.random.permutation(len(mist['data']))
X, y = mnist['data'][shuffle_index], mnist['target'][shuffle_index]

X_train, X_test, y_train, y_test = 
  train_test_split(X, y, test_size = 0.3, random_state = 42)

lr = LogisticRegression()
lr.fit(X_train, y_train)
y_hat = lr.predict(X_test)
acc = np.average(np.int32(y_hat == y_test))

print('Precisione complessiva:', acc)

Potete eseguire lo script sul vostro computer e ottenere il risultato in qualche secondo.

Eseguiamo lo script in Azure ML

Se invece eseguiamo lo script di addestramento tramite Azure ML, avremo due principali vantaggi:

  • Esecuzione dell'addestramento su una risorsa computazionale arbitraria, che di solito è più potente del computer locale. Azure ML si occuperà di impacchettare il nostro script con tutti i file dalla directory corrente in un contenitore docker, installare le dipendenze richieste e inviarlo per l'esecuzione.
  • Registrazione dei risultati in un unico registro all'interno del workspace di Azure ML. Per sfruttare questa opportunità, dobbiamo aggiungere un paio di righe di codice al nostro script per registrare la precisione risultante:

from azureml.core.run import Run
...
try:    
    run = Run.get_submitted_run()
    run.log('accuracy', acc)
except:
    pass

La versione corrispondente dello script si chiama train_universal.py (è leggermente più complessa di quanto scritto sopra, ma non di molto). Questo script può essere eseguito sia localmente che su una risorsa computazionale remota.

Per eseguirlo in Azure ML da VS Code, è necessario fare quanto segue:

  1. Assicurati che l'estensione di Azure sia connessa al tuo abbonamento. Seleziona l'icona di Azure nel menu a sinistra. Se non sei connesso, apparirà una notifica nell'angolo in basso a destra (tipo questo), cliccando su di essa potrai accedere tramite il browser. Puoi anche premere Ctrl-Shift-P per aprire il prompt dei comandi di VS Code e digitare Accesso a Azure.

  2. Dopo di che, nella sezione Azure (icona a sinistra) trova la sezione MACHINE LEARNING:

Come superare la paura e iniziare a utilizzare Azure Machine Learning
Qui dovresti vedere diversi gruppi di oggetti all'interno dell'area di lavoro: risorse computazionali, esperimenti, ecc.

  1. Vai all'elenco dei file, fai clic con il tasto destro sullo script train_universal.py e seleziona Azure ML: Esegui come esperimento in Azure.

Come superare la paura e iniziare a utilizzare Azure Machine Learning

  1. Dopo di ciò seguirà una serie di dialoghi nell'area dei comandi di VS Code: conferma l'abbonamento e l'area di lavoro di Azure ML utilizzati, e seleziona Crea nuovo esperimento:

Come superare la paura e iniziare a utilizzare Azure Machine Learning
Come superare la paura e iniziare a utilizzare Azure Machine Learning
Come superare la paura e iniziare a utilizzare Azure Machine Learning

  1. Seleziona la creazione di una nuova risorsa computazionale Crea Nuovo Calcolo:

    • Calcolo definisce la risorsa computazionale su cui avverrà l'apprendimento. Puoi scegliere un computer locale o un cluster cloud AmlCompute. Ti consiglio di creare un cluster di macchine scalabile STANDARD_DS3_v2, con un numero minimo di macchine 0 (e un massimo che può essere 1 o più, a seconda delle tue esigenze). Puoi farlo tramite l'interfaccia di VS Code, o precedentemente tramite ML Portal.

    Come superare la paura e iniziare a utilizzare Azure Machine Learning

  2. Successivamente, è necessario scegliere la configurazione Configurazione Calcolo, che definisce i parametri del contenitore creato per l'apprendimento, in particolare tutte le librerie necessarie. Nel nostro caso, poiché utilizziamo Scikit Learn, scegliamo SkLearn, e poi confermi semplicemente l'elenco proposto di librerie premendo Invio. Se utilizzi librerie aggiuntive, è necessario specificarle qui.

    Come superare la paura e iniziare a utilizzare Azure Machine Learning
    Come superare la paura e iniziare a utilizzare Azure Machine Learning

  3. Dopo ciò si aprirà una finestra con un file JSON che descrive l'esperimento. È possibile modificare alcuni parametri, ad esempio il nome dell'esperimento. Dopo, fai clic sul link Invia Esperimento proprio all'interno di questo file:

Come superare la paura e iniziare a utilizzare Azure Machine Learning

  1. Dopo aver inviato con successo l'esperimento tramite VS Code, sulla destra nell'area delle notifiche vedrai un link a Azure ML Portal, dove potrai monitorare lo stato e i risultati dell'esperimento.

Come superare la paura e iniziare a utilizzare Azure Machine Learning
Successivamente, potrai sempre trovarlo nella sezione Esperimenti Azure ML Portal, o nella sezione Azure Machine Learning nell'elenco degli esperimenti:

Come superare la paura e iniziare a utilizzare Azure Machine Learning

  1. Se dopo hai apportato modifiche al codice o hai cambiato parametri, la ripetizione dell'esperimento sarà molto più veloce e semplice. Facendo clic con il tasto destro sul file, vedrai un nuovo elemento di menu Ripeti ultima esecuzione — scegli semplicemente questo, e l'esperimento verrà avviato immediatamente:

Come superare la paura e iniziare a utilizzare Azure Machine Learning
I risultati delle metriche di tutte le esecuzioni puoi sempre trovarli su Azure ML Portal, non è necessario registrarli.

Ora sai che eseguire esperimenti utilizzando Azure ML è semplice e indolore, e in più ottieni una serie di vantaggi.

Ma avete potuto notare anche degli svantaggi. Ad esempio, per avviare lo script ci è voluto significativamente più tempo. Certo, ci vuole tempo per imballare lo script in un contenitore e distribuirlo sul server. Se nel frattempo il cluster è stato ridotto a un dimensione di 0 nodi, ci vorrà ancora più tempo per avviare la macchina virtuale, ed è tutto molto evidente quando sperimentiamo con compiti semplici come MNIST, che si risolvono in pochi secondi. Tuttavia, nella vita reale, quando l'addestramento dura diverse ore, giorni o addirittura settimane, questo tempo extra diventa trascurabile, soprattutto rispetto alla prestazione significativamente più alta che può offrire un cluster di calcolo.

Cosa succede dopo?

Spero che dopo aver letto questo articolo, sarete in grado di utilizzare Azure ML nel vostro lavoro per eseguire script, gestire risorse di calcolo e memorizzare centralmente i risultati. Tuttavia, Azure ML può offrirvi ancora più vantaggi!

All'interno dello spazio di lavoro è possibile archiviare i dati, creando così un archivio centralizzato per tutti i propri progetti, al quale è facile accedere. Inoltre, è possibile avviare esperimenti non da Visual Studio Code, ma utilizzando l'API: questo può essere particolarmente utile se è necessario eseguire un'ottimizzazione degli iperparametri e si deve eseguire lo script più volte con parametri diversi. Inoltre, Azure ML ha integrato una tecnologia speciale Hyperdrive, che consente di effettuare ricerche e ottimizzazioni degli iperparametri più sofisticate. Parlerò di queste possibilità nel mio prossimo articolo.

Risorse utili

Per uno studio più approfondito di Azure ML, potrebbero esservi utili i seguenti corsi di Microsoft Learn:

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS 🔥 Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS - ProHoster