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

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

Разбира се, всички чухме за Azure Machine Learning — специализирана облачна платформа за машинно обучение. Но след като я погледнеш за първи път, въведените статии, създават впечатление, че 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 Code, както и разширенията Azure Sign In и Azure ML
  • Клонирайте репозитория https://github.com/CloudAdvocacy/AzureMLStarter — той съдържа демонстрационен код за обучение на модел за разпознаване на ръкописни цифри на набора от данни MNIST.
  • Отворете клонирания репозиторий във Visual Studio Code.
  • Четете нататък!

Azure ML Workspace и Azure ML Portal

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

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

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

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

Обучаващ скрипт за 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(mnist['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('Обща точност:', acc)

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

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

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

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

from azureml.core.run import Run
...
try:
    run = Run.get_submitted_run()
    run.log('точност', acc)
except:
    pass

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

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

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

  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. Изберете създаване на нов изчислителен ресурс Създаване на ново изчисление:

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

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

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

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

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

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

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

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

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

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

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

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

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

Какво следва?

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

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

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

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

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

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster