DALL-E Mini, созданный Hugging Face — это трансформер текста в изображение, созданный Борисом Даймой и другими др. Это открытая версия DALL·E, созданная Open AI. DALL-E Mini и DALL-E Mega — более крупная модель-трансформер. Интересно, что модель HuggingFace DALL-E Mini включает в себя обе модели.

Amazon SageMaker – это набор инструментов машинного обучения, предоставляемых Amazon Web Services для разработки моделей, включая сборку, обучение, настройку и развертывание. Развертывание модели Amazon SageMaker упрощает развертывание модели и вывод с помощью решения с малым объемом кода или без него.

В наборе услуг Amazon SageMaker Serverless Inference — это параметр вывода, который автоматически запускает вычислительные ресурсы и масштабирует их в зависимости от потребности в трафике. В этой статье показано пошаговое развертывание модели DALL-E Mini на SageMaker Serverless Inference.

Настройка учетной записи AWS

Перво-наперво. Вам понадобится учетная запись AWS, чтобы следовать дальше. Если у вас его еще нет, инструкции по его настройке можно найти здесь — Настройка учетной записи AWS.

Создание бессерверной конечной точки

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

Amazon SageMaker Studio или Экземпляры SageMaker Notebook — отличные отправные точки перед развертыванием продукта — подробнее об этом это позже.

Программно код можно запустить из любого конвейера непрерывной интеграции или из командной строки при условии, что используемая Сервисная учетная запись AWS имеет необходимые разрешения, как определено в Роли SageMaker.

Строки 1 и 2, импортируйте SDK Hugging Face и объект Serverless Inference Configuration.

Строка 5 извлекает роль AWS IAM с соответствующим разрешением на выполнение. Роль исполнения можно создать, следуя этим инструкциям — Роли SageMaker.

Строка 7, SDK Hugging Face требует конфигурации модели, определенной при создании экземпляра модели. Конфигурация принимает два параметра — HF_MODEL_ID берется из карточки модели и HF_TASK обычно также указывается в карточке модели. ПРИМЕЧАНИЕ. В случае с DALL-E Mini HF_TASK лучше всего работает image-classification (хотя эта модель представляет собой генератор преобразования текста в изображение, а не классификатор).

Строка 13, создала экземпляр модели с соответствующими параметрами конфигурации. Подробную информацию о параметрах можно найти здесь — Оценка обнимания лица для SageMaker

Строка 22 создает объект конфигурации бессерверного вывода с информацией о памяти и параллелизме — Конфигурация бессерверного вывода

Строка 25, развертывает модель для бессерверного вывода. ПРИМЕЧАНИЕ. замена строки 27 на строку 28 развертывает модель с использованием экземпляров EC2 указанного типа.

ЛЮБОПЫТНЫЙ ФАКТ. Большинство моделей HuggingFace можно развернуть таким образом.

Использование SageMaker Studio или Notebooks для развертывания модели

Несмотря на возможность запуска Jupyter в качестве экземпляра ноутбука SageMaker, мы рекомендуем использовать SageMaker Studio из-за его многочисленных преимуществ по ​​сравнению с экземплярами ноутбука, в частности, поскольку SageMaker и HuggingFace SDK предварительно установлены.

Вот пошаговое руководство по запуску заметки в блокнотах Amazon SageMaker Studio.

Это пошаговое руководство по использованию Amazon SageMaker Notebook Instance.

Поиск конечной точки в консоли AWS

Успешное развертывание создаст конечную точку. Конечную точку можно найти в консоли AWS, выбрав Сервисы => Машинное обучение => Amazon SageMaker.

В SageMaker Console конечная точка будет отображаться в разделе Inference => Endpoints.

ПРИМЕЧАНИЕ. Далее в руководстве используются Имя конечной точки и ARN конечной точки. .

Вызов бессерверной конечной точки

После создания бессерверная конечная точка становится НЕ ПУБЛИЧНОЙ. Он не может быть вызван из открытого Интернета.

Самый простой способ получить доступ к конечной точке извне — через общедоступную конечную точку Amazon API Gateway, поддерживаемую функцией AWS Lambda. При вызове общедоступной конечной точки в шлюзе API запускается лямбда-функция, которая вызывает внутреннюю бессерверную конечную точку SageMaker.

Определите политику IAM, чтобы разрешить доступ к конечной точке SageMaker.

В консоли AWS запустите IAM, выбрав Сервисы => Безопасность, идентификация и соответствие требованиям => IAM. Нажмите Политики на левой панели, а затем синюю кнопку Создать политику.

Это запускает процесс создания политики. Выберите вкладку с именем JSON и вставьте следующий код в текстовую область.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "sagemaker:InvokeEndpointAsync",
                "sagemaker:InvokeEndpoint"
            ],
            "Resource": "<Endpoint ARN goes here>"
        }
    ]
}

ПРИМЕЧАНИЕ. Вставьте ARN конечной точки в JSON выше. Использование «*» вместо фактического ARN предоставит функции Lambda доступ ко всем конечным точкам SageMaker.

Нажмите кнопку [Далее: Теги] в правом нижнем углу. Добавьте нужные теги и нажмите кнопку [Далее: Проверка].

Дайте политике имя и нажмите кнопку [Создать политику].

ПРИМЕЧАНИЕ. Будет создана политика IAM с именем sagemaker-invoke-policy. Он нужен для следующего раздела.

Определите роль IAM для доступа к конечной точке SageMaker.

В консоли AWS запустите IAM, выбрав Сервисы => Безопасность, идентификация и соответствие требованиям => IAM. Нажмите Роли на левой панели, а затем синюю кнопку Создать роль.

Это запустит процесс создания роли. Выберите Сервис AWS из вариантов вверху и Lambda из вариантов ниже, а затем нажмите "Далее".

Должен загрузиться экран Добавить разрешения. Найдите только что созданную политику [sagemaker-invoke-policy] и выберите ее.

Нажмите кнопку [Далее] в правом нижнем углу. Дайте роли имя и нажмите кнопку [Создать роль].

ПРИМЕЧАНИЕ. При этом будет создана роль IAM с именем sagemaker-invoke-role, которая понадобится позже.

Создание конечной точки лямбда-функции и шлюза API

Начни с лямбды. В консоли AWS перейдите в раздел Сервисы => Компьютер => Lambda. Нажмите Функции на левой панели и выберите [Создать функцию].

Выберите Автор с нуля. Дайте функции имя и выберите Python 3.8 в качестве среды выполнения. Нажмите [Создать функцию], чтобы продолжить.

Нажмите [+ Добавить триггер], чтобы определить, как будет срабатывать лямбда-функция.

В раскрывающемся списке выберите API Gateway и REST API в качестве вариантов. Выберите уровень безопасности, соответствующий варианту использования, в раскрывающемся списке внизу. В этом руководстве для обеспечения безопасности используется ключ API. Нажмите [Добавить], чтобы продолжить.

ПРИМЕЧАНИЕ: создается API с именем sagemaker-invoke-function-API. По сути, имя лямбда-функции, за которым следует [-API].

Вернувшись в лямбда-функцию, выберите Переменные среды в параметрах слева.

Нажмите [Изменить]. Затем на [Добавить переменную среды]. Добавьте ENDPOINT_NAME в качестве ключа и имя конечной точки, указанное выше, в качестве значения. Нажмите кнопку [Сохранить] для завершения.

Вернитесь в лямбда-функцию, выберите вкладку Код и введите исходный код снизу.

Нажмите [Развернуть], и лямбда-функция готова.

Доступ к общедоступной конечной точке шлюза API

В консоли AWS перейдите в раздел Сервисы => Сеть и доставка контента => Шлюз API.

В списке API должен присутствовать только что созданный. Нажмите здесь.

Нажмите Настройки на левой панели, чтобы открыть URL-адрес конечной точки по умолчанию и источник ключа API.

ПРИМЕЧАНИЕ. При вызове конечной точки ключ API должен быть указан в заголовке x-api-key HTTP-запроса.

Выберите «Ключи API» на левой панели, чтобы открыть ключ API.

Заключение

Большинство моделей HuggingFace можно легко развернуть с помощью механизмов, описанных в этом руководстве. Доступ к бессерверным конечным точкам SageMaker обычно является частным и недоступным из Интернета. Лучше всего использовать шлюз API, поддерживаемый Lambda, для публичного представления конечной точки.

Статьи по теме: