Sådan overvinder du frygt og begynder at bruge Azure Machine Learning

Jeg kender mange Data Scientists – og jeg er nok selv en af ​​dem – som arbejder på GPU-maskiner, lokale eller virtuelle, placeret i skyen, enten gennem en Jupyter Notebook eller gennem en form for Python-udviklingsmiljø. Jeg arbejdede i 2 år som ekspert AI/ML-udvikler og gjorde præcis dette, mens jeg forberedte data på en almindelig server eller arbejdsstation og kørte træning på en virtuel maskine med en GPU i Azure.

Selvfølgelig har vi alle hørt om Azure maskinindlæring — en særlig cloud-platform til maskinlæring. Dog efter et første blik på indledende artikler, ser det ud til, at Azure ML vil skabe flere problemer for dig, end det løser. For eksempel, i vejledningen nævnt ovenfor, lanceres træning i Azure ML fra en Jupyter Notebook, mens selve træningsscriptet foreslås oprettet og redigeret som en tekstfil i en af ​​cellerne - uden at bruge autofuldførelse, syntaks fremhævelse og andre fordele ved et normalt udviklingsmiljø. Af denne grund har vi ikke brugt Azure ML seriøst i vores arbejde i lang tid.

Jeg har dog for nylig opdaget en måde at begynde at bruge Azure ML effektivt i mit arbejde! Interesseret i detaljerne?

Sådan overvinder du frygt og begynder at bruge Azure Machine Learning

Hovedhemmeligheden er Visual Studio Code-udvidelse til Azure ML. Det giver dig mulighed for at udvikle træningsscripts direkte i VS Code, så du får fuld fordel af miljøet – og du kan endda køre scriptet lokalt og derefter blot sende det til træning i en Azure ML-klynge med et par klik. Praktisk, er det ikke?

Når du gør det, får du følgende fordele ved at bruge Azure ML:

  • Du kan arbejde det meste af tiden lokalt på din maskine i en praktisk IDE, og brug kun GPU til modeltræning. Samtidig kan puljen af ​​træningsressourcer automatisk tilpasse sig den nødvendige belastning, og ved at indstille minimumsantallet af noder til 0, kan du automatisk starte den virtuelle maskine "on demand" i nærvær af træningsopgaver.
  • du kan gemme alle læringsresultater ét sted, inklusive de opnåede målinger og de resulterende modeller - der er ingen grund til at komme med en form for system eller ordre til at gemme alle resultaterne.
  • I dette tilfælde Flere personer kan arbejde på det samme projekt - de kan bruge den samme computerklynge, alle eksperimenter bliver sat i kø, og de kan også se resultaterne af hinandens eksperimenter. Et sådant scenarie er bruge Azure ML til undervisning i Deep Learningnår du i stedet for at give hver elev en virtuel maskine med en GPU, kan oprette én klynge, som vil blive brugt af alle centralt. Derudover kan en generel tabel over resultater med modelnøjagtighed tjene som et godt konkurrenceelement.
  • Med Azure ML kan du nemt udføre en række eksperimenter, f.eks hyperparameter optimering - dette kan gøres med et par linjer kode, der er ingen grund til at udføre en række eksperimenter manuelt.

Jeg håber, jeg overbeviste dig om at prøve Azure ML! Sådan kommer du i gang:

Azure ML Workspace og Azure ML Portal

Azure ML er organiseret omkring konceptet arbejdsområde - Arbejdsplads. Data kan gemmes i arbejdsområdet, eksperimenter sendes til det til træning, træningsresultater gemmes også der - de resulterende målinger og modeller. Du kan se, hvad der er inde i arbejdsområdet igennem Azure ML-portal - og derfra kan du udføre mange operationer, lige fra indlæsning af data til overvågning af eksperimenter og implementering af modeller.

Du kan oprette et arbejdsområde via webgrænsefladen Azure Portal (See. trin for trin instruktioner), eller ved at bruge Azure CLI-kommandolinjen (Kørselsvejledning):

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

Også tilknyttet arbejdsområdet er nogle computerressourcer (Compute). Når du har lavet et script til at træne modellen, kan du sende eksperiment til udførelse til arbejdsområdet, og specificer beregne mål - i dette tilfælde vil scriptet blive pakket, køre i det ønskede computermiljø, og derefter vil alle resultaterne af eksperimentet blive gemt i arbejdsområdet til yderligere analyse og brug.

Læringsmanuskript til MNIST

Overvej det klassiske problem håndskrevet ciffergenkendelse ved hjælp af MNIST-datasættet. På samme måde kan du i fremtiden køre et hvilket som helst af dine træningsscripts.

Der er et script i vores lager train_local.py, som vi træner den enkleste lineære regressionsmodel ved hjælp af SkLearn-biblioteket. Jeg forstår selvfølgelig, at det ikke er den bedste måde at løse problemet på – vi bruger det som eksempel, som det nemmeste.

Scriptet downloader først MNIST-dataene fra OpenML og bruger derefter klassen LogisticRegression for at træne modellen og derefter udskrive den resulterende nøjagtighed:

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 køre scriptet på din computer og få resultatet på et par sekunder.

Kør scriptet i Azure ML

Hvis vi kører træningsscriptet gennem Azure ML, vil vi have to hovedfordele:

  • At køre træning på en vilkårlig computerressource, som som regel er mere produktiv end den lokale computer. Samtidig vil Azure ML selv sørge for at pakke vores script med alle filerne fra den aktuelle mappe ind i en docker-container, installere de nødvendige afhængigheder og sende det til eksekvering.
  • Skriv resultater til en enkelt registreringsdatabasen i et Azure ML-arbejdsområde. For at drage fordel af denne funktion skal vi tilføje et par linjer kode til vores script for at registrere den resulterende præcision:

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

Den tilsvarende version af scriptet kaldes train_universal.py (det er lidt mere udspekuleret end det er skrevet ovenfor, men ikke meget). Dette script kan køres både lokalt og på en ekstern computerressource.

For at køre det i Azure ML fra VS Code skal du gøre følgende:

  1. Sørg for, at Azure Extension er forbundet til dit abonnement. Vælg Azure-ikonet i menuen til venstre. Hvis du ikke er tilsluttet, vises en notifikation i nederste højre hjørne (sådan her), ved at klikke på som du kan komme ind gennem browseren. Du kan også klikke Ctrl-Shift-P for at kalde VS Code-kommandolinjen, og skriv Azure Log ind.

  2. Derefter finder du sektionen i Azure-sektionen (ikonet til venstre). MASKINELÆRING:

Sådan overvinder du frygt og begynder at bruge Azure Machine Learning
Her bør du se forskellige grupper af objekter inde i arbejdsområdet: computerressourcer, eksperimenter osv.

  1. Gå til listen over filer, højreklik på scriptet train_universal.py og vælg Azure ML: Kør som eksperiment i Azure.

Sådan overvinder du frygt og begynder at bruge Azure Machine Learning

  1. Dette vil blive efterfulgt af en række dialogbokse i kommandolinjeområdet i VS Code: bekræft abonnementet og Azure ML-arbejdsområdet, du bruger, og vælg Opret nyt eksperiment:

Sådan overvinder du frygt og begynder at bruge Azure Machine Learning
Sådan overvinder du frygt og begynder at bruge Azure Machine Learning
Sådan overvinder du frygt og begynder at bruge Azure Machine Learning

  1. Vælg at oprette en ny beregningsressource Opret ny beregning:

    • Compute bestemmer den computerressource, som træningen vil finde sted på. Du kan vælge en lokal computer eller en AmlCompute cloud-klynge. Jeg anbefaler at oprette en skalerbar klynge af maskiner STANDARD_DS3_v2, med et minimum antal maskiner på 0 (og maksimalt 1 eller flere, afhængigt af din appetit). Dette kan gøres gennem VS Code-grænsefladen eller tidligere gennem ML portal.

    Sådan overvinder du frygt og begynder at bruge Azure Machine Learning

  2. Dernæst skal du vælge en konfiguration Beregn konfiguration, som definerer parametrene for den container, der er oprettet til træning, især alle de nødvendige biblioteker. I vores tilfælde, da vi bruger Scikit Learn, vælger vi SkLearn, og bekræft derefter den foreslåede liste over biblioteker ved at trykke på Enter. Hvis du bruger yderligere biblioteker, skal de angives her.

    Sådan overvinder du frygt og begynder at bruge Azure Machine Learning
    Sådan overvinder du frygt og begynder at bruge Azure Machine Learning

  3. Dette åbner et vindue med en JSON-fil, der beskriver eksperimentet. I den kan du rette nogle parametre - for eksempel navnet på eksperimentet. Klik derefter på linket Indsend eksperiment lige inde i denne fil:

Sådan overvinder du frygt og begynder at bruge Azure Machine Learning

  1. Efter succesfuld indsendelse af et eksperiment gennem VS Code, i højre side af meddelelsesområdet, vil du se et link til Azure ML Portal, hvor du kan spore status og resultater af eksperimentet.

Sådan overvinder du frygt og begynder at bruge Azure Machine Learning
Efterfølgende kan du altid finde den i afsnittet Eksperimenter Azure ML Portal, eller i afsnittet Azure maskinindlæring på listen over eksperimenter:

Sådan overvinder du frygt og begynder at bruge Azure Machine Learning

  1. Hvis du derefter lavede nogle rettelser til koden eller ændrede parametrene, vil genstart af eksperimentet være meget hurtigere og nemmere. Ved at højreklikke på en fil, vil du se et nyt menupunkt Gentag sidste kørsel - bare vælg det, og eksperimentet starter med det samme:

Sådan overvinder du frygt og begynder at bruge Azure Machine Learning
Du kan altid finde resultaterne af metrics fra alle lanceringer på Azure ML Portal, der er ingen grund til at skrive dem ned.

Nu ved du, at det er enkelt og smertefrit at køre eksperimenter med Azure ML, og du får en række gode fordele ved at gøre det.

Men man kan også se ulemperne. For eksempel tog det væsentligt længere tid at køre scriptet. Det tager selvfølgelig tid at pakke scriptet i en container og implementere det på serveren. Hvis klyngen samtidig blev skåret til en størrelse på 0 noder, vil det tage endnu mere tid at starte den virtuelle maskine, og alt dette er meget mærkbart, når vi eksperimenterer med simple opgaver som MNIST, der løses på få sekunder . Men i det virkelige liv, når træning varer flere timer, eller endda dage eller uger, bliver denne ekstra tid ubetydelig, især på baggrund af den meget højere ydeevne, som en computerklynge kan levere.

Hvad er det næste?

Jeg håber, at du efter at have læst denne artikel kan og vil bruge Azure ML i dit arbejde til at køre scripts, administrere computerressourcer og gemme resultater centralt. Azure ML kan dog give dig endnu flere fordele!

Inde i arbejdsområdet kan du gemme data, og derved skabe et centraliseret lager til alle dine opgaver, som er nemt at få adgang til. Derudover kan du køre eksperimenter ikke fra Visual Studio Code, men ved hjælp af API'en - dette kan især være nyttigt, hvis du skal udføre hyperparameteroptimering og skal køre scriptet mange gange med forskellige parametre. Derudover er der indbygget speciel teknologi i Azure ML HyperDrive, som giver dig mulighed for at lave mere vanskelig søgning og optimering af hyperparametre. Jeg vil tale om disse muligheder i mit næste indlæg.

Nyttige ressourcer

Hvis du vil vide mere om Azure ML, kan du finde følgende Microsoft Learn-kurser nyttige:

Kilde: www.habr.com

Tilføj en kommentar