Hoe eangst te oerwinnen en Azure Machine Learning te brûken

Ik ken in protte Data Scientists - en ik bin nei alle gedachten ien fan harren sels - dy't wurkje oan GPU masines, lokaal of firtuele, leit yn 'e wolk, itsij fia in Jupyter Notebook of fia in soarte fan Python ûntwikkeling omjouwing. Ik wurke foar 2 jier as in saakkundige AI / ML-ûntwikkelder, ik die krekt dit, wylst ik gegevens op in gewoane server of wurkstasjon tariede, en training útfiere op in firtuele masine mei in GPU yn Azure.

Fansels, wy hawwe allegearre heard oer Azure masine learen - in spesjaal wolkplatfoarm foar masine learen. Lykwols, nei in earste eachopslach op ynliedende artikels, It liket derop dat Azure ML mear problemen foar jo sil meitsje dan it oplost. Bygelyks, yn 'e hjirboppe neamde tutorial wurdt training op Azure ML lansearre fanút in Jupyter Notebook, wylst it trainingsskript sels wurdt foarsteld om te meitsjen en te bewurkjen as in tekstbestân yn ien fan' e sellen - wylst net auto-oanfolling, syntaksis wurdt brûkt markearring, en oare foardielen fan in normale ûntwikkeling omjouwing. Om dizze reden hawwe wy Azure ML in lange tiid net serieus brûkt yn ús wurk.

Ik ûntduts lykwols koartlyn in manier om Azure ML effektyf te begjinnen yn myn wurk! Ynteressearre yn de details?

Hoe eangst te oerwinnen en Azure Machine Learning te brûken

It wichtichste geheim is Visual Studio Code tafoeging foar Azure ML. It lit jo trainingsskripts direkt yn VS-koade ûntwikkelje, en folslein profitearje fan 'e omjouwing - en jo kinne it skript sels lokaal útfiere en it dan gewoan stjoere nei training yn in Azure ML-kluster mei in pear mûsklikken. Handich, is it net?

Dêrmei krije jo de folgjende foardielen fan it brûken fan Azure ML:

  • Jo kinne wurkje measte fan 'e tiid lokaal op jo masine yn in handige IDE, en brûke GPU allinnich foar model training. Tagelyk kin it swimbad fan treningsboarnen automatysk oanpasse oan 'e fereaske lading, en troch it minimum oantal knopen op 0 te setten, kinne jo de firtuele masine automatysk "op oanfraach" begjinne yn 'e oanwêzigens fan trainingstaken.
  • jo meie bewarje alle learresultaten op ien plak.
  • sa Ferskate minsken kinne oan itselde projekt wurkje - se kinne itselde komputerkluster brûke, alle eksperiminten sille yn 'e wachtrige stean, en se kinne ek de resultaten fan elkoars eksperiminten sjen. Ien sa'n senario is mei help fan Azure ML yn it ûnderwizen fan Deep Learningwannear ynstee fan in jaan eltse studint in firtuele masine mei in GPU, kinne jo meitsje ien kluster dat sil brûkt wurde troch alle sintraal. Derneist kin in algemiene tabel fan resultaten mei modelkrektens as in goed kompetitive elemint tsjinje.
  • Mei Azure ML kinne jo maklik útfiere in rige fan eksperiminten, bygelyks, foar hyperparameter optimalisaasje - dit kin dien wurde mei in pear rigels koade, it is net nedich om in searje eksperiminten mei de hân út te fieren.

Ik hoopje dat ik jo oertsjûge om Azure ML te besykjen! Hjir is hoe te begjinnen:

Azure ML Workspace en Azure ML Portal

Azure ML is organisearre om it konsept wurkgebiet - wurkromte. Gegevens kinne wurde opslein yn 'e wurkromte, eksperiminten wurde stjoerd nei it foar training, training resultaten wurde ek opslein dêr - de resultearjende metriken en modellen. Jo kinne sjen wat der binnen de wurkromte troch Azure ML portal - en fanôf dêr kinne jo in protte operaasjes útfiere, fariearjend fan gegevens laden oant eksperiminten kontrolearje en modellen ynsette.

Jo kinne in wurkromte oanmeitsje fia de webynterface Azure Portal (sjoch stap foar stap ynstruksjes), of mei help fan de Azure CLI kommandorigel (ynstruksjes):

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

Ek ferbûn mei de wurkromte binne guon kompjûter boarnen (Compute). As jo ​​​​ienris in skript hawwe makke om it model te trenen, kinne jo stjoer eksperimint foar útfiering nei de wurkromte, en spesifisearje berekkenje doel - yn dit gefal sil it skript wurde ferpakt, rinne yn 'e winske komputeromjouwing, en dan wurde alle resultaten fan it eksperimint opslein yn' e wurkromte foar fierdere analyze en gebrûk.

Learskript foar MNIST

Tink oan it klassike probleem mei de hân skreaune sifer erkenning mei help fan de MNIST dataset. Op deselde manier kinne jo yn 'e takomst elk fan jo trainingsskripts útfiere.

D'r is in skript yn ús repository train_local.py, dy't wy it ienfâldichste lineêre regressionmodel traine mei de SkLearn-bibleteek. Fansels begryp ik dat dit net de bêste manier is om it probleem op te lossen - wy brûke it as foarbyld, as it ienfâldichste.

It skript downloadt earst de MNIST-gegevens fan OpenML en brûkt dan de klasse LogisticRegression om it model te trenen, en druk dan de resultearjende krektens út:

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)

Jo kinne it skript op jo kompjûter útfiere en it resultaat yn in pear sekonden krije.

Run it skript yn Azure ML

As wy it trainingsskript útfiere fia Azure ML, sille wy twa wichtige foardielen hawwe:

  • Training útfiere op in willekeurige kompjûterboarne, dy't, as regel, produktiver is as de lokale kompjûter. Tagelyk sil Azure ML sels soargje foar it ynpakken fan ús skript mei alle bestannen fan 'e hjoeddeistige map yn in docker-kontener, de fereaske ôfhinklikens ynstallearje en it stjoere foar útfiering.
  • Skriuw resultaten nei ien register binnen in Azure ML wurkromte. Om te profitearjen fan dizze funksje, moatte wy in pear rigels koade tafoegje oan ús skript om de resultearjende presyzje op te nimmen:

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

De oerienkommende ferzje fan it skript wurdt neamd train_universal.py (it is in bytsje mear slûchslimme as it is skreaun hjirboppe, mar net folle). Dit skript kin sawol lokaal as op in komputerboarne op ôfstân útfierd wurde.

Om it út te fieren yn Azure ML fan VS Code, moatte jo it folgjende dwaan:

  1. Soargje derfoar dat de Azure Extension ferbûn is mei jo abonnemint. Selektearje it Azure-ikoan út it menu oan de linkerkant. As jo ​​net ferbûn binne, sil in notifikaasje ferskine yn 'e rjochter ûnderhoeke (lykas dit), troch te klikken wêrop jo kinne ynfiere fia de browser. Jo kinne ek klikke Ctrl-Shift-P om de kommandorigel VS Code op te roppen, en typ Azure oanmelde.

  2. Dêrnei fine jo de seksje yn 'e Azure seksje (ikoan oan de linkerkant). MASJINLARREN:

Hoe eangst te oerwinnen en Azure Machine Learning te brûken
Hjir moatte jo ferskate groepen objekten yn 'e wurkromte sjen: kompjûterboarnen, eksperiminten, ensfh.

  1. Gean nei de list mei bestannen, klik mei rjochts op it skript train_universal.py en selektearje Azure ML: Run as eksperimint yn Azure.

Hoe eangst te oerwinnen en Azure Machine Learning te brûken

  1. Dit sil wurde folge troch in searje dialoochfinsters yn it kommandorigelgebiet fan VS Code: befêstigje it abonnemint en Azure ML-wurkromte dy't jo brûke, en selektearje Meitsje nij eksperimint:

Hoe eangst te oerwinnen en Azure Machine Learning te brûken
Hoe eangst te oerwinnen en Azure Machine Learning te brûken
Hoe eangst te oerwinnen en Azure Machine Learning te brûken

  1. Kies om in nije berekkeningsboarne te meitsjen Meitsje Nije Compute:

    • Compute bepaalt de komputerboarne wêrop training sil plakfine. Jo kinne in lokale kompjûter kieze, as in AmlCompute-wolkkluster. Ik advisearje it meitsjen fan in skalberber kluster fan masines STANDARD_DS3_v2, mei in minimum oantal masines fan 0 (en in maksimum fan 1 of mear, ôfhinklik fan jo appetites). Dit kin dien wurde fia de VS Code ynterface, of earder troch ML Portal.

    Hoe eangst te oerwinnen en Azure Machine Learning te brûken

  2. Dêrnei moatte jo in konfiguraasje selektearje Compute konfiguraasje, dy't de parameters definiearret fan 'e kontener makke foar training, benammen alle nedige biblioteken. Yn ús gefal, om't wy Scikit Learn brûke, selektearje wy SkLearn, en befêstigje dan gewoan de foarstelde list mei bibleteken troch op Enter te drukken. As jo ​​ekstra bibleteken brûke, moatte se hjir oanjûn wurde.

    Hoe eangst te oerwinnen en Azure Machine Learning te brûken
    Hoe eangst te oerwinnen en Azure Machine Learning te brûken

  3. Dit sil in finster iepenje mei in JSON-bestân dy't it eksperimint beskriuwt. Dêryn kinne jo guon parameters korrigearje - bygelyks de namme fan it eksperimint. Klikje dêrnei op de keppeling Eksperimint yntsjinje rjochts yn dizze triem:

Hoe eangst te oerwinnen en Azure Machine Learning te brûken

  1. Nei it suksesfolle yntsjinjen fan in eksperimint fia VS Code, sille jo oan 'e rjochterkant fan it notifikaasjegebiet in keppeling sjen nei Azure ML Portal, wêr kinne jo de status en resultaten fan it eksperimint folgje.

Hoe eangst te oerwinnen en Azure Machine Learning te brûken
Dêrnei kinne jo it altyd fine yn 'e seksje Eksperiminten Azure ML Portal, of yn 'e seksje Azure masine learen yn 'e list fan eksperiminten:

Hoe eangst te oerwinnen en Azure Machine Learning te brûken

  1. As jo ​​dêrnei wat korreksjes oan 'e koade hawwe makke of de parameters feroare, sil it opnij begjinnen fan it eksperimint folle flugger en makliker wêze. Troch rjochts te klikken op in bestân, sille jo in nij menu-item sjen Werhelje lêste run - selektearje it gewoan, en it eksperimint sil fuortendaliks begjinne:

Hoe eangst te oerwinnen en Azure Machine Learning te brûken
Jo kinne de resultaten fan metriken fan alle lansearringen altyd fine op it Azure ML Portal, it is net nedich om se op te skriuwen.

No wite jo dat it útfieren fan eksperiminten mei Azure ML ienfâldich en pynlik is, en jo krije in oantal moaie foardielen dêrby.

Mar jo kinne ek de neidielen sjen. It duorre bygelyks folle langer om it skript út te fieren. Fansels, it ferpakken fan it skript yn in kontener en it ynsetten op 'e tsjinner duorret tiid. As tagelyk it kluster waard ôfsnien ta in grutte fan 0 knopen, sil it noch mear tiid nimme om de firtuele masine te begjinnen, en dit alles is heul opfallend as wy eksperimintearje op ienfâldige taken lykas MNIST, dy't yn in pear sekonden wurde oplost . Lykwols, yn it echte libben, doe't training duorret ferskate oeren, of sels dagen of wiken, dizze ekstra tiid wurdt unsignificant, benammen tsjin 'e eftergrûn fan de folle hegere prestaasjes dat in computing kluster kin leverje.

Wat is folgjende?

Ik hoopje dat jo nei it lêzen fan dit artikel Azure ML kinne en sille brûke yn jo wurk om skripts út te fieren, komputerboarnen te behearjen en resultaten sintraal op te slaan. Azure ML kin jo lykwols noch mear foardielen jaan!

Binnen de wurkromte kinne jo gegevens opslaan, en dêrmei in sintralisearre repository meitsje foar al jo taken, dat maklik tagonklik is. Derneist kinne jo eksperiminten útfiere net fan Visual Studio Code, mar mei de API - dit kin benammen nuttich wêze as jo hyperparameteroptimisaasje moatte útfiere en it skript in protte kearen moatte útfiere mei ferskate parameters. Boppedat is spesjale technology ynboud yn Azure ML hyper drive, wêrmei jo mear lestich sykje en optimalisearjen fan hyperparameters dwaan kinne. Ik sil prate oer dizze mooglikheden yn myn folgjende post.

Nuttige boarnen

Om mear te learen oer Azure ML, kinne jo de folgjende Microsoft Learn-kursussen nuttich fine:

Boarne: www.habr.com

Add a comment