Генеративный ИИ покорил мир, а услуги машинного обучения облачных провайдеров становятся все более популярными. Amazon SageMaker — одна из ведущих платформ машинного обучения, и недавно я решил изучить ее из любопытства. В этом посте я поделюсь своим опытом и выделю четыре вещи, которые мне понравились в SageMaker (и некоторые из них, которые мне не хватает).

Amazon SageMaker — это управляемый сервис машинного обучения, предоставляемый AWS, который предлагает инструменты для создания, обучения и развертывания моделей машинного обучения в любом масштабе.

Независимо от того, являетесь ли вы инженером по машинному обучению или просто любите взламывать AWS, я надеюсь, что вы найдете этот пост информативным и интересным. Начнем!

Управляемые ноутбуки

Управляемые ноутбуки Jupyter Notebook от SageMaker идеально подходят для исследований, разработок и развертывания. Поработав с другими управляемыми решениями Jupyter, которые были далеки от оптимальных, я был приятно удивлен безупречной работой SageMaker.
Я немного поэкспериментировал с моделями распространения изображений, и мне понравилось развертывание instruct-pix2pix. на мл.g5.2xlarge.

Мне удалось запустить инстанс ml.g5.2xlarge менее чем за две минуты, а полностью запустить мою модель — за пять. Я мог буквально превращать изображения Обамы в персонажа аниме или киборга, ожидая завершения моей следующей сборки. Эта потрясающая функция демонстрирует скорость и эффективность управляемых ноутбуков SageMaker.

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

Развертывания с помощью JumpStart

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

Я экспериментировал с моделью Alexa TM 20B, вы только посмотрите, насколько просто развертывание.

Сначала перейдите в SageMaker Studio, нажмите SageMaker JumpStart и выберите модель. (Я выберу Alexa TM 20B)

После выбора модели вы нажимаете кнопку Развернуть (при необходимости измените конфигурации) и ждете несколько минут, пока модель будет готова.

Вот и все.
Мне нравится, насколько плавным был опыт. SageMaker предоставляет блокнот «включай и работай» для тестирования вашей конечной точки, что позволяет невероятно легко экспериментировать с вашей моделью.

Развертывание моделей с помощью CDK

Я был рад увидеть, что SageMaker позволяет развертывать модели с IaaC. На самом деле я обожаю AWS Cloud Development Kit (CDK), поэтому мне очень понравилось развертывать модель HuggingFace прямо из кода с помощью CDK. Давайте поближе посмотрим, как это было.

Развертывание модели с IaaC с помощью CDK требует некоторых действий по настройке, таких как создание контейнера Docker, который будет использоваться SageMaker, и добавление файла model.tar.gz. Однако после выполнения этих шагов процесс развертывания становится простым.

➜ cdk bootstrap
 ⏳  Bootstrapping environment aws://0123456789/us-west-2...
 ...
 ✅  Environment aws://0123456789/us-west-2 bootstrapped.

➜ cdk deploy
✨  Synthesis time: 9.38s

SagemakerBlogPythonStack: building assets...
...

 ✅  SagemakerBlogPythonStack

✨  Deployment time: 587.42s

Я использовал HuggingFace GPT-J и использовал S3 model_data из их общедоступной корзины s3://huggingface-sagemaker-models/transformers/4.12.3/pytorch/1.9.1/gpt-j/model.tar.gz. Для изображения я использовал стандартное инференсное изображение HuggingFace PyTorch из их общедоступного ECR arn:aws:ecr:us-west-2:763104351884:repository/huggingface-pytorch-inference. Обратите внимание, что для модели требуются достаточные разрешения ECR и S3, чтобы извлечь изображение и правильно прочитать данные модели.
Поскольку GPT-J содержит всего 6B параметров, ml.g4dn.xlarge было достаточно. Я также добавил в свою конечную точку функцию автоматического масштабирования, которую было действительно здорово увидеть в действии.

Менее чем за 10 минут моя модель была отправлена ​​из конечной точки, готовой для генерации текста.

Проверьте мой код GitHub для большего контекста.

Оптимизация затрат с помощью спотовых инстансов

Это очень полезная функция.
Все мы знаем, что инстансы по запросу могут быть довольно дорогими, особенно при работе с большими рабочими нагрузками, такими как обучение гигантских моделей. Управляемое спотовое обучение в SageMaker предназначено для решения этой проблемы, позволяя клиентам сократить свои расходы до 90 % за счет использования спотовых инстансов EC2.

Если вы не знакомы с ними, спотовые инстансы — это инстансы EC2, которые предоставляют доступ к неиспользуемым ресурсам EC2 по значительно сниженной цене. Amazon предлагает эти инстансы, чтобы помочь пользователям EC2 оптимизировать свое использование за счет использования свободных мощностей вместо того, чтобы полагаться исключительно на более дорогие инстансы по требованию.

С помощью управляемого спотового обучения в SageMaker можно указать, какие задания обучения используют спотовые инстансы, и установить условие остановки, определяющее, как долго SageMaker ожидает запуска задания с использованием спотовых инстансов Amazon EC2. Кроме того, вы можете установить контрольные точки для своих учебных заданий, и SageMaker автоматически перезапустит задание с того места, где оно было остановлено, если оно будет прервано.

Настроить очень просто, посмотрите этот пример.

Чего мне еще не хватает

Я считаю, что SageMaker может выиграть от предоставления доступа к расширенным моделям, таким как StableDiffusion или Bloom, через конечные точки Amazon API, взимаемые в зависимости от использования. Это было бы особенно полезно для клиентов с более легкими рабочими нагрузками, которые могли бы сократить расходы, по-прежнему используя передовые модели благодаря удобству Amazon API.

К счастью, я недавно узнал об объявлении SageMaker JumpStart Foundation Models, которое в настоящее время находится в закрытой предварительной версии и должно решить эту проблему. Учитывая последнее объявление о расширении долгосрочного стратегического партнерства между Amazon Web Services AWS и Hugging Face, в дополнение к тесному сотрудничеству с Cohere, AI21 Labs и Stability AI, мы можем только представить возможности и ожидать новых прорывы в области AI и ML.

На мой взгляд, было бы полезно иметь в SageMaker больше инструментов AI/ML с низким кодом/без кода. Хотя в SageMaker Canvas есть полезные инструменты автоматического анализа данных, я считаю, что возможности SageMaker без кода можно улучшить и расширить, включив в него функции компьютерного зрения и генеративного ИИ.

Надеюсь, вам понравилось, увидимся в следующий раз.