Архитектура:

Модель GPT2 развернута в экземпляре Amazon Sagemaker и функции Lambda для вызова конечной точки SageMaker и API Gateway, чтобы мы могли вызывать ее через Rest API.

Шаг 1. Подпишитесь на GPT2 из AWS Marketplace.

Этот шаг довольно прост, вам нужно найти GPT2 в AWS Marketplace, а затем принять его.

После того, как вы подписались на подписку GPT2, выполните следующий шаг.

  1. Перейдите на панель инструментов SageMaker и создайте экземпляр блокнота.

2. Откройте Jupyter в экземпляре и перейдите к «примерам sagemaker» и используйте приведенный ниже файл блокнота, который выделен на рисунке ниже.

Позже просмотрите все команды и запустите все команды в блокноте одну за другой.

Используйте ядро ​​как Conda_Python3

Позже

Выполните все шаги, приведенные ниже. Как только мы развернем модель на конечной точке, мы сможем начать ее использовать.

Обратите внимание, что здесь имя конечной точки

endpoint_name = «demo-gpt2-endpoint»

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

Шаг 2. Используйте функцию Azure для вызова конечной точки

  1. В консоли Lambda на странице Функции выберите Создать функцию.
  2. В поле Имя функции введите имя.
  3. Для Runtime¸ выберите вашу среду выполнения.
  4. Для Роли исполнения¸ выберите Использовать существующую роль.

Здесь вам нужно выбрать роль или создать роль AmazonSageMakerFullAccess и включить lambda в доверительные отношения, чтобы Lambda могла получить доступ к SageMaker.

Код для развертывания функции Lambda

# получить переменные окружения

ENDPOINT_NAME = os.environ[‘ENDPOINT_NAME’]

клиент = boto3.client («среда выполнения sagemaker»)

def lambda_handler (событие, контекст):

# print("Получено событие: " + json.dumps(event, indent=2))

# данные = json.loads(json.дампы(событие))

# полезная нагрузка = данные ['данные']

полезная нагрузка = json.dumps (событие)

печать (полезная нагрузка)

payload = ‘{“input”: «Машинное обучение полезно для человечества. Это помогает», «длина»: 100, «repetition_penalty»: 10, «num_return_sequences»: 1}’

response = client.invoke_endpoint(EndpointName=ENDPOINT_NAME,

ContentType='приложение/json',

Кузов=полезная нагрузка)

вернуть ответ["Тело"].read()

По умолчанию тайм-аут функции Azure составляет 3 секунды, вам может потребоваться увеличить его, если вы используете экземпляр небольшого размера. В моем случае я использовал ml.t2.medium, который дает ответ около 27 секунд, вы можете настроить размер экземпляра как ваша потребность.

ENDPOINT_NAME — это переменная среды, которая содержит имя конечной точки модели SageMaker, которую вы только что развернули с помощью примера записной книжки. Замените значение на «demo-gpt2-endpoint» на имя созданной вами конечной точки, если оно отличается.

Шаг 3: Создайте Rest API.

Вы можете создать API, выполнив следующие действия:

В консоли шлюза API выберите REST API.

Выберите Построить.

Выберите Новый API.

Для имени API¸ введите имя (например, GPT2_Text_Generator).

Оставьте Тип конечной точки как Региональный.

Выберите Создать API.

В меню Действия выберите Создать ресурс.

Введите имя ресурса (например, gettext).

После создания ресурса в меню «Действия» выберите «Создать метод», чтобы создать метод POST.

Для Типа интеграции выберите Лямбда-функция.

Для лямбда-функции введите созданную вами функцию.

Когда настройка завершена, вы можете развернуть API на этапе.

В меню Действия выберите Развернуть API.

Создайте новую сцену с именем stage.

Выберите Развернуть.

Этот шаг дает вам URL-адрес вызова.

Шаг 5: Тест

Выполните приведенную ниже командную команду на своем компьютере.

curl — местоположение — запрос POST ‘https://example.amazonaws.com/stage/gettext’ \

— заголовок ‘Content-Type: application/json’ \

— необработанные данные '{

«ввод»: «Машинное обучение полезно для человечества. Это помогает",

«длина»: 50,

«repetition_penalty»: 10,

«num_return_sequences»: 1

}’

Ниже приведен пример вывода при запросе с использованием Postman.

Шаг 6: Очистка

Не забудьте удалить модель и конечную точку, как только вы закончите тест, запустите приведенную ниже команду из SageMaker Notebook.

И еще раз проверьте его, перейдя в разделы inference/models и inference/endpoints в SageMaker Dashboard. Если он все еще там, удалите его оттуда и остановите/удалите свой экземпляр ноутбука. Позже вы сможете отказаться от подписки на GPT2 в MarketPlace.