Kiel venki timon kaj komenci uzi Azure Machine Learning

Mi konas multajn Datumajn Sciencistojn - kaj mi verŝajne estas unu el ili mem - kiuj laboras sur GPU-maŝinoj, lokaj aŭ virtualaj, situantaj en la nubo, ĉu per Jupyter Notebook, ĉu per ia Python-disvolva medio. Laborante dum 2 jaroj kiel sperta AI/ML-programisto, mi faris ĝuste tion, dum mi preparis datumojn sur regula servilo aŭ laborstacio, kaj kurante trejnadon sur virtuala maŝino kun GPU en Azure.

Kompreneble, pri ni ĉiuj aŭdis Lazura Maŝina Lernado — speciala nuba platformo por maŝinlernado. Tamen, post unua rigardo ĉe enkondukaj artikoloj, ŝajnas, ke Azure ML kreos pli da problemoj por vi ol ĝi solvas. Ekzemple, en la lernilo menciita supre, trejnado pri Azure ML estas lanĉita de Jupyter Notebook, dum la trejna skripto mem estas proponita esti kreita kaj redaktita kiel tekstdosiero en unu el la ĉeloj - dum ne uzante aŭtomatan kompletigo, sintakso. reliefigante, kaj aliajn avantaĝojn de normala evolua medio. Tial ni delonge ne serioze uzis Azure ML en nia laboro.

Tamen, mi ĵus malkovris manieron komenci uzi Azure ML efike en mia laboro! Interesita pri la detaloj?

Kiel venki timon kaj komenci uzi Azure Machine Learning

La ĉefa sekreto estas Etendo de Visual Studio Code por Azure ML. Ĝi permesas vin disvolvi trejnajn skriptojn ĝuste en VS Code, plene profitante la medion - kaj vi eĉ povas ruli la skripton loke kaj poste simple sendi ĝin al trejnado en Azure ML-areto per kelkaj klakoj. Oportuna, ĉu ne?

Farante tion, vi ricevas la sekvajn avantaĝojn de uzado de Azure ML:

  • Vi povas labori plejofte loke sur via maŝino en oportuna IDE, kaj uzu GPU nur por modela trejnado. Samtempe, la aro de trejnaj rimedoj povas aŭtomate ĝustigi al la bezonata ŝarĝo, kaj fiksante la minimuman nombron da nodoj al 0, vi povas aŭtomate komenci la virtualan maŝinon "laŭ postulo" en ĉeesto de trejnaj taskoj.
  • Vi povas konservu ĉiujn lernajn rezultojn en unu loko, inkluzive de la atingitaj metrikoj kaj la rezultaj modeloj - ne necesas elpensi ian sistemon aŭ ordigi konservi ĉiujn rezultojn.
  • tiel Pluraj homoj povas labori pri la sama projekto - ili povas uzi la saman komputilan areton, ĉiuj eksperimentoj estos vicigitaj, kaj ili ankaŭ povas vidi la rezultojn de la eksperimentoj de unu la alian. Unu tia scenaro estas uzante Azure ML en instruado de Profunda Lernadokiam anstataŭ doni al ĉiu studento virtualan maŝinon kun GPU, vi povas krei unu areton, kiu estos uzata de ĉiuj centre. Krome, ĝenerala tabelo de rezultoj kun modela precizeco povas funkcii kiel bona konkurenciva elemento.
  • Kun Azure ML, vi povas facile fari serion de eksperimentoj, ekzemple, por optimumigo de hiperparametroj - ĉi tio povas esti farita per kelkaj linioj de kodo, ne necesas fari serion da eksperimentoj permane.

Mi esperas, ke mi konvinkis vin provi Azure ML! Jen kiel komenci:

Azure ML Workspace kaj Azure ML Portal

Azure ML estas organizita ĉirkaŭ la koncepto laborareo — laborspaco. Datumoj povas esti stokitaj en la laborspaco, eksperimentoj estas senditaj al ĝi por trejnado, trejnaj rezultoj ankaŭ estas konservitaj tie - la rezultaj metrikoj kaj modeloj. Vi povas vidi kio estas en la laborspaco tra Azure ML-portalo - kaj de tie vi povas fari multajn operaciojn, de ŝargado de datumoj ĝis monitorado de eksperimentoj kaj deplojado de modeloj.

Vi povas krei laborspacon per la retinterfaco Lazura Portalo (vidu instrukcioj paŝo post paŝo), aŭ uzante la komandlinion de Azure CLI (instrukcioj):

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

Ankaŭ asociitaj kun la laborspaco estas kelkaj komputikaj rimedoj (Komputi). Post kiam vi kreis skripton por trejni la modelon, vi povas sendi eksperimenton por ekzekuto al la laborspaco, kaj specifu komputi celon - en ĉi tiu kazo, la skripto estos pakita, rulita en la dezirata komputika medio, kaj tiam ĉiuj rezultoj de la eksperimento estos konservitaj en la laborspaco por plia analizo kaj uzo.

Lerna skripto por MNIST

Konsideru la klasikan problemon manskribita cifera rekono uzante la MNIST-datumaron. Simile, en la estonteco, vi povas ruli iun ajn el viaj trejnaj skriptoj.

Estas skripto en nia deponejo train_local.py, kiun ni trejnas la plej simplan linearan regresan modelon uzante la SkLearn-bibliotekon. Kompreneble, mi komprenas, ke tio ne estas la plej bona maniero por solvi la problemon - ni uzas ĝin kiel ekzemplon, kiel la plej simplan.

La skripto unue elŝutas la MNIST-datumojn de OpenML kaj poste uzas la klason LogisticRegression por trejni la modelon, kaj poste presi la rezultan precizecon:

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)

Vi povas ruli la skripton en via komputilo kaj akiri la rezulton en kelkaj sekundoj.

Rulu la skripton en Azure ML

Se ni rulas la trejnan skripton per Azure ML, ni havos du ĉefajn avantaĝojn:

  • Kurante trejnadon sur arbitra komputika rimedo, kiu, kiel regulo, estas pli produktiva ol la loka komputilo. Samtempe, Azure ML mem zorgos paki nian skripton kun ĉiuj dosieroj de la nuna dosierujo en docker-ujo, instali la postulatajn dependecojn kaj sendi ĝin por ekzekuto.
  • Skribu rezultojn al ununura registro ene de Azure ML-laborspaco. Por utiligi ĉi tiun funkcion, ni devas aldoni kelkajn liniojn de kodo al nia skripto por registri la rezultan precizecon:

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

La responda versio de la skripto nomiĝas train_universal.py (ĝi estas iom pli ruza ol ĝi estas skribita supre, sed ne multe). Ĉi tiu skripto povas esti rulita kaj loke kaj sur fora komputika rimedo.

Por ruli ĝin en Azure ML de VS Code, vi devas fari la jenon:

  1. Certigu, ke la Azure Etendo estas konektita al via abono. Elektu la Azure-ikonon el la menuo maldekstre. Se vi ne estas konektita, sciigo aperos en la malsupra dekstra angulo (kiel tio), alklakante sur kiu vi povas eniri per la retumilo. Vi ankaŭ povas klaki Ctrl-Shift-P por voki la komandlinion de VS Code, kaj tajpu Azure Ensalutu.

  2. Post tio, en la sekcio Azure (ikono maldekstre), trovu la sekcion MAKINA LINGVO:

Kiel venki timon kaj komenci uzi Azure Machine Learning
Ĉi tie vi devus vidi malsamajn grupojn de objektoj ene de la laborspaco: komputikaj rimedoj, eksperimentoj, ktp.

  1. Iru al la listo de dosieroj, dekstre alklaku la skripton train_universal.py kaj elektu Azure ML: Kuru kiel eksperimento en Azure.

Kiel venki timon kaj komenci uzi Azure Machine Learning

  1. Ĉi tio estos sekvita de serio da dialogoj en la komandlinia areo de VS Code: konfirmu la abonon kaj Azure ML-laborspacon, kiujn vi uzas, kaj elektu. Kreu novan eksperimenton:

Kiel venki timon kaj komenci uzi Azure Machine Learning
Kiel venki timon kaj komenci uzi Azure Machine Learning
Kiel venki timon kaj komenci uzi Azure Machine Learning

  1. Elektu krei novan komputikan rimedon Krei Novan Komputon:

    • Komputi determinas la komputikan rimedon sur kiu trejnado okazos. Vi povas elekti lokan komputilon aŭ AmlCompute-nuban areton. Mi rekomendas krei skaleblan areton da maŝinoj STANDARD_DS3_v2, kun minimuma nombro da maŝinoj de 0 (kaj maksimume 1 aŭ pli, depende de viaj apetitoj). Ĉi tio povas esti farita per la interfaco de VS Code, aŭ antaŭe pere ML Portalo.

    Kiel venki timon kaj komenci uzi Azure Machine Learning

  2. Poste, vi devas elekti agordon Komputi Agordo, kiu difinas la parametrojn de la ujo kreita por trejnado, precipe, ĉiujn necesajn bibliotekojn. En nia kazo, ĉar ni uzas Scikit Learn, ni elektas SkLearn, kaj poste nur konfirmu la proponitan liston de bibliotekoj premante Enter. Se vi uzas pliajn bibliotekojn, ili devas esti specifitaj ĉi tie.

    Kiel venki timon kaj komenci uzi Azure Machine Learning
    Kiel venki timon kaj komenci uzi Azure Machine Learning

  3. Ĉi tio malfermos fenestron kun JSON-dosiero priskribanta la eksperimenton. En ĝi, vi povas korekti iujn parametrojn - ekzemple la nomo de la eksperimento. Post tio alklaku la ligilon Sendu Eksperimenton ĝuste ene de ĉi tiu dosiero:

Kiel venki timon kaj komenci uzi Azure Machine Learning

  1. Post sukcese sendi eksperimenton per VS Code, ĉe la dekstra flanko de la sciiga areo, vi vidos ligilon al Azure ML Portalo, kie vi povas spuri la staton kaj rezultojn de la eksperimento.

Kiel venki timon kaj komenci uzi Azure Machine Learning
Poste, vi ĉiam povas trovi ĝin en la sekcio Eksperimentoj Azure ML Portalo, aŭ en la sekcio Lazura Maŝina Lernado en la listo de eksperimentoj:

Kiel venki timon kaj komenci uzi Azure Machine Learning

  1. Se post tio vi faris kelkajn korektojn al la kodo aŭ ŝanĝis la parametrojn, rekomenci la eksperimenton estos multe pli rapida kaj pli facila. Dekstre alklakante dosieron, vi vidos novan menueron Ripeti lastan kuron - simple elektu ĝin, kaj la eksperimento tuj komenciĝos:

Kiel venki timon kaj komenci uzi Azure Machine Learning
Vi ĉiam povas trovi la rezultojn de metrikoj de ĉiuj lanĉoj sur la Azure ML Portalo, ne necesas noti ilin.

Nun vi scias, ke fari eksperimentojn kun Azure ML estas simpla kaj sendolora, kaj vi ricevas kelkajn belajn avantaĝojn farante tion.

Sed vi ankaŭ povas vidi la malavantaĝojn. Ekzemple, daŭris signife pli longe por ruli la skripton. Kompreneble, paki la skripton en ujo kaj deploji ĝin sur la servilo bezonas tempon. Se samtempe la areto estis tranĉita al grandeco de 0 nodoj, necesos eĉ pli da tempo por komenci la virtualan maŝinon, kaj ĉio ĉi estas tre rimarkebla kiam ni eksperimentas pri simplaj taskoj kiel MNIST, kiuj estas solvitaj en kelkaj sekundoj. . Tamen, en la reala vivo, kiam trejnado daŭras plurajn horojn, aŭ eĉ tagojn aŭ semajnojn, ĉi tiu kroma tempo fariĝas sensignifa, precipe kontraŭ la fono de la multe pli alta rendimento, kiun komputika areto povas provizi.

Kio sekvas?

Mi esperas, ke post legado de ĉi tiu artikolo, vi povas kaj uzos Azure ML en via laboro por ruli skriptojn, administri komputikajn rimedojn kaj stoki rezultojn centre. Tamen, Azure ML povas doni al vi eĉ pli da avantaĝoj!

Ene de la laborspaco, vi povas stoki datumojn, tiel kreante centralizitan deponejon por ĉiuj viaj taskoj, kiu estas facile alirebla. Krome, vi povas fari eksperimentojn ne de Visual Studio Code, sed uzante la API - ĉi tio povas esti speciale utila se vi bezonas fari hiperparametran optimumigon kaj bezonas ruli la skripton multfoje kun malsamaj parametroj. Plie, speciala teknologio estas konstruita en Azure ML Hiperveturado, kiu ebligas al vi fari pli malfacilan serĉon kaj optimumigon de hiperparametroj. Mi parolos pri ĉi tiuj eblecoj en mia venonta afiŝo.

Utilaj Rimedoj

Por lerni pli pri Azure ML, vi povas trovi la jenajn Microsoft Learn-kursojn utilaj:

fonto: www.habr.com

Aldoni komenton