Архитектура:
Модель GPT2 развернута в экземпляре Amazon Sagemaker и функции Lambda для вызова конечной точки SageMaker и API Gateway, чтобы мы могли вызывать ее через Rest API.
Шаг 1. Подпишитесь на GPT2 из AWS Marketplace.
Этот шаг довольно прост, вам нужно найти GPT2 в AWS Marketplace, а затем принять его.
После того, как вы подписались на подписку GPT2, выполните следующий шаг.
- Перейдите на панель инструментов SageMaker и создайте экземпляр блокнота.
2. Откройте Jupyter в экземпляре и перейдите к «примерам sagemaker» и используйте приведенный ниже файл блокнота, который выделен на рисунке ниже.
Позже просмотрите все команды и запустите все команды в блокноте одну за другой.
Используйте ядро как Conda_Python3
Позже
Выполните все шаги, приведенные ниже. Как только мы развернем модель на конечной точке, мы сможем начать ее использовать.
Обратите внимание, что здесь имя конечной точки
endpoint_name = «demo-gpt2-endpoint»
После того, как вы закончите тест, не забудьте запустить приведенную ниже команду в блокноте, эта команда удалит модель, эта команда также упоминается в последнем шаге.
Шаг 2. Используйте функцию Azure для вызова конечной точки
- В консоли Lambda на странице Функции выберите Создать функцию.
- В поле Имя функции введите имя.
- Для Runtime¸ выберите вашу среду выполнения.
- Для Роли исполнения¸ выберите Использовать существующую роль.
Здесь вам нужно выбрать роль или создать роль 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.