Постепенное обучение с помощью Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Дополнительное обучение с помощью Amazon SageMaker JumpStart

В декабре 2020, AWS объявила об общедоступности Amazon SageMaker JumpStart, способность Создатель мудреца Амазонки который поможет вам быстро и легко начать работу с машинным обучением (ML). SageMaker JumpStart обеспечивает тонкую настройку одним щелчком мыши и развертывание широкого спектра предварительно обученных моделей для популярных задач машинного обучения, а также выбор комплексных решений для решения общих бизнес-задач. Эти функции избавляют от тяжелой работы на каждом этапе процесса машинного обучения, упрощая разработку высококачественных моделей и сокращая время развертывания.

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

В этом посте мы рады сообщить, что все обучаемые модели JumpStart теперь поддерживают поэтапное обучение. Добавочное обучение позволяет обучать модель, которую вы уже точно настроили, используя расширенный набор данных, который содержит базовый шаблон, не учтенный в предыдущих прогонах тонкой настройки, что привело к снижению производительности модели. Дополнительное обучение экономит время и ресурсы, поскольку вам не нужно заново обучать модель с нуля. Если вы хотите сразу перейти к коду API JumpStart, который мы объясняем в этом посте, вы можете обратиться к образец тетради.

Обзор JumpStart

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

  • Развертывание предварительно обученных моделей для распространенных задач машинного обучения – JumpStart позволяет решать распространенные задачи машинного обучения без усилий по разработке, обеспечивая простое развертывание моделей, предварительно обученных на больших общедоступных наборах данных. Исследовательское сообщество машинного обучения приложило немало усилий, чтобы сделать большинство недавно разработанных моделей общедоступными для использования; JumpStart содержит коллекцию из более чем 300 моделей, охватывающих 15 самых популярных задач машинного обучения, таких как обнаружение объектов, классификация текста и генерация текста, что упрощает их использование новичками. Эти модели взяты из популярных концентраторов моделей, таких как TensorFlow, PyTorch, Hugging Face и MXNet Hub.
  • Точная настройка предварительно обученных моделей – JumpStart позволяет точно настраивать предварительно обученные модели без необходимости написания собственного алгоритма обучения. В ML способность передавать знания, полученные в одной области, в другую называется трансферное обучение. Вы можете использовать трансферное обучение для создания точных моделей на небольших наборах данных с гораздо меньшими затратами на обучение, чем затраты на обучение исходной модели. JumpStart также включает в себя популярные алгоритмы обучения, основанные на LightGBM, CatBoost, XGBoost и Scikit-learn, которые можно обучать с нуля для табличной регрессии и классификации.
  • Используйте готовые решения – JumpStart предоставляет набор из 17 решений для распространенных случаев использования машинного обучения, таких как прогнозирование спроса, а также промышленные и финансовые приложения, которые можно развернуть всего несколькими щелчками мыши. Решения — это комплексные приложения машинного обучения, которые объединяют различные сервисы AWS для решения конкретных бизнес-задач. Они используют AWS CloudFormation шаблоны и эталонные архитектуры для быстрого развертывания, что означает, что они полностью настраиваемые.
  • Используйте примеры записных книжек для алгоритмов SageMaker – SageMaker предоставляет набор встроенных алгоритмов, помогающих специалистам по обработке и анализу данных и специалистам по машинному обучению быстро приступить к обучению и развертыванию моделей машинного обучения. 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, так и через API JumpStart.

Проходим следующие этапы:

  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 с поддержкой графического процессора в качестве учебного экземпляра SageMaker.

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

Разверните доработанную модель

После завершения обучения вы можете развернуть настроенную модель с той же страницы, которая содержит сведения о задании на обучение. Для развертывания нашей модели мы выбираем другой тип экземпляра, ml.p2.xlarge. Он по-прежнему обеспечивает ускорение графического процессора, необходимое для низкой задержки логического вывода, но по более низкой цене. После настройки экземпляра хостинга SageMaker выберите Развертывание. Может пройти 5–10 минут, прежде чем ваша постоянная конечная точка будет запущена.

После этого ваша конечная точка работает и готова отвечать на запросы логического вывода!

Чтобы ускорить процесс логического вывода, JumpStart предоставляет образец записной книжки, в котором показано, как выполнять логический вывод на только что развернутой конечной точке. Выбирать Открыть блокнот под Использовать конечную точку из Студии.

Поэтапно обучайте доработанную модель и развертывайте

Когда тонкая настройка завершена, вы можете продолжить обучение модели для повышения производительности. Этот шаг очень похож на первоначальный процесс тонкой настройки, за исключением того, что мы используем уже настроенную модель в качестве отправной точки. Вы можете использовать новые данные, но формат набора данных должен быть таким же (тот же набор классов).

Программное использование JumpStart с SageMaker SDK

В предыдущих разделах мы показали, как можно использовать пользовательский интерфейс JumpStart для точной настройки, развертывания и поэтапного обучения модели в интерактивном режиме всего за несколько щелчков мышью. Вы также можете использовать модели JumpStart и программно выполнять тонкую настройку с помощью API, интегрированных в SageMaker SDK. Теперь мы рассмотрим быстрый пример того, как вы можете воспроизвести предыдущий процесс. Все шаги в этой демонстрации доступны в прилагаемых блокнотах. Введение в JumpStart — классификация изображений.

Точная настройка предварительно обученной модели

Чтобы точно настроить выбранную модель, нам нужно получить URI этой модели, а также 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 использует предварительно обученные модели с открытым исходным кодом для решения распространенных проблем машинного обучения, таких как классификация изображений, обнаружение объектов, классификация текста, классификация пар предложений и ответы на вопросы.

В этом посте мы показали вам, как настроить и развернуть предварительно обученную модель классификации изображений. Мы также показали, как поэтапно обучать точно настроенную модель для классификации изображений. С JumpStart вы можете легко выполнить этот процесс без необходимости кодирования. Попробуйте решение самостоятельно и сообщите нам, как оно работает, в комментариях. Чтобы узнать больше о JumpStart, посмотрите видео AWS re:Invent 2020. Начните работу с машинным обучением за считанные минуты с помощью Amazon SageMaker JumpStart.

Рекомендации

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

Об авторах

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

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

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

Отметка времени:

Больше от Машинное обучение AWS