Как да използвате безплатните за използване Amazon SageMaker Studio Lab и Amazon SageMaker заедно за вашите проекти за машинно обучение

Като практикуващ машинно обучение вероятно прекарвате по-голямата част от времето си в базирана на Jupyter IDE за разработка, използвате ресурси на CPU/GPU за обучение и тестване и се нуждаете от хранилище с размер на низходящия размер за набори от данни и метаданни. Това са вашите най-основни нужди за среда за разработка на ML и SageMaker Studio Lab предоставя всичко това безплатно и се хоства в облака, така че можете да го използвате отвсякъде. Но понякога се нуждаете от нещо повече от IDE и фиксирани изчисления и съхранение. Нуждаете се от „компютърни опции“ за мащабиране или мащабиране на обучение, услуги за подготовка на данни, етикетиране, съхраняване на функции, експериментиране, мониторинг на модела, автоматизация от край до край и др. И за това служи Amazon SageMaker.

В тази публикация в блога ще обсъдя кога трябва да използвате безплатния за използване Studio Lab и кога трябва да използвате Amazon SageMaker и кога трябва да използвате и двете. Ще обсъдим 3 общи изисквания:

Потребителски сценарий 1: Искам безплатна лесна за използване среда за разработка на ML, с която мога да започна да уча/експериментирам

Потребителски сценарий 2: Искам безплатна лесна за използване среда за разработка на ML и искам да усъвършенствам моите експерименти и внедряване на модели – възможно най-лесно и евтино (пестеливо)

Потребителски сценарий 3: Искам готово за производство решение, което предлага модерна ML IDE с интегрирана визуализация, проследяване на ML експерименти, хранилище на функции, наблюдение на модела и други и предлага автоматизация на ML конвейер от край до край

Настройка 1 изисква само Studio Lab и ще обсъдя как да започнете с тази безплатна услуга. Настройка 2 изисква достъп до ресурси на SageMaker от Studio Lab. Това е най-подробният раздел от публикацията в блога и ще споделя подробни стъпки с екранни снимки за това как да настроите временни или дългосрочни идентификационни данни за AWS в Studio Lab за достъп до услугите на SageMaker. Настройка 3 изисква пълна миграция от Studio Lab към студио SageMaker, ще споделя IDE, предлагани от SageMaker и техните предимства пред Studio Lab IDE, също така ще споделя ресурси, за да извлечете максимума от SageMaker за вашите ML работни процеси.

Потребителски сценарий 1: Искам безплатна лесна за използване среда за разработка на ML, с която мога да започна да уча/експериментирам

Трябва ви:Amazon SageMaker Studio Lab

Първо и най-важно Studio Lab е вашата лична среда за разработка в облака, до която имате достъп през вашия уеб браузър и НЕ се нуждае от AWS акаунт или какъвто и да е вид плащане. Дава ви достъп до безплатни изчислителни ресурси и ресурси за съхранение и можете да избирате между 1/само CPU или 2/CPU+GPU.

  • Сесиите на процесора продължават 12 часа, в края на които ще излезете и можете да влезете отново, за да го подновите за още 12 часа.
  • GPU сесиите продължават 4 часа и можете да ги подновите за още 4 часа (общо 8 часа) в рамките на период от 24 часа.

Освен това получавате около 25 GB място за съхранение и когато превключвате между изчислителни бекендове само за CPU и CPU+GPU, вашите набори от данни и код ще се запазват в сесиите. Ако сте ентусиаст на машинното обучение, любител, обучавате се на ML през целия живот, Studio Lab е вашият перфектен партньор за провеждане на MOOCs и практикуване на pandas, PyTorch и другите ви любими рамки за наука за данни.

След като влезете, ще видите познат интерфейс на JupyterLab с красиви лилави акценти, където можете да стартирате Jupyter Notebooks, да получите достъп до терминала, да използвате Git интеграции за разработка и да инсталирате Jupyter разширения. Conda идва предварително инсталирана, която можете да използвате, за да инсталирате любимите си рамки за наука за данни и машинно обучение. Разкривам как да направя това във въведението си във видеоклипа Studio Lab:

Любимото ми нещо за Studio Lab е, че можете да го използвате за прототипиране в рамките на Studio Lab и когато имате нужда от достъп до ресурси на AWS, можете да настроите вашите идентификационни данни за AWS и получавате пълен достъп до AWS услуги, като достъп до Amazon S3 за набори от данни, обучение по още мощни графични процесори, хостинг модели, автоматизиране на ML тръбопроводи и още направо от Studio Lab. Ще ви покажа как да настроите достъп до AWS от SageMaker Studio Lab в следващия раздел.

Потребителски сценарий 2: Искам да усъвършенствам моите експерименти и да внедря модели – възможно най-лесно и евтино (пестеливо)

Необходими са ви:Amazon SageMaker Studio Lab за разработка и Amazon SageMaker за разтоварване на обучение и хостинг на модели

За да продължите да използвате Studio Lab за разработка и услугата SageMaker за обучение на модели на по-мощни графични процесори и за хостване на модели, ще трябва първо да активирате достъпа на SageMaker в Studio Lab. Както може би се досещате, ще ви трябва достъп до акаунт в AWS, за да получите достъп до услугите на AWS от Studio Lab. Можете да следвате инструкциите по-долу, за да настроите програмен достъп до Amazon SageMaker (или за този въпрос всеки AWS ресурс) от всякакви системи, като например безплатната IDE на Amazon SageMaker Studio lab (или вашия лаптоп).

Ето стъпките за свързване на Studio Lab и Amazon SageMaker:

  1. Отворете акаунт в AWS
  2. Създайте нов IAM потребител с разрешения за достъп до ресурсите на SageMaker (или други AWS ресурси, които искате) и генерирайте ключ за достъп и тайна за потребителя
  3. (по избор) създайте временен ключ за достъп и тайна
  4. Създайте IAM роля за SDK на SageMaker, която да използвате в Studio Lab
  5. Настройте достъп до Amazon SageMaker в Studio Lab
  6. Пуснете пример: Включих 3 примера в моето репо в GitHub. Ще разгледам 1 пример за хостване на модели без сървър. Останалото е домашна работа.

Стъпка 1: Отворете акаунт в AWS (пропуснете, ако вече имате такъв)

Има много налични ресурси за това как да отворите акаунт в AWS и няма да повтарям тези стъпки тук. Преминете към страницата за регистриране на акаунт в AWS, за да отворите акаунт. Това е хубава статия с указания стъпка по стъпка за това как да отворите сметка. Ще ви трябва достъп до кредитна карта, за да отворите акаунт в AWS, и ще бъдете таксувани само когато консумирате ресурси на AWS.

Стъпка 2: Създайте нов IAM потребител с разрешения за достъп до ресурсите на SageMaker

Във вашия чисто нов акаунт в AWS, моля ви първо да създадете IAM потребител. Потребител на IAM е обект, който създавате във вашия акаунт в AWS, който използвате за достъп до услугите на AWS. Ако сте единственият потребител на акаунта в AWS и искате неограничен достъп до всички услуги на AWS, тогава можете да бъдете потребител с права на администратор. Как най-добрите практики на AWS препоръчват винаги да прилагате „разрешения с най-малко привилегии“ към потребители и роли (ще стигнем до ролите след малко). Нека създадем IAM потребител с идентификационни данни за програмен достъп до услугите на Amazon SageMaker от Studio Lab.

В конзолата на AWS потърсете и щракнете върху IAM

Кликнете върху „Потребители“ в лявото меню и щракнете върху „Добавяне на потребители“

Дайте потребителско име и отметнете „Ключ за достъп — Програмен достъп“

Можете или да дадете на този потребител администраторски достъп, или да щракнете върху „Прикачване на съществуващи правила директно“ и да дадете разрешения за конкретни услуги. Нека изберем последните опции и да изберем „AmazonSageMakerFullAccess“ и „AmazonS3FullAccess“ като конкретни услуги, до които имаме достъп от Studio Lab. Ако сте единственият потребител, можете да изберете да си предоставите администраторски достъп, който ще ви позволи достъп до всяка AWS услуга от Studio Lab. Щракнете върху „Напред“ два пъти, за да пропуснете тагове. Щракнете върху Създаване на потребител

ВАЖНО: Копирайте ID на ключа за достъп и секретния ключ за достъп и ги съхранявайте на сигурно място. Ще ви е необходим за достъп до SageMaker от Studio Lab. Няма да имате достъп до тайната по-късно, ако забравите да я копирате сега!

Стартирайте aws configure в Studio Lab, за да настроите идентификационните данни за този потребител на IAM:

$ aws configure
AWS Access Key ID [None]: AKIAIOSXXXXXXEXAMPLE
AWS Secret Access Key [None]: XXXXXXXXXXMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: json
You’re all set! You can now use Amazon SageMaker features in SageMaker Studio.

Ако искате по-контролиран начин за достъп до ресурси на AWS от външна (извън AWS) услуга като Studio Lab, препоръчително е да използвате временни идентификационни данни вместо дългосрочни идентификационни данни, които сте използвали в този раздел. В стъпка 3 по-долу ще ви покажа как да създадете временни идентификационни данни от вашия личен лаптоп/настолен компютър, които изтичат и да използвате само тези в Studio Lab.

Стъпка 3: (По избор): Създайте временен ключ за достъп и секрет

Предимството на временните идентификационни данни е, че те изтичат автоматично след определен период от време и можете да създавате ключове с определена продължителност на изтичане. Лично (не е най-добра практика, просто лично предпочитание), обичам да настройвам моя локален лаптоп с AWS CLI и потребителските идентификационни данни, които получихме от Стъпка 2. Използвам това, за да генерирам временни идентификационни данни за използване на други системи като облачни IDE, като Studio Lab, крайни устройства като raspberry pi и т.н. По този начин няма да има нужда да се тревожа за неочаквано използване в бъдеще, тъй като идентификационните данни ще изтекат.

На вашия лаптоп/настолен компютър инсталирайте AWS CLI. След като инсталацията приключи, стартирайте aws configure и въведете идентификатора на AWS Access Key ID и AWS Secret Access Key, които сте получили от Стъпка 2. Кратко ръководство е в тази страница с документация. Можете да изберете региона, който е най-близо до вас географски. Например, аз съм на западния бряг на САЩ и обикновено избирам us-west-2. Забележка: не всички функции на SageMaker са налични във всички региони, можете да намерите списък с поддържани региони на страницата с цените. Изберете изходния формат като JSON — това е важно, тъй като ще копирате и поставите изхода във вашите преносими компютри Jupyter в стъпка 5.

$ aws configure
AWS Access Key ID [None]: AKIAIOSXXXXXXEXAMPLE
AWS Secret Access Key [None]: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: json

След като сте конфигурирали AWS CLI на вашата локална машина, изпълнете следното, за да генерирате временни идентификационни данни за използване в Studio Lab. Това генерира временни идентификационни данни, които изтичат след 12 часа (или 43200 секунди). Можете да зададете различна продължителност на изтичане, но 12 часа съответства на продължителността на сесията на процесорните сесии на Studio Lab, след което можете да подновите и двете заедно.

aws sts get-session-token --duration-seconds 43200

Резултатът трябва да прилича на нещо подобно:

{
“Credentials”: {
“AccessKeyId”: “ASIAWTIRCZXXXXXXXXXX”,
“SecretAccessKey”: “XXXXXXXXXXXXXXXB3j1BQFiiC/Ue5jEe”,
“SessionToken”: “<VERY LONG SESSION TOKEN>”,
“Expiration”: “2022-XX-XXTXX:XX:XX+00:00”
}

Вече можете да използвате временните идентификационни данни, генерирани във вашите преносими компютри Studio Lab, за достъп до услугите на SageMaker.

Стъпка 4: Създайте роля за изпълнение на SageMaker за SDK на SageMaker, която да използвате в Studio Lab

Когато използвате SDK на SageMaker в Studio Lab (или вашия лаптоп), за да хоствате модели или да провеждате обучение, управлявано от SageMaker, трябва да му предоставите достъп до други AWS услуги, от които се нуждае, за да прави тези неща. Роля за изпълнение, която ще създадем сега, предоставя на SageMaker специфични разрешения за използване на други AWS ресурси като EC2 (стартиране на CPU, GPU екземпляри), ECR (съхраняване и достъп до изображения на контейнери) и т.н. Имайте предвид, че това е различно от IAM потребителя, който създадохме по-рано, което ви дава разрешение за достъп до услугите на AWS. Ролята за изпълнение на SageMaker е специално за SageMaker за достъп до услугите на AWS от ваше име.

Създайте ролята за изпълнение на SageMaker с тези бързи стъпки:

В конзолата на AWS щракнете върху Роли и след това изберете Създаване на роля.

Под „Случаи на употреба за други услуги на AWS“ изберете SageMaker и щракнете върху Напред

Политиката, управлявана от IAM, AmazonSageMakerFullAccess, се прикачва автоматично към тази роля. Щракнете Напред

Дайте име на ролята (напр. SageMakerStudioLabRole) в текстовото поле под Име на роля и изберете Създаване на роля.

В секцията Роли потърсете ролята, която току-що създадохте „SageMakerStudioLabRole“ и щракнете върху нея. Копирайте ролята ARN, ще трябва да предоставим това на SDK на SageMaker, когато го използваме от Studio Lab.

Стъпка 5: Настройте достъп до Amazon SageMaker в Studio Lab

Ако сте следвали всички стъпки по-горе, трябва да имате със себе си:

  1. AWS акаунт
  2. Дългосрочни идентификационни данни за IAM роля: ID на ключ за достъп и секретен ключ за достъп
  3. (по избор) Временни идентификационни данни за IAM роля: ID на ключ за достъп и секретен ключ за достъп и токен за сесия
  4. Роля за изпълнение на SageMaker ARN

Сега се насочете към SageMaker Studio Lab, за да настроите идентификационните данни на AWS с помощта на AWS CLI (AWS CLI идва предварително инсталиран)

Опция 1:Ако сте следвали Стъпка 3 и искате да използвате дългосрочни идентификационни данни за IAM роля от Стъпка 2, отворете терминала Studio Lab и стартирайте aws configure и въведете дългосрочните идентификационни данни за ролята сте запазили от Стъпка 2. Изберете най-близкия регион до вас и изходен формат на json.

Опция 2: Ако сте следвали незадължителна стъпка 4, тогава можете да настроите временни идентификационни данни за IAM роля от (по избор) стъпка 3. За да направим това, няма да използваме aws configure за този подход, а по-скоро ще използваме тези идентификационни данни директно в Jupyter Notebook, където ще изпълните кода си, както следва. Изпълнението на следното в клетка в горната част на вашия бележник ще зададе променливите на средата с вашите временни идентификационни данни в сесията на бележника. Ще го видим в действие в следващия раздел.

credentials = {
“Credentials”: {
“AccessKeyId”: “<AWS_ACCESS_KEY_ID>”,
“SecretAccessKey”: “<AWS_SECRET_ACCESS_KEY>”,
“SessionToken”: “<AWS_SESSION_TOKEN>”,
}
}
os.environ[“AWS_ACCESS_KEY_ID”] = credentials[‘Credentials’][‘AccessKeyId’]
os.environ[“AWS_SECRET_ACCESS_KEY”] = credentials[‘Credentials’][‘SecretAccessKey’]
os.environ[“AWS_SESSION_TOKEN”] = credentials[‘Credentials’][‘SessionToken’]

Вашият първи пример: Хоствайте модели с помощта на Amazon SageMaker от Amazon SageMaker Studio Lab

Нека тестваме вашата настройка с пример. Във вашия терминал Studio Lab изпълнете следното, за да клонирате примерно хранилище в началната директория:

cd
git clone https://github.com/shashankprasanna/studiolab-access-sagemaker-examples.git

В Studio Lab отворете studiolab-sagemaker-examples > studiolab-sagemaker-tf-deploy и отворете Notebook tensorflow-serverless-inference.ipynb

Инсталирайте TensorFlow, SageMaker SDK и други пакети само при първото стартиране на този ноутбук.

Настройте вашите (незадължителни) временни идентификационни данни, описани в стъпка 5, опция 2, ако използвате дългосрочни идентификационни данни, описани в стъпка 5, опция 1, пропуснете тази клетка, но се уверете, че вече сте настроили това с aws configure

След това настройте ролята за изпълнение на SageMaker, обсъдена в стъпка 4, както е показано на екранната снимка по-горе.

Стартирайте всяка клетка, за да хоствате модел и да тествате крайната точка на модела от Studio Lab, хостван от SageMaker.

Почистете ресурсите, които използвате, за да не начислявате допълнителни такси за акаунта си в AWS. Изтрийте както крайната точка (ако вече не ви трябва), така и S3 артефактите

Можете също така да опитате 2 други примера, които включих в моето GitHub репо за тази публикация в блога:

Потребителски сценарий 3: Искам готово за производство решение, което предлага проследяване на ML експерименти, съхраняване на функции, наблюдение на модела, вградена визуализация и други и предлага автоматизация от край до край

Amazon SageMaker е напълно управлявана сервизна част от акаунт в AWS, която включва избор на IDE, потребителски интерфейс с нисък код и без код, етикетиране и обработка на данни, широк избор на процесори, графични процесори и опции за съхранение за обучение, изводи и мащабиране, край автоматизация от край с помощта на MLOps практики и много повече. Плащате в момента, както всяка друга услуга на AWS.

Amazon SageMaker предлага две отделни решения за среда за разработка като част от своя набор от възможности:

  1. Екземпляри на преносими компютри на Amazon SageMaker:Екземплярите на преносими компютри на SageMaker, като безплатната Studio Lab, предлагат хоствана услуга на JupyterLab, но разликата е, че можете да изберете какъв тип копие на CPU или GPU искате от голям списък с поддържани типове екземпляри, включително екземпляри с един и няколко GPU и екземпляри на CPU с голям брой vCPU за многонишкови приложения. Този избор на изчислителен бекенд е свързан с вашия екземпляр на Notebook и не може да го промени, без да изключите вашия екземпляр. Можете да намерите поддържания списък и цени тук. Ако създавате свои собствени персонализирани Docker контейнери, това е препоръчителната среда за разработка за вас. Тъй като Studio Lab вече работи в среда на контейнер, не можете да го използвате за изграждане на вложени Docker контейнери.
  2. Amazon SageMaker Studio:Amazon SageMaker Studio Notebooks, като безплатните Studio Lab и Notebook Instances, предлагат хоствани услуги на JupyterLab и разликата е, че можете да превключвате CPU и GPU бекендове динамично по време на употреба. Ако използвате лаптопа си с бекенд само с процесор, можете да превключите към бекенд с GPU с няколко щраквания. Освен това той предлага множество подобрения с посочване и щракване спрямо стандартния JupyterLab за управление на експерименти, AutoML, внедряване на модел, управление на конвейер и др.

Документацията на AWS съдържа пълно ръководство за мигриране на вашия код и бележници от Studio Lab към екземпляри на SageMaker Notebook или SageMaker Studio. Страхотно място да започнете да използвате SageMaker Studio е тази Уеб страница с документация на Studio Tour. И официалното хранилище за примери на SageMaker.

Писах за това как да управлявам ML експерименти в Studio и как да отстранявам грешки в модели с помощта на Studio тук:

Управление на експерименти със SageMaker Studio:



Отстраняване на грешки в модели със SageMaker Studio:



Препоръка за изводи със SageMaker Studio

Компилатор за обучение със SageMaker Studio

Извод без сървър със SageMaker Studio

Заключение

За да обобщим препоръките:

  • Имам нужда от безплатна среда за разработка на ML в облака
    Имате нужда от: SageMaker Studio Lab
  • Имам нужда от безплатна среда за разработка на ML в облака и искам да прехвърля обучението и внедряването на по-мощен графичен процесор (GPU клъстери) и да получа услуги за достъп, за да помогна за управлението на ML тръбопроводи.
    Имате нужда от: SageMaker Studio Lab за разработка и услуги на Amazon SageMaker за всичко останало
  • Имам нужда от по-мощна, гъвкава и модерна среда за разработка на ML, която поддържа превключване на задния край на CPU/GPU, интегрирано наблюдение, проследяване на експерименти, визуализация и потребителски интерфейс без код
    Имате нужда от: Amazon SageMaker за целия ви работен процес на ML

Ако все още нямате безплатен за използване акаунт в Studio Lab, можете да поискате безплатен акаунт тук: https://studiolab.sagemaker.aws/requestAccount. Ако нямате AWS акаунт, можете да отворите „безплатен AWS акаунт“ и „следвайте инструкциите тук“, за да започнете.

ВАЖНО: Безплатният акаунт в AWS предлага само определени ресурси безплатно за ограничена употреба. МОЖЕТЕ да получите такса за използване на услуги, които не са обхванати от безплатното ниво, или за превишаване на ограничението за безплатно ниво за тази услуга. Силно препоръчвам да настроите бюджет на AWS с известия, за да останете в рамките на целевия си бюджет

Ако сте намерили тази статия за интересна, помислете дали да ме последвате в Medium. Публикувам много по-задълбочени ръководства за машинно обучение, обхващащи разпределено обучение, управление на експерименти, отстраняване на грешки, избор на графични процесори и други. Можете също да ме последвате в twitter (@shshnkp), LinkedIn или да оставите коментар по-долу. Искате ли да пиша по конкретна тема за машинно обучение? Ще се радвам да чуя от вас!