Поступове навчання за допомогою Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Додаткове навчання за допомогою Amazon SageMaker JumpStart

У грудні 2020, AWS оголосила про загальну доступність Amazon SageMaker JumpStart, здатність Amazon SageMaker який допоможе вам швидко та легко розпочати роботу з машинним навчанням (ML). SageMaker JumpStart забезпечує тонке налаштування одним кліком та розгортання широкого спектру попередньо навчених моделей для популярних завдань ML, а також вибір наскрізних рішень, які вирішують типові бізнес-проблеми. Ці функції знімають важку роботу з кожного кроку процесу ML, полегшуючи розробку високоякісних моделей і скорочуючи час до розгортання.

Весь вміст JumpStart раніше був доступний лише через Студія Amazon SageMaker, який передбачає a зручний графічний інтерфейс взаємодіяти з функцією. Нещодавно ми також оголосив про запуск простий у використанні API JumpStart як розширення SageMaker Python SDK, що дозволяє програмно розгортати та точно налаштовувати широкий вибір попередньо навчених моделей, що підтримуються JumpStart, у ваших власних наборах даних. Цей запуск розблокує використання можливостей JumpStart у ваших робочих процесах коду, конвеєрах MLOps та будь-де, де ви взаємодієте з SageMaker через SDK.

У цій публікації ми раді повідомити, що всі моделі JumpStart, які можна навчати, тепер підтримують додаткове навчання. Додаткове навчання дозволяє тренувати модель, яку ви вже налаштували, використовуючи розширений набір даних, який містить базовий шаблон, не врахований під час попередніх запусків тонкого налаштування, що призвело до низької продуктивності моделі. Додаткове навчання економить час і ресурси, оскільки вам не потрібно перенавчати модель з нуля. Якщо ви хочете перейти безпосередньо до коду JumpStart API, який ми пояснюємо в цій публікації, ви можете звернутися до зразок зошита.

Огляд JumpStart

JumpStart — це багатогранний продукт, який включає різні можливості, які допоможуть вам швидко розпочати роботу з машинним навчанням на SageMaker. На момент написання статті JumpStart дозволяє робити наступне:

  • Розгортайте попередньо навчені моделі для поширених завдань ML – JumpStart дозволяє вирішувати звичайні завдання ML без зусиль для розробки, забезпечуючи легке розгортання моделей, попередньо навчених на великих, загальнодоступних наборах даних. Дослідницька спільнота ML доклала багато зусиль, щоб зробити більшість нещодавно розроблених моделей загальнодоступними для використання; JumpStart містить колекцію з понад 300 моделей, які охоплюють 15 найпопулярніших завдань ML, таких як виявлення об’єктів, класифікація тексту та генерація тексту, що полегшує їх використання для новачків. Ці моделі взяті з популярних центрів моделей, таких як TensorFlow, PyTorch, Hugging Face і MXNet Hub.
  • Точна настройка попередньо навчених моделей – JumpStart дозволяє точно налаштувати попередньо навчені моделі без необхідності писати власний алгоритм навчання. У ML називається здатність передавати знання, засвоєні в одній області, в іншу трансферне навчання. Ви можете використовувати навчання з перенесенням для створення точних моделей на ваших менших наборах даних із набагато нижчими витратами на навчання, ніж ті, які пов’язані з навчанням вихідної моделі. JumpStart також включає популярні алгоритми навчання, засновані на LightGBM, CatBoost, XGBoost і Scikit-learn, які ви можете тренувати з нуля для табличної регресії та класифікації.
  • Використовуйте готові рішення – JumpStart надає набір із 17 рішень для звичайних випадків використання ML, таких як прогнозування попиту та промислові та фінансові додатки, які можна розгорнути лише кількома клацаннями. Рішення — це наскрізні програми ML, які об’єднують різні служби AWS для вирішення конкретного випадку використання бізнесу. Вони використовують AWS CloudFormation шаблони та еталонні архітектури для швидкого розгортання, що означає, що їх можна повністю налаштувати.
  • Використовуйте приклади блокнотів для алгоритмів SageMaker – SageMaker надає набір вбудованих алгоритмів, які допомагають науковцям з даних і практикам ML швидко розпочати навчання та розгортати моделі машинного навчання. JumpStart надає зразки блокнотів, які можна використовувати для швидкого застосування цих алгоритмів.
  • Перегляньте навчальні відео та блоги – JumpStart також надає численні публікації в блозі та відео, які навчають вас, як використовувати різні функції в SageMaker.

JumpStart приймає користувацькі налаштування VPC і Служба управління ключами AWS (AWS KMS) ключі шифрування, щоб ви могли безпечно використовувати доступні моделі та рішення в корпоративному середовищі. Ви можете передати свої параметри безпеки в JumpStart в Studio або через SageMaker Python SDK.

Класифікація зображень

Класифікація зображень відноситься до класифікації зображення в одній із міток класів у наборі навчальних даних. Ви можете точно налаштувати модель на будь-який набір даних, що містить зображення, що належать до будь-якої кількості класів. Модель, доступна для точного налаштування на JumpStart, додає шар класифікації до відповідної моделі витягувача ознак і ініціалізує параметри шару до випадкових значень. Вихідний розмір шару класифікації визначається на основі кількості класів у вхідних даних. Крок точного налаштування налаштовує параметри шару класифікації, зберігаючи при цьому параметри моделі витягувача ознак замороженими, і повертає точно налаштовану модель. Мета полягає в тому, щоб мінімізувати помилку передбачення на вхідних даних.

Для нашого набору даних вхідним є каталог з такою кількістю підкаталогів, скільки класів. Кожен підкаталог повинен мати зображення, що належать до цього класу, у форматі .jpg. Вхідний каталог має виглядати як така ієрархія, якщо навчальні дані містять зображення з двох класів: roses та dandelion:

input_directory |--roses |--abc.jpg |--def.jpg |--dandelion |--ghi.jpg |--jkl.jpg

Назви папок, класів і файлів .jpg можуть бути будь-якими.

Ми надаємо tf_flowers1 набір даних як набір даних за замовчуванням для точного налаштування моделі. Цей набір даних містить зображення п’яти видів квітів. Набір даних завантажено з TensorFlow.

Покроковий огляд

У наступних розділах представлено покрокову демонстрацію для виконання класифікації зображень за допомогою JumpStart, як через інтерфейс інтерфейсу Studio, так і JumpStart API.

Ми проходимо наступні кроки:

  1. Доступ до JumpStart через інтерфейс користувача Studio:
    1. Налаштуйте попередньо підготовлену модель.
    2. Розгорніть налаштовану модель.
    3. Поступово навчайте налаштовану модель і перерозгортайте її.
  2. Використовуйте JumpStart програмно з SageMaker Python SDK:
    1. Налаштуйте попередньо підготовлену модель.
    2. Розгорніть налаштовану модель.
    3. Поступово навчайте налаштовану модель і перерозгортайте її.

Отримайте доступ до JumpStart через інтерфейс користувача Studio

У цьому розділі ми продемонструємо, як точно налаштувати та розгорнути моделі JumpStart через інтерфейс користувача Studio. Крім того, ми показуємо, як поступово тренувати модель, яку ви раніше точно налаштували.

Налаштуйте попередньо підготовлену модель

У наступному відео показано, як знайти попередньо навчену модель класифікації зображень на JumpStart та налаштувати її. Сторінка моделі містить цінну інформацію про модель, як її використовувати, очікуваний формат даних та деякі деталі тонкого налаштування.

Для демонстраційних цілей ми тонко налаштовуємо модель, використовуючи набір даних, наданий за замовчуванням, який є tf_flowers набір даних, що складається з різних сортів квітів. Точне налаштування вашого власного набору даних включає правильне форматування даних (як пояснюється на сторінці моделі), завантаження їх на Служба простого зберігання Amazon (Amazon S3) і вказавши його розташування в конфігурації джерела даних.

Ми використовуємо ті самі значення гіперпараметрів, встановлені за замовчуванням (кількість епох, швидкість навчання та розмір пакету). Ми також використовуємо екземпляр ml.p3.2xlarge з підтримкою GPU як навчальний екземпляр SageMaker.

Ви можете контролювати свою навчальну роботу безпосередньо на консолі Studio та отримувати сповіщення про її завершення.

Розгорніть налаштовану модель

Після завершення навчання ви можете розгорнути налаштовану модель з тієї ж сторінки, де зберігаються відомості про завдання навчання. Щоб розгорнути нашу модель, ми вибираємо інший тип екземпляра, ml.p2.xlarge. Він як і раніше забезпечує прискорення графічного процесора, необхідне для низької затримки висновку, але за нижчою ціною. Після налаштування екземпляра хостингу SageMaker виберіть Розгортання. Може знадобитися 5–10 хвилин, перш ніж ваша постійна кінцева точка запрацює.

Тоді ваша кінцева точка працює і готова відповісти на запити висновку!

Щоб прискорити ваш час, щоб зробити висновок, JumpStart надає зразок блокнота, який показує вам, як виконувати висновки на вашій щойно розгорнутій кінцевій точці. Виберіть Відкрийте Блокнот при Використовуйте кінцеву точку від студії.

Поступово навчайте налаштовану модель та розгортайте її

Після завершення тонкого налаштування ви можете додатково тренувати модель для підвищення продуктивності. Цей крок дуже схожий на початковий процес тонкого налаштування, за винятком того, що ми використовуємо вже точно налаштовану модель як відправну точку. Ви можете використовувати нові дані, але формат набору даних має бути таким же (той самий набір класів).

Використовуйте JumpStart програмно з SageMaker SDK

У попередніх розділах ми показали, як можна використовувати інтерфейс користувача JumpStart для тонкої настройки, розгортання та поступового навчання моделі в інтерактивному режимі за кілька кліків. Ви також можете використовувати моделі JumpStart і легко налаштовувати програмно за допомогою API, інтегрованих у SageMaker SDK. Тепер ми розглянемо короткий приклад того, як ви можете повторити попередній процес. Усі кроки цієї демонстрації доступні в доданих блокнотах Вступ до JumpStart – Класифікація зображень.

Налаштуйте попередньо підготовлену модель

Щоб точно налаштувати вибрану модель, нам потрібно отримати URI цієї моделі, а також сценарій навчання та зображення контейнера, яке використовується для навчання. На щастя, ці три параметри залежать виключно від назви моделі, версії (перелік доступних моделей див. JumpStart Таблиця доступних моделей), і тип екземпляра, на якому ви хочете тренуватися. Це демонструється в наступному фрагменті коду:

from sagemaker import image_uris, model_uris, script_uris model_id, model_version = "pytorch-ic-mobilenet-v2", "1.0.0"
training_instance_type = "ml.p3.2xlarge" # Retrieve the docker image
train_image_uri = image_uris.retrieve( region=None, framework=None, model_id=model_id, model_version=model_version, image_scope="training", instance_type=training_instance_type,
) # Retrieve the training script
train_source_uri = script_uris.retrieve(model_id=model_id, model_version=model_version, script_scope="training") # Retrieve the pre-trained model tarball to further fine-tune
train_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="training")

Ми отримуємо model_id відповідає тій же моделі, яку ми використовували раніше. ic в ідентифікаторі відповідає класифікації зображень.

Тепер ви можете точно налаштувати цю модель JumpStart на своєму власному наборі даних за допомогою SageMaker SDK. Ми використовуємо те ж саме tf_flowers набір даних, який публічно розміщено на Amazon S3, зручно зосереджений на аналізі настроїв. Ваш набір даних має бути структурований для точного налаштування, як описано в попередньому розділі. Перегляньте наведений нижче приклад коду:

# URI of your training dataset
training_dataset_s3_path = "s3://jumpstart-cache-prod-us-west-2/training-datasets/tf_flowers/"
training_job_name = name_from_base(f"jumpstart-example-{model_id}-transfer-learning") # Create SageMaker Estimator instance
ic_estimator = Estimator( role=aws_role, image_uri=train_image_uri, source_dir=train_source_uri, model_uri=train_model_uri, entry_point="transfer_learning.py", instance_count=1, instance_type=training_instance_type, max_run=360000, hyperparameters=hyperparameters, output_path=s3_output_location,
) # Launch a SageMaker Training job by passing s3 path of the training data
ic_estimator.fit({"training": training_dataset_s3_path}, logs=True)

Ми отримуємо ті самі гіперпараметри за замовчуванням для нашої обраної моделі, що й ті, які ми бачили в попередньому розділі, використовуючи sagemaker.hyperparameters.retrieve_default(). Потім ми створюємо екземпляр оцінювача SageMaker і викликаємо метод .fit, щоб почати точне налаштування нашої моделі, передаючи їй URI Amazon S3 для наших навчальних даних. Як бачите, entry_point наданий сценарій називається transfer_learning.py (те саме для інших завдань і моделей), а вхідний канал даних передається до .fit повинен бути названий training.

Розгортання налаштованої моделі

Після завершення навчання ви можете розгорнути свою налаштовану модель. Для цього все, що нам потрібно отримати, це URI сценарію висновку (код, який визначає, як модель використовується для висновку після розгортання) і URI зображення контейнера висновку, який містить відповідний сервер моделі для розміщення вибраної нами моделі. Дивіться наступний код:

# Retrieve the inference docker container uri
deploy_image_uri = image_uris.retrieve( region=None, framework=None, image_scope="inference", model_id=model_id, model_version=model_version, instance_type=inference_instance_type,
)
# Retrieve the inference script uri
deploy_source_uri = script_uris.retrieve( model_id=model_id, model_version=model_version, script_scope="inference"
) endpoint_name = name_from_base(f"jumpstart-example-FT-{model_id}-") # Use the estimator from the previous step to deploy to a SageMaker endpoint
finetuned_predictor = ic_estimator.deploy( initial_instance_count=1, instance_type=inference_instance_type, entry_point="inference.py", image_uri=deploy_image_uri, source_dir=deploy_source_uri, endpoint_name=endpoint_name,
)

Через кілька хвилин наша модель розгорнута, і ми можемо отримати від неї прогнози в реальному часі!

Далі ми викликаємо кінцеву точку, щоб передбачити, які типи квітів існують у прикладі зображення. Ми використовуємо query_endpoint та parse_response допоміжні функції, які визначені в доп ноутбук.

query_response = finetuned_predictor.predict( img, {"ContentType": "application/x-image", "Accept": "application/json;verbose"} )
model_predictions = json.loads(query_response)
predicted_label = model_predictions["predicted_label"]
display( HTML( f'<img src={image_filename} alt={image_filename} align="left" style="width: 250px;"/>' f"<figcaption>Predicted Label: {predicted_label}</figcaption>" )
)

Поступово навчайте налаштовану модель і перерозгортайте її

Ми можемо підвищити продуктивність точно налаштованої моделі шляхом подальшого навчання її на нових зображеннях. Для цього можна використовувати будь-яку кількість нових або старих зображень, однак формат набору даних повинен залишатися незмінним (той самий набір класів). Крок поступового навчання подібний до процесу точного налаштування, з важливою відмінністю: під час початкового тонкого налаштування ми починаємо з попередньо навченої моделі, тоді як під час додаткового навчання ми починаємо з існуючої точно налаштованої моделі. Дивіться наступний код:

last_trained_model_path = f"{s3_output_location}/{last_training_job_name}/output/model.tar.gz"
incremental_s3_output_location = f"s3://{output_bucket}/{incremental_output_prefix}/output"incremental_train_estimator = Estimator( role=aws_role, image_uri=train_image_uri, source_dir=train_source_uri, model_uri=last_trained_model_path, entry_point="transfer_learning.py", instance_count=1, instance_type=training_instance_type, max_run=360000, hyperparameters=hyperparameters, output_path=incremental_s3_output_location, base_job_name=incremental_training_job_name,
) incremental_train_estimator.fit({"training": training_dataset_s3_path}, logs=True)

Після завершення навчання ми можемо використовувати ті самі кроки, що описані в попередньому розділі, щоб розгорнути модель.

Висновок

JumpStart — це можливість в SageMaker, яка дозволяє швидко розпочати роботу з машинним навчанням. JumpStart використовує попередньо навчені моделі з відкритим кодом для вирішення поширених проблем ML, таких як класифікація зображень, виявлення об’єктів, класифікація тексту, класифікація пар речень та відповіді на запитання.

У цій публікації ми показали вам, як точно налаштувати та розгорнути попередньо навчену модель класифікації зображень. Ми також показали, як поступово навчити налаштовану модель для класифікації зображень. За допомогою JumpStart ви можете легко виконати цей процес без необхідності кодування. Спробуйте рішення самостійно та повідомте нам, як воно відбувається, у коментарях. Щоб дізнатися більше про JumpStart, перегляньте відео AWS re:Invent 2020 Почніть роботу з ML за лічені хвилини з Amazon SageMaker JumpStart.

посилання

  1. Команда TensorFlow, 2019

Про авторів

Поступове навчання за допомогою Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Доктор Вівек Мадан є вченим-прикладником у команді Amazon SageMaker JumpStart. Він отримав ступінь доктора філософії. з Університету Іллінойсу в Урбана-Шампейн і був докторантом у технічному університеті Джорджії. Він є активним дослідником у галузі машинного навчання та розробки алгоритмів і опублікував статті на конференціях EMNLP, ICLR, COLT, FOCS та SODA.

Поступове навчання за допомогою Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Жоао Моура є архітектором-спеціалістом з рішень AI/ML у Amazon Web Services. Він переважно зосереджений на прикладах використання НЛП і допомагає клієнтам оптимізувати навчання та розгортання моделі глибокого навчання. Він також є активним прихильником рішень ML з низьким кодом і спеціалізованого обладнання для ML.

Поступове навчання за допомогою Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Доктор Ашиш Хетан є старшим вченим-прикладником с Amazon SageMaker JumpStart та Вбудовані алгоритми Amazon SageMaker і допомагає розробляти алгоритми машинного навчання. Він є активним дослідником у галузі машинного навчання та статистичного висновку та опублікував багато робіт на конференціях NeurIPS, ICML, ICLR, JMLR, ACL та EMNLP.

Часова мітка:

Більше від AWS Машинне навчання