Come superare la paura e iniziare a usare Azure Machine Learning

Conosco molti Data Scientist - e probabilmente sono uno di loro anch'io - che lavorano su macchine GPU, locali o virtuali, situate nel cloud, tramite un notebook Jupyter o tramite una sorta di ambiente di sviluppo Python. Lavorando per 2 anni come sviluppatore esperto di AI/ML, ho fatto esattamente questo, preparando i dati su un normale server o workstation ed eseguendo la formazione su una macchina virtuale con una GPU in Azure.

Ovviamente ne abbiamo sentito parlare tutti Apprendimento automatico di Azure — una piattaforma cloud speciale per l'apprendimento automatico. Tuttavia, dopo una prima occhiata a articoli introduttivi, sembra che Azure ML creerà più problemi di quanti ne risolva. Ad esempio, nel tutorial sopra menzionato, il training su Azure ML viene avviato da un Jupyter Notebook, mentre lo script di training stesso viene proposto per essere creato e modificato come file di testo in una delle celle, pur non utilizzando il completamento automatico, la sintassi evidenziazione e altri vantaggi di un normale ambiente di sviluppo. Per questo motivo, è da molto tempo che non utilizziamo seriamente Azure ML nel nostro lavoro.

Tuttavia, di recente ho scoperto un modo per iniziare a utilizzare Azure ML in modo efficace nel mio lavoro! Interessato ai dettagli?

Come superare la paura e iniziare a usare Azure Machine Learning

Il segreto principale è Estensione di Visual Studio Code per Azure Machine Learning. Ti consente di sviluppare script di training direttamente in VS Code, sfruttando appieno l'ambiente e puoi persino eseguire lo script localmente e quindi inviarlo semplicemente al training in un cluster Azure ML con pochi clic. Comodo, no?

In tal modo, ottieni i seguenti vantaggi dall'utilizzo di Azure ML:

  • Puoi lavorare la maggior parte del tempo localmente sulla tua macchina in un comodo IDE e usa la GPU solo per l'addestramento del modello. Allo stesso tempo, il pool di risorse di formazione può adattarsi automaticamente al carico richiesto e, impostando il numero minimo di nodi su 0, è possibile avviare automaticamente la macchina virtuale "su richiesta" in presenza di attività di formazione.
  • si può memorizzare tutti i risultati dell'apprendimento in un unico posto, comprese le metriche ottenute e i modelli risultanti, non è necessario elaborare un qualche tipo di sistema o ordine per archiviare tutti i risultati.
  • In questo caso, Più persone possono lavorare allo stesso progetto - possono utilizzare lo stesso cluster di calcolo, tutti gli esperimenti verranno messi in coda e possono anche vedere i risultati degli esperimenti reciproci. Uno di questi scenari è utilizzo di Azure ML nell'insegnamento del Deep Learningquando invece di dare a ogni studente una macchina virtuale con una GPU, puoi creare un cluster che verrà utilizzato da tutti centralmente. Inoltre, una tabella generale dei risultati con accuratezza del modello può fungere da buon elemento competitivo.
  • Con Azure ML è possibile condurre facilmente una serie di esperimenti, ad esempio per ottimizzazione degli iperparametri - questo può essere fatto con poche righe di codice, non è necessario condurre manualmente una serie di esperimenti.

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

Area di lavoro di Azure ML e portale di Azure ML

Azure ML è organizzato attorno al concetto area di lavoro — spazio di lavoro. I dati possono essere archiviati nell'area di lavoro, gli esperimenti vengono inviati ad esso per l'addestramento, lì vengono archiviati anche i risultati dell'addestramento: le metriche e i modelli risultanti. Puoi vedere cosa c'è all'interno dell'area di lavoro Portale di Azure Machine Learning - e da lì puoi eseguire molte operazioni, che vanno dal caricamento dei dati al monitoraggio degli esperimenti e alla distribuzione dei modelli.

È possibile creare uno spazio di lavoro tramite l'interfaccia web Portale di Azure (Vedere. istruzioni passo passo) o usando la riga di comando dell'interfaccia della riga di comando di Azure (istruzione):

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

Alcuni sono anche associati all'area di lavoro risorse informatiche (Calcolare). Dopo aver creato uno script per addestrare il modello, puoi farlo invia l'esperimento per l'esecuzione nell'area di lavoro e specificare calcolare l'obiettivo - in questo caso, lo script verrà impacchettato, eseguito nell'ambiente informatico desiderato, quindi tutti i risultati dell'esperimento verranno salvati nell'area di lavoro per ulteriori analisi e utilizzo.

Script di apprendimento per MNIST

Consideriamo il problema classico riconoscimento delle cifre scritte a mano utilizzando il set di dati MNIST. Allo stesso modo, in futuro, potrai eseguire uno qualsiasi dei tuoi script di formazione.

C'è uno script nel nostro repository train_local.py, che formiamo il modello di regressione lineare più semplice utilizzando la libreria SkLearn. Ovviamente capisco che questo non è il modo migliore per risolvere il problema: lo usiamo come esempio, come il più semplice.

Lo script prima scarica i dati MNIST da OpenML e quindi utilizza la classe LogisticRegression per addestrare il modello, quindi stampare la precisione risultante:

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('Overall accuracy:', acc)

Puoi eseguire lo script sul tuo computer e ottenere il risultato in un paio di secondi.

Eseguire lo script in Azure Machine Learning

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

  • Esecuzione della formazione su una risorsa di calcolo arbitraria, che, di norma, è più produttiva del computer locale. Allo stesso tempo, lo stesso Azure ML si occuperà di comprimere il nostro script con tutti i file dalla directory corrente in un contenitore docker, installando le dipendenze richieste e inviandolo per l'esecuzione.
  • Scrivi i risultati in un singolo registro all'interno di un'area di lavoro di Azure ML. Per sfruttare questa funzionalità, 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

Viene richiamata la versione corrispondente dello script train_universal.py (è un po 'più furbo di quanto scritto sopra, ma non molto). Questo script può essere eseguito sia localmente che su una risorsa di elaborazione remota.

Per eseguirlo in Azure ML da VS Code, è necessario eseguire le operazioni seguenti:

  1. Assicurarsi che l'estensione di Azure sia connessa alla sottoscrizione. Selezionare l'icona di Azure dal menu a sinistra. Se non sei connesso, apparirà una notifica nell'angolo in basso a destra (questo è tutto), cliccando su cui si accede attraverso il browser. Puoi anche fare clic Ctrl-Maiusc-P per chiamare la riga di comando di VS Code e digitare Accesso Azure.

  2. Successivamente, nella sezione Azure (icona a sinistra), trova la sezione APPRENDIMENTO MACCHINA:

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

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

Come superare la paura e iniziare a usare Azure Machine Learning

  1. Questo sarà seguito da una serie di finestre di dialogo nell'area della riga di comando di VS Code: conferma la sottoscrizione e l'area di lavoro di Azure ML che stai utilizzando e seleziona Crea nuovo esperimento:

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

  1. Scegli di creare una nuova risorsa di calcolo Crea nuovo calcolo:

    • Calcolare determina la risorsa informatica su cui avrà luogo la formazione. Puoi scegliere un computer locale o un cluster cloud AmlCompute. Consiglio di creare un cluster scalabile di macchine STANDARD_DS3_v2, con un numero minimo di macchine pari a 0 (e un massimo di 1 o più, a seconda dei tuoi appetiti). Questo può essere fatto tramite l'interfaccia VS Code o in precedenza tramite Portale ML.

    Come superare la paura e iniziare a usare Azure Machine Learning

  2. Successivamente, è necessario selezionare una configurazione Configurazione del calcolo, che definisce i parametri del contenitore creato per l'addestramento, in particolare tutte le librerie necessarie. Nel nostro caso, poiché stiamo usando Scikit Learn, selezioniamo SkLearn, quindi confermare semplicemente l'elenco di librerie proposto premendo Invio. Se utilizzi librerie aggiuntive, devono essere specificate qui.

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

  3. Si aprirà una finestra con un file JSON che descrive l'esperimento. In esso puoi correggere alcuni parametri, ad esempio il nome dell'esperimento. Successivamente, fai clic sul collegamento Invia esperimento proprio all'interno di questo file:

Come superare la paura e iniziare a usare Azure Machine Learning

  1. Dopo aver inviato correttamente un esperimento tramite VS Code, sul lato destro dell'area di notifica verrà visualizzato un collegamento a Portale di Azure Machine Learning, dove puoi monitorare lo stato e i risultati dell'esperimento.

Come superare la paura e iniziare a usare Azure Machine Learning
Successivamente, puoi sempre trovarlo nella sezione Esperimenti Portale di Azure Machine Learning, o nella sezione Apprendimento automatico di Azure nell'elenco degli esperimenti:

Come superare la paura e iniziare a usare Azure Machine Learning

  1. Se successivamente hai apportato alcune correzioni al codice o modificato i parametri, riavviare l'esperimento sarà molto più rapido e semplice. Facendo clic con il tasto destro su un file, vedrai una nuova voce di menu Ripeti l'ultima corsa - basta selezionarlo e l'esperimento inizierà immediatamente:

Come superare la paura e iniziare a usare Azure Machine Learning
Puoi sempre trovare i risultati delle metriche di tutti i lanci nel portale Azure ML, non è necessario annotarli.

Ora sai che l'esecuzione di esperimenti con Azure ML è semplice e indolore e ottieni una serie di vantaggi interessanti.

Ma puoi anche vedere gli svantaggi. Ad esempio, l'esecuzione dello script ha richiesto molto più tempo. Ovviamente, impacchettare lo script in un contenitore e distribuirlo sul server richiede tempo. Se allo stesso tempo il cluster è stato ridotto a una dimensione di 0 nodi, ci vorrà ancora più tempo per avviare la macchina virtuale, e tutto questo è molto evidente quando sperimentiamo compiti semplici come MNIST, che si risolvono in pochi secondi . Tuttavia, nella vita reale, quando la formazione dura diverse ore, o addirittura giorni o settimane, questo tempo aggiuntivo diventa insignificante, soprattutto sullo sfondo delle prestazioni molto più elevate che un cluster di elaborazione può fornire.

Quali sono le prospettive?

Spero che dopo aver letto questo articolo, tu possa usare Azure ML nel tuo lavoro per eseguire script, gestire le risorse di calcolo e archiviare i risultati a livello centrale. Tuttavia, Azure ML può offrirti ancora più vantaggi!

All'interno dell'area di lavoro è possibile archiviare i dati, creando così un repository centralizzato per tutte le attività, a cui è facile accedere. Inoltre, puoi eseguire esperimenti non da Visual Studio Code, ma utilizzando l'API: questo può essere particolarmente utile se devi eseguire l'ottimizzazione degli iperparametri e devi eseguire lo script molte volte con parametri diversi. Inoltre, in Azure ML è integrata una tecnologia speciale Hyperdrive, che consente di eseguire ricerche e ottimizzazioni più complicate degli iperparametri. Parlerò di queste possibilità nel mio prossimo post.

Risorse utili

Per ulteriori informazioni su Azure ML, potresti trovare utili i seguenti corsi di Microsoft Learn:

Fonte: habr.com

Aggiungi un commento