Hur man övervinner rädsla och börjar använda Azure Machine Learning

Jag känner många Data Scientists – och jag är nog en av dem själv – som arbetar på GPU-maskiner, lokala eller virtuella, placerade i molnet, antingen genom en Jupyter Notebook eller genom någon form av Python-utvecklingsmiljö. Jag arbetade i 2 år som expert AI/ML-utvecklare och gjorde precis detta, samtidigt som jag förberedde data på en vanlig server eller arbetsstation och körde utbildning på en virtuell maskin med en GPU i Azure.

Naturligtvis har vi alla hört talas om Azure maskininlärning — en speciell molnplattform för maskininlärning. Men efter en första blick på inledande artiklar, verkar det som att Azure ML kommer att skapa fler problem för dig än det löser. Till exempel, i handledningen som nämns ovan, startas träning på Azure ML från en Jupyter Notebook, medan själva träningsskriptet föreslås skapas och redigeras som en textfil i en av cellerna - utan att använda autokomplettering, syntax framhävning och andra fördelar med en normal utvecklingsmiljö. Av denna anledning har vi inte använt Azure ML på allvar i vårt arbete på länge.

Men jag upptäckte nyligen ett sätt att börja använda Azure ML effektivt i mitt arbete! Intresserad av detaljerna?

Hur man övervinner rädsla och börjar använda Azure Machine Learning

Huvudhemligheten är Visual Studio Code-tillägg för Azure ML. Det låter dig utveckla träningsskript direkt i VS Code och dra full nytta av miljön – och du kan till och med köra skriptet lokalt och sedan helt enkelt skicka det till träning i ett Azure ML-kluster med några få klick. Bekvämt, eller hur?

Genom att göra det får du följande fördelar av att använda Azure ML:

  • Du kan arbeta för det mesta lokalt på din maskin i en bekväm IDE, och använd endast GPU för modellträning. Samtidigt kan poolen av träningsresurser automatiskt anpassa sig till den belastning som krävs, och genom att ställa in det minsta antalet noder till 0 kan du automatiskt starta den virtuella maskinen "on demand" om det finns träningsuppgifter.
  • du kan lagra alla läranderesultat på ett ställe, inklusive de uppnådda mätvärdena och de resulterande modellerna - det finns inget behov av att komma med någon form av system eller order för att lagra alla resultat.
  • I detta fall, Flera personer kan arbeta med samma projekt - de kan använda samma datorkluster, alla experiment kommer att stå i kö, och de kan också se resultaten av varandras experiment. Ett sådant scenario är använda Azure ML för att undervisa i Deep Learningnär du istället för att ge varje elev en virtuell maskin med en GPU kan skapa ett kluster som kommer att användas av alla centralt. Dessutom kan en generell resultattabell med modellnoggrannhet fungera som ett bra konkurrensinslag.
  • Med Azure ML kan du enkelt utföra en serie experiment, till exempel för hyperparameteroptimering - detta kan göras med några rader kod, det finns inget behov av att utföra en serie experiment manuellt.

Jag hoppas att jag övertygade dig att ge Azure ML ett försök! Så här kommer du igång:

Azure ML Workspace och Azure ML Portal

Azure ML är organiserat kring konceptet Arbetsplats - Arbetsyta. Data kan lagras i arbetsytan, experiment för träning kan skickas till den och träningsresultat – de resulterande mätvärdena och modellerna – lagras också där. Du kan se vad som finns inne i arbetsytan med hjälp av Azure ML-portal - och därifrån kan du utföra många operationer, från att ladda data till att övervaka experiment och distribuera modeller.

Du kan skapa en arbetsyta via webbgränssnittet Azure portal (Se. steg för steg instruktioner), eller med Azure CLI-kommandoraden (Avstånd):

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

Också förknippade med arbetsytan är några datorresurser (Compute). När du har skapat ett manus för att träna modellen kan du skicka ett experiment för genomförande till arbetsytan och specificera beräkna mål - i det här fallet kommer skriptet att paketeras, lanseras i önskad datormiljö, och sedan sparas alla resultat av experimentet i arbetsytan för vidare analys och användning.

Lärmanus för MNIST

Låt oss överväga det klassiska problemet handskriven siffror igenkänning med hjälp av MNIST-datauppsättningen. På samma sätt kan du i framtiden köra alla dina träningsskript.

Det finns ett skript i vårt arkiv train_local.py, som tränar den enklaste linjära regressionsmodellen med hjälp av SkLearn-biblioteket. Jag förstår förstås att detta inte är det bästa sättet att lösa problemet – vi använder det som ett exempel, som det enklaste.

Skriptet laddar först ned MNIST-data från OpenML och använder sedan klassen LogisticRegression för att träna modellen och sedan skriva ut den resulterande noggrannheten:

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öra skriptet på din dator och på ett par sekunder får du resultatet.

Kör skriptet i Azure ML

Om vi ​​kör träningsskriptet genom Azure ML kommer vi att ha två huvudsakliga fördelar:

  • Att köra träning på en godtycklig datorresurs, som i regel är mer produktiv än den lokala datorn. Samtidigt kommer Azure ML själv att ta hand om att packa vårt skript med alla filer från den aktuella katalogen till en dockningsbehållare, installera de nödvändiga beroenden och skicka det för exekvering.
  • Skriv resultat till ett enda register inom en Azure ML-arbetsyta. För att dra nytta av den här funktionen måste vi lägga till ett par rader kod till vårt skript för att registrera den resulterande precisionen:

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

Motsvarande version av skriptet kallas train_universal.py (det är lite listigare än det står ovan, men inte mycket). Det här skriptet kan köras både lokalt och på en fjärrdatorresurs.

För att köra det i Azure ML från VS Code måste du göra följande:

  1. Se till att Azure Extension är ansluten till din prenumeration. Välj Azure-ikonen från menyn till vänster. Om du inte är ansluten visas ett meddelande i det nedre högra hörnet (så här), genom att klicka på vilken du kan komma in via webbläsaren. Du kan också klicka Ctrl-Skift-P för att anropa VS Code-kommandoraden och skriv Azure Logga in.

  2. Efter det, i Azure-sektionen (ikonen till vänster), hitta avsnittet MASKININLÄRNING:

Hur man övervinner rädsla och börjar använda Azure Machine Learning
Här bör du se olika grupper av objekt inuti arbetsytan: datorresurser, experiment osv.

  1. Gå till listan med filer, högerklicka på skriptet train_universal.py och välj Azure ML: Kör som experiment i Azure.

Hur man övervinner rädsla och börjar använda Azure Machine Learning

  1. Detta kommer att följas av en serie dialogrutor i kommandoradsområdet i VS Code: bekräfta prenumerationen och Azure ML-arbetsytan du använder och välj Skapa nytt experiment:

Hur man övervinner rädsla och börjar använda Azure Machine Learning
Hur man övervinner rädsla och börjar använda Azure Machine Learning
Hur man övervinner rädsla och börjar använda Azure Machine Learning

  1. Välj att skapa en ny beräkningsresurs Skapa ny Compute:

    • Compute bestämmer den datorresurs som utbildningen kommer att äga rum på. Du kan välja en lokal dator eller ett AmlCompute-molnkluster. Jag rekommenderar att du skapar ett skalbart kluster av maskiner STANDARD_DS3_v2, med ett minsta antal maskiner 0 (och det maximala kan vara 1 eller fler, beroende på din aptit). Detta kan göras genom VS Code-gränssnittet, eller tidigare genom ML portal.

    Hur man övervinner rädsla och börjar använda Azure Machine Learning

  2. Därefter måste du välja en konfiguration Beräkna konfiguration, som definierar parametrarna för behållaren som skapats för utbildning, i synnerhet alla nödvändiga bibliotek. I vårt fall, eftersom vi använder Scikit Learn, väljer vi SkLearn, och bekräfta sedan den föreslagna listan med bibliotek genom att trycka på Enter. Om du använder några ytterligare bibliotek måste de anges här.

    Hur man övervinner rädsla och börjar använda Azure Machine Learning
    Hur man övervinner rädsla och börjar använda Azure Machine Learning

  3. Detta öppnar ett fönster med en JSON-fil som beskriver experimentet. I den kan du korrigera vissa parametrar - till exempel namnet på experimentet. Klicka sedan på länken Skicka in experiment precis inuti denna fil:

Hur man övervinner rädsla och börjar använda Azure Machine Learning

  1. Efter att ha skickat in ett experiment genom VS Code, i meddelandefältet till höger kommer du att se en länk till Azure ML Portal, där du kan spåra status och resultat för experimentet.

Hur man övervinner rädsla och börjar använda Azure Machine Learning
Därefter kan du alltid hitta den i avsnittet Experiment Azure ML Portal, eller i avsnittet Azure maskininlärning i listan över experiment:

Hur man övervinner rädsla och börjar använda Azure Machine Learning

  1. Om du efter det gjorde några korrigeringar i koden eller ändrade parametrarna, kommer det att gå mycket snabbare och enklare att starta om experimentet. Genom att högerklicka på en fil ser du ett nytt menyalternativ Upprepa sista körningen - välj bara det så startar experimentet omedelbart:

Hur man övervinner rädsla och börjar använda Azure Machine Learning
Du kan alltid hitta mätresultaten från alla körningar på Azure ML Portal; det finns inget behov av att registrera dem.

Nu vet du att det är enkelt, smärtfritt att köra experiment med Azure ML och kommer med några spännande fördelar.

Men du kanske har märkt några nackdelar. Det tog till exempel betydligt längre tid att köra skriptet. Naturligtvis tar det tid att paketera skriptet i en container och distribuera det till servern. Om klustret reducerades till en storlek på 0 noder kommer det att ta ännu mer tid att starta den virtuella maskinen, och allt detta är mycket märkbart när vi experimenterar med enkla problem som MNIST, som löses på några sekunder. Men i verkliga livet, när träningen varar flera timmar, eller till och med dagar eller veckor, blir denna extra tid obetydlig, särskilt mot bakgrund av den mycket högre prestanda som ett datorkluster kan ge.

Vad händer nu?

Jag hoppas att du efter att ha läst den här artikeln kan och kommer att använda Azure ML i ditt arbete för att köra skript, hantera beräkningsresurser och centralt lagra resultat. Azure ML kan dock ge dig ännu fler fördelar!

Inne i arbetsytan kan du lagra data och därigenom skapa ett centraliserat arkiv för alla dina uppgifter, som är lätt att komma åt. Dessutom kan du köra experiment inte från Visual Studio Code, utan med hjälp av API:t - detta kan vara särskilt användbart om du behöver utföra hyperparameteroptimering och behöver köra skriptet många gånger med olika parametrar. Dessutom är specialteknik inbyggd i Azure ML hyper~~POS=TRUNC, vilket låter dig göra mer knepig sökning och optimering av hyperparametrar. Jag kommer att prata om dessa möjligheter i mitt nästa inlägg.

Användbara resurser

Om du vill veta mer om Azure ML kan du ha hjälp av följande Microsoft Learn-kurser:

Källa: will.com

Lägg en kommentar