Yuav ua li cas kov yeej kev ntshai thiab pib siv Azure Machine Learning

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

Tau kawg, peb txhua tus tau hnov ​​​​txog Azure Tshuab Kawm — специальную облачную платформу для машинного обучения. Однако после первого же взгляда на zaj lus qhia, создаётся впечатление, что Azure ML создаст вам больше проблем, чем решит. Например, в упомянутом выше обучающем примере обучение на Azure ML запускается из Jupyter Notebook, при этом сам обучающий скрипт предлагается создавать и редактировать как текстовый файл в одной из ячеек — при этом не используя автодополнение, подсветку синтаксиса и другие преимущества нормальной среды разработки. По этой причине мы долгое время всерьез не использовали Azure ML в своей работе.

Txawm li cas los xij, tsis ntev los no kuv tau pom txoj hauv kev los pib siv Azure ML zoo hauv kuv txoj haujlwm! Xav paub ntau ntxiv?

Yuav ua li cas kov yeej kev ntshai thiab pib siv Azure Machine Learning

Основной секрет — это Visual Studio Code txuas ntxiv rau Azure ML. Оно позволяет вам разрабатывать обучающие скрипты прямо в VS Code, используя все преимущества среды — при этом вы можете даже запускать скрипт локально, а затем просто взять и отправить его на обучение в кластере Azure ML несколькими щелчками мыши. Удобно, не правда ли?

При этом вы получаете следующие преимущества от использования Azure ML:

  • Koj tuaj yeem ua haujlwm feem ntau hauv zos ntawm koj lub tshuab hauv IDE yooj yim, thiab использовать GPU только для обучения модели. При этом пул обучающих ресурсов может автоматически подстраиваться под требуемую нагрузку, и установив минимальное количество узлов в 0 вы сможете автоматически запускать виртуалку "по требованию" при наличии обучающих заданий.
  • Koj tuaj yeem ua tau хранить все результаты обучения в одном месте, включая достигнутые метрики и полученные модели — нет необходимости самому придумывать какую-то систему или порядок для хранения всех результатов.
  • Yog li над одним проектом могут работать несколько человек — они могут использовать один и тот же вычислительный кластер, все эксперименты будут при этом выстраиваться в очередь, а также они могут видеть результаты экспериментов друг друга. Одним из таких сценариев является использование Azure ML в преподавании Deep Learning, когда вместо того, чтобы давать каждому студенту виртуальную машину с GPU, вы можете создать один кластер, который будет использоваться всеми централизованно. Кроме того, общая таблица результатов с точностью модели может служить хорошим соревновательным элементом.
  • С помощью Azure ML можно легко проводить серии экспериментов, например, для оптимизации гиперпараметров — это можно делать несколькими строчками кода, нет необходимости проводить серии экспериментов вручную.

Надеюсь, я убедил вас попробовать Azure ML! Вот как можно начать:

Azure ML Workspace и Azure ML Portal

Azure ML tau teeb tsa nyob ib puag ncig lub tswv yim thaj chaw ua haujlwm — Workspace. В рабочей области могут храниться данные, в неё отправляют эксперименты для обучения, там же хранятся результаты обучения — полученные метрики и модели. Посмотреть, что находится внутри рабочей области, можно через портал Azure ML - thiab los ntawm qhov ntawd koj tuaj yeem ua tau ntau yam haujlwm, los ntawm kev thauj cov ntaub ntawv mus rau kev soj ntsuam kev sim thiab siv cov qauv.

Создать рабочую область можно через веб-интерфейс Azure Portal (saib cov lus qhia step-by-step), lossis siv Azure CLI kab hais kom ua (cov lus qhia):

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

С рабочей областью связаны также некоторые suav cov peev txheej (Compute). Создав скрипт для обучения модели, вы можете xa ib qho kev sim rau kev ua tiav mus rau thaj chaw ua haujlwm, thiab qhia meej xam phiaj — при этом скрипт будет упакован, запущен в нужной вычислительной среде, а затем все результаты эксперимента будут сохранены в рабочей области для дальнейшего анализа и использования.

Обучающий скрипт для MNIST

Рассмотрим классическую задачу sau tus lej cim с использованием набора данных MNIST. Аналогично в дальнейшем вы сможете выполнять любые свои обучающие скрипты.

Muaj ib tsab ntawv hauv peb lub chaw khaws cia train_local.py, uas cob qhia cov qauv kab rov tav yooj yim tshaj plaws siv lub tsev qiv ntawv SkLearn. Tau kawg, kuv nkag siab tias qhov no tsis yog qhov zoo tshaj plaws los daws qhov teeb meem - peb siv nws ua piv txwv, raws li qhov yooj yim tshaj plaws.

Tsab ntawv thawj zaug rub tawm MNIST cov ntaub ntawv los ntawm OpenML thiab tom qab ntawd siv cov chav kawm 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)

Koj tuaj yeem khiav cov ntawv hauv koj lub computer thiab hauv ob peb feeb koj yuav tau txais qhov tshwm sim.

Запускаем скрипт в Azure ML

Если же мы будем запускать скрипт на обучение через Azure ML, у нас будет два основных преимущества:

  • Запуск обучения на произвольном вычислительном ресурсе, который, как правило, более производительный, чем локальный компьютер. При этом Azure ML сам позаботится о том, чтобы упаковать наш скрипт со всеми файлами из текущей директории в docker-контейнер, установить требуемые зависимости, и отправить его на выполнение.
  • Запись результатов в единый реестр внутри рабочей области Azure ML. Чтобы воспользоваться этой возможностью, нам нужно добавить пару строчек кода к нашему скрипту для записи результирующей точности:

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

Qhov sib thooj ntawm tsab ntawv yog hu ua train_universal.py (nws yog me ntsis cunningly tsim dua li piav saum toj no, tab sis tsis ntau). Tsab ntawv no tuaj yeem ua haujlwm ob qho tib si hauv zos thiab ntawm cov chaw muab kev pabcuam hauv chaw taws teeb.

Чтобы запустить его в Azure ML из VS Code, надо проделать следующее:

  1. Убедитесь, что Azure Extension подключено к вашей подписке. Выберите иконку Azure в меню слева. Если вы не подключены, в правом нижнем углу появится уведомление (zoo li no), los ntawm txhaj rau qhov uas koj tuaj yeem nkag mus hauv browser. Koj tuaj yeem nias Ctrl-Shift-P qhib VS Code kab hais kom ua, thiab ntaus Azure Sign In.

  2. Tom qab ntawd, hauv ntu Azure (icon ntawm sab laug), nrhiav ntu TSHUAB KAWM:

Yuav ua li cas kov yeej kev ntshai thiab pib siv Azure Machine Learning
Здесь вы должны видеть разные группы объектов внутри рабочей области: вычислительные ресурсы, эксперименты и т.д.

  1. Перейдите к списку файлов, нажмите правой кнопкой на скрипте train_universal.py thiab xaiv Azure ML: Run as experiment in Azure.

Yuav ua li cas kov yeej kev ntshai thiab pib siv Azure Machine Learning

  1. Qhov no yuav ua raws li cov lus sib tham hauv VS Code hais kom ua kab: paub meej tias koj qhov kev tso npe thiab Azure ML chaw ua haujlwm, thiab xaiv Create new experiment:

Yuav ua li cas kov yeej kev ntshai thiab pib siv Azure Machine Learning
Yuav ua li cas kov yeej kev ntshai thiab pib siv Azure Machine Learning
Yuav ua li cas kov yeej kev ntshai thiab pib siv Azure Machine Learning

  1. Xaiv los tsim ib qho kev siv computer tshiab Tsim Cov Qauv Tshiab:

    • Compute определяет вычислительный ресурс, на котором будет происходить обучение. Вы можете выбрать локальный компьютер, или облачный кластер AmlCompute. Я рекомендую создать масштабируемый кластер машин STANDARD_DS3_v2, с минимальным числом машин 0 (а максимальное может быть 1 или больше, в зависимости от ваших аппетитов). Это можно сделать через интерфейс VS Code, или предварительно через ML Portal.

    Yuav ua li cas kov yeej kev ntshai thiab pib siv Azure Machine Learning

  2. Tom ntej no koj yuav tsum xaiv ib tug configuration Compute Configuration, uas txhais cov kev txwv ntawm lub thawv tsim rau kev cob qhia, tshwj xeeb, tag nrho cov tsev qiv ntawv tsim nyog. Hauv peb qhov xwm txheej, txij li peb tab tom siv Scikit Kawm, peb xaiv SkLearn, и затем просто подтверждаем предложенный список библиотек нажатием Enter. Если вы используете какие-то дополнительные библиотеки — их необходимо здесь указать.

    Yuav ua li cas kov yeej kev ntshai thiab pib siv Azure Machine Learning
    Yuav ua li cas kov yeej kev ntshai thiab pib siv Azure Machine Learning

  3. Tom qab no, lub qhov rais yuav qhib nrog JSON cov ntaub ntawv piav qhia qhov kev sim. Koj tuaj yeem kho qee qhov ntsuas hauv nws, piv txwv li, lub npe ntawm qhov kev sim. Tom qab ntawd nyem rau ntawm qhov txuas Xa kev sim nyob rau hauv cov ntaub ntawv no:

Yuav ua li cas kov yeej kev ntshai thiab pib siv Azure Machine Learning

  1. После успешной подачи эксперимента через VS Code, справа в области уведомлений вы увидите ссылку на Azure ML Portal, на которой сможете отслеживать статус и результаты эксперимента.

Yuav ua li cas kov yeej kev ntshai thiab pib siv Azure Machine Learning
Tom qab ntawd, koj tuaj yeem pom nws nyob hauv ntu Kev sim Azure ML Portal, los yog hauv seem Azure Tshuab Kawm в списке экспериментов:

Yuav ua li cas kov yeej kev ntshai thiab pib siv Azure Machine Learning

  1. Yog tias koj tom qab ua qee qhov kev hloov kho rau cov cai lossis hloov pauv tsis tau, rov ua qhov kev sim yuav sai dua thiab yooj yim dua. Los ntawm txoj cai-nias ntawm cov ntaub ntawv, koj yuav pom cov ntawv qhia zaub mov tshiab Rov ua dua qhov kawg - tsuas yog xaiv nws thiab qhov kev sim yuav pib tam sim:

Yuav ua li cas kov yeej kev ntshai thiab pib siv Azure Machine Learning
Koj tuaj yeem pom cov txiaj ntsig tau los ntawm txhua qhov kev khiav ntawm Azure ML Portal; tsis tas yuav sau lawv.

Теперь вы знаете, что запускать эксперименты с помощью Azure ML — это просто и безболезненно, и при этом вы получаете ряд приятных преимуществ.

Но вы могли заметить и недостатки. Например, для запуска скрипта потребовалось существенно больше времени. Конечно, для упаковки скрипта в контейнер и разворачивания его на сервере требуется время. Если при этом кластер был урезан до размера в 0 узлов — потребуется ещё больше времени для запуска виртуальной машины, и всё это очень заметно, когда мы экспериментируем на простых задачах типа MNIST, которые решаются за несколько секунд. Однако, в реальной жизни, когда обучение длится несколько часов, а то и дней или недель, это дополнительное время становится несущественным, особенно на фоне сильно более высокой производительности, которую может дать вычислительный кластер.

Yuav ua li cas yog tom ntej no?

Я надеюсь, что после прочтения этой статьи вы сможете и будете использовать Azure ML в своей работе для запуска скриптов, управления вычислительными ресурсами и централизованного хранения результатов. Однако Azure ML может предоставить вам ещё больше преимуществ!

Koj tuaj yeem khaws cov ntaub ntawv hauv qhov chaw ua haujlwm, yog li tsim kom muaj qhov chaw khaws cia rau txhua qhov haujlwm uas yooj yim nkag mus. Tsis tas li ntawd, koj tuaj yeem khiav cov kev sim siv API tsis yog Visual Studio Code - qhov no tuaj yeem pab tau tshwj xeeb yog tias koj xav tau kev ua kom zoo dua hyperparameter thiab yuav tsum tau khiav cov ntawv ntau zaus nrog qhov sib txawv. Ntxiv mus, cov cuab yeej tshwj xeeb tau tsim rau hauv Azure ML Ntshav ceev, uas tso cai rau ntau sophisticated nrhiav thiab optimization ntawm hyperparameters. Kuv yuav tham txog qhov muaj peev xwm no hauv kuv cov ntawv tom ntej.

Cov Khoom Siv Muaj Txiaj Ntsig

Для более подробного изучения Azure ML, вам могут пригодиться следующие курсы Microsoft Learn:

Tau qhov twg los: www.hab.com

Ntxiv ib saib