Hvordan overvinne frykt og begynne å bruke Azure Machine Learning

Jeg kjenner mange Data Scientists – og jeg er nok en av dem selv – som jobber på GPU-maskiner, lokale eller virtuelle, plassert i skyen, enten gjennom en Jupyter Notebook eller gjennom et slags Python-utviklingsmiljø. Jeg jobbet i 2 år som ekspert AI/ML-utvikler, og gjorde akkurat dette, mens jeg forberedte data på en vanlig server eller arbeidsstasjon, og kjørte opplæring på en virtuell maskin med en GPU i Azure.

Selvfølgelig har vi alle hørt om Azure maskinlæring — en spesiell skyplattform for maskinlæring. Imidlertid, etter et første blikk på innledende artikler, ser det ut til at Azure ML vil skape flere problemer for deg enn det løser. For eksempel, i opplæringen nevnt ovenfor, startes opplæring på Azure ML fra en Jupyter Notebook, mens selve treningsskriptet foreslås opprettet og redigert som en tekstfil i en av cellene - mens det ikke bruker autofullføring, syntaks fremheving og andre fordeler ved et normalt utviklingsmiljø. Av denne grunn har vi ikke brukt Azure ML seriøst i arbeidet vårt på lenge.

Imidlertid har jeg nylig oppdaget en måte å begynne å bruke Azure ML effektivt i arbeidet mitt! Interessert i detaljene?

Hvordan overvinne frykt og begynne å bruke Azure Machine Learning

Hovedhemmeligheten er Visual Studio Code-utvidelse for Azure ML. Den lar deg utvikle treningsskript rett i VS Code, og dra full nytte av miljøet – og du kan til og med kjøre skriptet lokalt og deretter ganske enkelt sende det til trening i en Azure ML-klynge med noen få klikk. Praktisk, ikke sant?

Ved å gjøre det får du følgende fordeler ved å bruke Azure ML:

  • Du kan jobbe mesteparten av tiden lokalt på maskinen din i en praktisk IDE, og bruk kun GPU for modelltrening. Samtidig kan bassenget med treningsressurser automatisk justere til den nødvendige belastningen, og ved å sette minimum antall noder til 0, kan du automatisk starte den virtuelle maskinen "on demand" i nærvær av treningsoppgaver.
  • du kan lagre alle læringsutbytte på ett sted, inkludert de oppnådde beregningene og de resulterende modellene - det er ikke nødvendig å komme opp med noen form for system eller ordre for å lagre alle resultatene.
  • I dette tilfellet, Flere personer kan jobbe med samme prosjekt - de kan bruke samme dataklynge, alle eksperimenter vil stå i kø, og de kan også se resultatene av hverandres eksperimenter. Et slikt scenario er bruke Azure ML til å undervise i dyp læringnår du i stedet for å gi hver student en virtuell maskin med en GPU, kan lage én klynge som skal brukes av alle sentralt. I tillegg kan en generell resultattabell med modellnøyaktighet tjene som et godt konkurranseelement.
  • Med Azure ML kan du enkelt utføre en rekke eksperimenter, for eksempel for hyperparameteroptimalisering - dette kan gjøres med noen få linjer med kode, det er ikke nødvendig å utføre en serie eksperimenter manuelt.

Jeg håper jeg overbeviste deg om å prøve Azure ML! Slik kommer du i gang:

Azure ML Workspace og Azure ML Portal

Azure ML er organisert rundt konseptet arbeidsplass - arbeidsplass. Data kan lagres i arbeidsområdet, eksperimenter sendes til det for trening, treningsresultater lagres også der - de resulterende beregningene og modellene. Du kan se hva som er inne i arbeidsområdet gjennom Azure ML-portal - og derfra kan du utføre mange operasjoner, alt fra å laste inn data til å overvåke eksperimenter og distribuere modeller.

Du kan opprette et arbeidsområde gjennom nettgrensesnittet Azure Portal (Se trinnvise instruksjoner), eller ved å bruke Azure CLI-kommandolinjen (instruksjoner):

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

Også knyttet til arbeidsområdet er noen dataressurser (Beregn). Når du har laget et skript for å trene modellen, kan du send eksperiment for utførelse til arbeidsområdet, og spesifiser beregne mål - i dette tilfellet vil skriptet pakkes, kjøres i ønsket datamiljø, og deretter vil alle resultatene av eksperimentet bli lagret i arbeidsområdet for videre analyse og bruk.

Læringsmanus for MNIST

Tenk på det klassiske problemet håndskrevet siffergjenkjenning ved å bruke MNIST-datasettet. På samme måte kan du i fremtiden kjøre hvilket som helst av treningsskriptene dine.

Det er et skript i vårt depot train_local.py, som vi trener den enkleste lineære regresjonsmodellen ved hjelp av SkLearn-biblioteket. Jeg forstår selvfølgelig at dette ikke er den beste måten å løse problemet på – vi bruker det som et eksempel, som den enkleste.

Skriptet laster først ned MNIST-dataene fra OpenML og bruker deretter klassen LogisticRegression for å trene modellen, og deretter skrive ut den resulterende nøyaktigheten:

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)

Du kan kjøre skriptet på datamaskinen din og få resultatet i løpet av et par sekunder.

Kjør skriptet i Azure ML

Hvis vi kjører opplæringsskriptet gjennom Azure ML, vil vi ha to hovedfordeler:

  • Å kjøre trening på en vilkårlig dataressurs, som som regel er mer produktiv enn den lokale datamaskinen. Samtidig vil Azure ML selv ta seg av å pakke skriptet vårt med alle filene fra gjeldende katalog inn i en docker-beholder, installere de nødvendige avhengighetene og sende det til kjøring.
  • Skriv resultater til et enkelt register i et Azure ML-arbeidsområde. For å dra nytte av denne funksjonen, må vi legge til et par linjer med kode i skriptet vårt for å registrere den resulterende nøyaktigheten:

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

Den tilsvarende versjonen av skriptet kalles train_universal.py (det er litt mer utspekulert enn det er skrevet ovenfor, men ikke mye). Dette skriptet kan kjøres både lokalt og på en ekstern dataressurs.

For å kjøre den i Azure ML fra VS Code, må du gjøre følgende:

  1. Sørg for at Azure Extension er koblet til abonnementet ditt. Velg Azure-ikonet fra menyen til venstre. Hvis du ikke er tilkoblet, vil et varsel vises i nedre høyre hjørne (som dette), ved å klikke på som du kan gå inn gjennom nettleseren. Du kan også klikke Ctrl-Shift-P for å kalle opp VS Code-kommandolinjen, og skriv Azure Logg på.

  2. Etter det, i Azure-delen (ikonet til venstre), finn delen MASKINLÆRING:

Hvordan overvinne frykt og begynne å bruke Azure Machine Learning
Her bør du se ulike grupper av objekter inne i arbeidsområdet: dataressurser, eksperimenter osv.

  1. Gå til listen over filer, høyreklikk på skriptet train_universal.py og velg Azure ML: Kjør som eksperiment i Azure.

Hvordan overvinne frykt og begynne å bruke Azure Machine Learning

  1. Dette vil bli fulgt av en rekke dialogbokser i kommandolinjeområdet til VS Code: bekreft abonnementet og Azure ML-arbeidsområdet du bruker, og velg Opprett nytt eksperiment:

Hvordan overvinne frykt og begynne å bruke Azure Machine Learning
Hvordan overvinne frykt og begynne å bruke Azure Machine Learning
Hvordan overvinne frykt og begynne å bruke Azure Machine Learning

  1. Velg å opprette en ny beregningsressurs Opprett ny Compute:

    • Beregn bestemmer dataressursen som opplæringen skal finne sted på. Du kan velge en lokal datamaskin, eller en AmlCompute-skyklynge. Jeg anbefaler å lage en skalerbar klynge med maskiner STANDARD_DS3_v2, med et minimum antall maskiner på 0 (og maksimalt 1 eller flere, avhengig av appetitten din). Dette kan gjøres gjennom VS Code-grensesnittet, eller tidligere gjennom ML portal.

    Hvordan overvinne frykt og begynne å bruke Azure Machine Learning

  2. Deretter må du velge en konfigurasjon Beregn konfigurasjon, som definerer parametrene til beholderen opprettet for opplæring, spesielt alle nødvendige biblioteker. I vårt tilfelle, siden vi bruker Scikit Learn, velger vi SkLearn, og bekreft deretter den foreslåtte listen over biblioteker ved å trykke Enter. Hvis du bruker noen ekstra biblioteker, må de spesifiseres her.

    Hvordan overvinne frykt og begynne å bruke Azure Machine Learning
    Hvordan overvinne frykt og begynne å bruke Azure Machine Learning

  3. Dette åpner et vindu med en JSON-fil som beskriver eksperimentet. I den kan du rette noen parametere - for eksempel navnet på eksperimentet. Klikk deretter på lenken Send inn eksperiment rett inne i denne filen:

Hvordan overvinne frykt og begynne å bruke Azure Machine Learning

  1. Etter å ha sendt inn et eksperiment gjennom VS-kode, på høyre side av meldingsområdet, vil du se en lenke til Azure ML Portal, hvor du kan spore status og resultater av eksperimentet.

Hvordan overvinne frykt og begynne å bruke Azure Machine Learning
Deretter kan du alltid finne den i seksjonen eksperimenter Azure ML Portal, eller i delen Azure maskinlæring i listen over eksperimenter:

Hvordan overvinne frykt og begynne å bruke Azure Machine Learning

  1. Hvis du etter det har gjort noen korrigeringer i koden eller endret parameterne, vil det være mye raskere og enklere å starte eksperimentet på nytt. Ved å høyreklikke på en fil vil du se et nytt menyelement Gjenta siste kjøring - bare velg det, og eksperimentet starter umiddelbart:

Hvordan overvinne frykt og begynne å bruke Azure Machine Learning
Du kan alltid finne resultatene av beregninger fra alle lanseringer på Azure ML Portal, det er ikke nødvendig å skrive dem ned.

Nå vet du at det er enkelt og smertefritt å kjøre eksperimenter med Azure ML, og du får en rekke fine fordeler ved å gjøre det.

Men du kan også se ulempene. For eksempel tok det betydelig lengre tid å kjøre skriptet. Selvfølgelig tar det tid å pakke skriptet i en beholder og distribuere det på serveren. Hvis klyngen samtidig ble kuttet til en størrelse på 0 noder, vil det ta enda mer tid å starte den virtuelle maskinen, og alt dette er veldig merkbart når vi eksperimenterer med enkle oppgaver som MNIST, som løses på noen få sekunder . Men i det virkelige liv, når trening varer flere timer, eller til og med dager eller uker, blir denne ekstra tiden ubetydelig, spesielt på bakgrunn av den mye høyere ytelsen som en dataklynge kan gi.

Hva blir det neste?

Jeg håper at du etter å ha lest denne artikkelen kan og vil bruke Azure ML i arbeidet ditt for å kjøre skript, administrere dataressurser og lagre resultater sentralt. Azure ML kan imidlertid gi deg enda flere fordeler!

Inne i arbeidsområdet kan du lagre data, og dermed lage et sentralisert depot for alle oppgavene dine, som er lett tilgjengelig. I tillegg kan du kjøre eksperimenter ikke fra Visual Studio Code, men ved å bruke API - dette kan være spesielt nyttig hvis du trenger å utføre hyperparameteroptimalisering og trenger å kjøre skriptet mange ganger med forskjellige parametere. Dessuten er spesialteknologi innebygd i Azure ML Hyperdrive, som lar deg gjøre mer vanskelige søk og optimalisering av hyperparametre. Jeg vil snakke om disse mulighetene i mitt neste innlegg.

Nyttige ressurser

For å lære mer om Azure ML, kan du finne følgende Microsoft Learn-kurs nyttige:

Kilde: www.habr.com

Legg til en kommentar