Как да преодолеете страха и да започнете да използвате Azure Machine Learning

Познавам много специалисти по данни - и аз вероятно съм един от тях - които работят на GPU машини, локални или виртуални, разположени в облака, или чрез Jupyter Notebook, или чрез някаква среда за разработка на Python. Работейки 2 години като експерт AI/ML разработчик, направих точно това, докато подготвях данни на обикновен сървър или работна станция и провеждах обучение на виртуална машина с GPU в Azure.

Разбира се, всички сме чували за Мазутно обучение Azure — специална облачна платформа за машинно обучение. След пръв поглед обаче уводни статии, изглежда, че Azure ML ще ви създаде повече проблеми, отколкото ще реши. Например в урока, споменат по-горе, обучението по Azure ML се стартира от Jupyter Notebook, докато самият скрипт за обучение се предлага да бъде създаден и редактиран като текстов файл в една от клетките - без да се използва автоматично довършване, синтаксис подчертаване и други предимства на нормална среда за разработка. Поради тази причина отдавна не сме използвали Azure ML в работата си.

Наскоро обаче открих начин да започна да използвам Azure ML ефективно в работата си! Интересувате ли се от подробности?

Как да преодолеете страха и да започнете да използвате Azure Machine Learning

Основната тайна е Visual Studio Code разширение за Azure ML. Тя ви позволява да разработвате скриптове за обучение направо във VS Code, като се възползвате напълно от средата - и дори можете да стартирате скрипта локално и след това просто да го изпратите на обучение в Azure ML клъстер с няколко щраквания. Удобно, нали?

По този начин получавате следните предимства от използването на Azure ML:

  • Можете да работите през повечето време локално на вашата машина в удобна IDE и използвайте GPU само за обучение на модели. В същото време пулът от ресурси за обучение може автоматично да се настрои към необходимото натоварване и като зададете минималния брой възли на 0, можете автоматично да стартирате виртуалната машина „при поискване“ при наличие на задачи за обучение.
  • Можете да съхранявайте всички резултати от обучението на едно място, включително постигнатите показатели и получените модели - не е необходимо да се измисля някаква система или ред за съхраняване на всички резултати.
  • В този случай, Няколко души могат да работят по един и същи проект - те могат да използват един и същ компютърен клъстер, всички експерименти ще бъдат подредени на опашка и те също могат да виждат резултатите от експериментите на другия. Един такъв сценарий е използване на Azure ML при преподаване на задълбочено обучениекогато вместо да дадете на всеки ученик виртуална машина с GPU, можете да създадете един клъстер, който ще се използва от всички централно. В допълнение, обща таблица с резултати с точност на модела може да служи като добър конкурентен елемент.
  • С Azure ML можете лесно да проведете серия от експерименти, например за хиперпараметрична оптимизация - това може да стане с няколко реда код, няма нужда да провеждате серия от експерименти ръчно.

Надявам се, че съм ви убедил да опитате Azure ML! Ето как да започнете:

  • Уверете се, че сте инсталирали Кода на Visual Studio, както и разширения Вход в Azure и AzureML
  • Клонирайте хранилището https://github.com/CloudAdvocacy/AzureMLStarter - съдържа някакъв демо код за обучение на модел за разпознаване на ръкописни цифри в набора от данни на MNIST.
  • Отворете клонираното хранилище в Visual Studio Code.
  • Прочетете!

Azure ML Workspace и Azure ML Portal

Azure ML е организиран около концепцията работна среда — работно пространство. Данните могат да се съхраняват в работното пространство, експериментите се изпращат към него за обучение, резултатите от обучението също се съхраняват там - получените метрики и модели. Можете да видите какво има вътре в работното пространство Azure ML портал - и оттам можете да извършвате много операции, вариращи от зареждане на данни до наблюдение на експерименти и внедряване на модели.

Можете да създадете работно пространство чрез уеб интерфейса Лазурен портал (Cm. инструкции стъпка по стъпка), или с помощта на командния ред на Azure CLI (Directions):

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

Някои също са свързани с работното пространство изчислителни ресурси (Изчисление). След като създадете скрипт за обучение на модела, можете изпрати експеримент за изпълнение към работното пространство и посочете изчислителна цел - в този случай скриптът ще бъде пакетиран, стартиран в желаната компютърна среда и след това всички резултати от експеримента ще бъдат запазени в работното пространство за по-нататъшен анализ и използване.

Скрипт за обучение за MNIST

Помислете за класическия проблем разпознаване на ръкописни цифри използвайки набора от данни MNIST. По същия начин в бъдеще можете да стартирате всеки от вашите скриптове за обучение.

В нашето хранилище има скрипт train_local.py, който обучаваме на най-простия линеен регресионен модел с помощта на библиотеката SkLearn. Разбира се, разбирам, че това не е най-добрият начин за решаване на проблема - използваме го за пример, като най-простия.

Скриптът първо изтегля MNIST данните от OpenML и след това използва класа LogisticRegression за да обучите модела и след това да отпечатате получената точност:

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)

Можете да стартирате скрипта на вашия компютър и да получите резултата след няколко секунди.

Стартирайте скрипта в Azure ML

Ако стартираме обучителния скрипт през Azure ML, ще имаме две основни предимства:

  • Провеждане на обучение на произволен изчислителен ресурс, който като правило е по-продуктивен от локалния компютър. В същото време самият Azure ML ще се погрижи да опакова нашия скрипт с всички файлове от текущата директория в докер контейнер, да инсталира необходимите зависимости и да го изпрати за изпълнение.
  • Запишете резултатите в единичен регистър в работно пространство на Azure ML. За да се възползваме от тази функция, трябва да добавим няколко реда код към нашия скрипт, за да запишем получената точност:

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

Извиква се съответната версия на скрипта train_universal.py (малко по-хитро е от написаното по-горе, но не много). Този скрипт може да се изпълнява както локално, така и на отдалечен изчислителен ресурс.

За да го стартирате в Azure ML от VS Code, трябва да направите следното:

  1. Уверете се, че разширението Azure е свързано с вашия абонамент. Изберете иконата на Azure от менюто вляво. Ако не сте свързани, в долния десен ъгъл ще се появи известие (ето го), като кликнете върху който можете да влезете през браузъра. Можете също да щракнете Ctrl-Shift-P за да извикате командния ред на VS Code и въведете Вход в Azure.

  2. След това в секцията Azure (икона вляво) намерете секцията ОБУЧЕНИЕ НА МАШИНИ:

Как да преодолеете страха и да започнете да използвате Azure Machine Learning
Тук трябва да видите различни групи обекти в работното пространство: изчислителни ресурси, експерименти и т.н.

  1. Отидете до списъка с файлове, щракнете с десния бутон върху скрипта train_universal.py и изберете Azure ML: Изпълнете като експеримент в Azure.

Как да преодолеете страха и да започнете да използвате Azure Machine Learning

  1. Това ще бъде последвано от поредица от диалогови прозорци в областта на командния ред на VS Code: потвърдете абонамента и работното пространство на Azure ML, което използвате, и изберете Създайте нов експеримент:

Как да преодолеете страха и да започнете да използвате Azure Machine Learning
Как да преодолеете страха и да започнете да използвате Azure Machine Learning
Как да преодолеете страха и да започнете да използвате Azure Machine Learning

  1. Изберете да създадете нов изчислителен ресурс Създайте ново изчисление:

    • Изчисление определя изчислителния ресурс, на който ще се провежда обучението. Можете да изберете локален компютър или облачен клъстер AmlCompute. Препоръчвам да създадете мащабируем клъстер от машини STANDARD_DS3_v2, с минимален брой машини 0 (и максимум 1 или повече, в зависимост от вашите апетити). Това може да стане чрез интерфейса на VS Code или преди това чрез ML портал.

    Как да преодолеете страха и да започнете да използвате Azure Machine Learning

  2. След това трябва да изберете конфигурация Изчислителна конфигурация, който определя параметрите на контейнера, създаден за обучение, по-специално всички необходими библиотеки. В нашия случай, тъй като използваме Scikit Learn, ние избираме SkLearnи след това просто потвърдете предложения списък с библиотеки, като натиснете Enter. Ако използвате допълнителни библиотеки, те трябва да бъдат посочени тук.

    Как да преодолеете страха и да започнете да използвате Azure Machine Learning
    Как да преодолеете страха и да започнете да използвате Azure Machine Learning

  3. Това ще отвори прозорец с JSON файл, описващ експеримента. В него можете да коригирате някои параметри - например името на експеримента. След това щракнете върху връзката Изпратете експеримент точно в този файл:

Как да преодолеете страха и да започнете да използвате Azure Machine Learning

  1. След успешно изпращане на експеримент чрез VS Code, от дясната страна на областта за уведомяване ще видите връзка към Azure ML портал, където можете да следите състоянието и резултатите от експеримента.

Как да преодолеете страха и да започнете да използвате Azure Machine Learning
Впоследствие винаги можете да го намерите в секцията Експерименти Azure ML портал, или в раздела Мазутно обучение Azure в списъка с експерименти:

Как да преодолеете страха и да започнете да използвате Azure Machine Learning

  1. Ако след това сте направили някои корекции в кода или сте променили параметрите, рестартирането на експеримента ще бъде много по-бързо и лесно. Като щракнете с десния бутон върху файл, ще видите нов елемент от менюто Повторете последното изпълнение - просто го изберете и експериментът веднага ще започне:

Как да преодолеете страха и да започнете да използвате Azure Machine Learning
Винаги можете да намерите резултатите от показателите от всички стартирания на портала на Azure ML, няма нужда да ги записвате.

Сега знаете, че провеждането на експерименти с Azure ML е лесно и безболезнено и получавате редица приятни предимства при това.

Но можете да видите и недостатъците. Например, изпълнението на скрипта отне значително повече време. Разбира се, опаковането на скрипта в контейнер и разполагането му на сървъра отнема време. Ако в същото време клъстерът беше намален до размер от 0 възли, ще отнеме още повече време за стартиране на виртуалната машина и всичко това е много забележимо, когато експериментираме с прости задачи като MNIST, които се решават за няколко секунди . Въпреки това, в реалния живот, когато обучението продължава няколко часа, или дори дни или седмици, това допълнително време става незначително, особено на фона на много по-високата производителност, която един изчислителен клъстер може да осигури.

Каква е следващата?

Надявам се, че след като прочетете тази статия, можете и ще използвате Azure ML в работата си, за да изпълнявате скриптове, да управлявате изчислителни ресурси и да съхранявате централно резултати. Azure ML обаче може да ви даде още повече предимства!

Вътре в работното пространство можете да съхранявате данни, като по този начин създавате централизирано хранилище за всички ваши задачи, което е лесно достъпно. Освен това можете да провеждате експерименти не от Visual Studio Code, а с помощта на API - това може да бъде особено полезно, ако трябва да извършите оптимизация на хиперпараметър и трябва да стартирате скрипта много пъти с различни параметри. Освен това в Azure ML е вградена специална технология Хипердрайв, което ви позволява да правите по-сложно търсене и оптимизиране на хиперпараметри. Ще говоря за тези възможности в следващата си публикация.

Полезни ресурси

За да научите повече за Azure ML, може да намерите следните курсове на Microsoft Learn за полезни:

Източник: www.habr.com

Добавяне на нов коментар