Создайте веб-интерфейс для взаимодействия с LLM-моделями с использованием Amazon SageMaker JumpStart.

Создание веб-интерфейса для взаимодействия с LLM-моделями с помощью Amazon SageMaker JumpStart.

Запуск ChatGPT и рост популярности генеративного ИИ захватили воображение клиентов, которые интересуются тем, как они могут использовать эту технологию для создания новых продуктов и услуг на платформе AWS, таких как предприятий чат-боты, которые более разговорчивы. В этом посте мы покажем вам, как создать веб-интерфейс, который мы называем Chat Studio, чтобы начать разговор и взаимодействовать с базовыми моделями, доступными в Amazon SageMaker JumpStart, такими как Llama 2, Stable Diffusion и другими моделями, доступными на Amazon SageMaker. После развертывания этого решения пользователи могут быстро начать работу и протестировать возможности нескольких базовых моделей в области разговорного ИИ с помощью веб-интерфейса.

Chat Studio также может дополнительно вызывать конечную точку модели Stable Diffusion, чтобы возвращать коллажи соответствующих изображений и видео, если пользователь запросит отображение медиаэлементов. Эта функция может помочь улучшить пользовательский опыт с использованием медиа в качестве сопутствующих элементов ответа. Это всего лишь один пример того, как вы можете обогатить Chat Studio с дополнительными интеграциями для достижения ваших целей.

Ниже приведены примеры того, как выглядят запрос пользователя и ответ.

Интерфейс запросов Chat Studio

Интерфейс ответа Chat Studio

Большие языковые модели

Генеративные ИИ-чат-боты, такие как ChatGPT, работают на основе больших языковых моделей (LLM), которые основаны на глубоких нейронных сетях, обученных на больших объемах несмаркерованного текста. Использование LLM позволяет получить более качественный разговорный опыт, который тесно приближается к взаимодействию с реальными людьми, способствуя установлению связи и повышению удовлетворенности пользователя.

Модели основы SageMaker

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

Обзор решения

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

  1. Развертывание моделей основы SageMaker.
  2. Развертывание AWS Lambda и AWS Identity and Access Management (IAM) используя AWS CloudFormation.
  3. Настройка и запуск пользовательского интерфейса.
  4. При необходимости добавление других моделей основы SageMaker. Этот шаг расширяет возможности Chat Studio для взаимодействия с дополнительными моделями основы.
  5. При необходимости развертывание приложения с использованием AWS Amplify. Этот шаг развертывает Chat Studio в Интернете.

Обратитесь к следующей диаграмме для обзора архитектуры решения.

Архитектура решения Chat Studio

Предварительные требования

Перед выполнением решения у вас должны быть следующие предварительные требования:

  • Учетная запись AWS с достаточными правами IAM-пользователя.
  • npm установлено в вашей локальной среде. Для инструкций по установке npm см. статью Загрузка и установка Node.js и npm.
  • Квота на обслуживание соответствующих конечных точек SageMaker равна 1. Для Llama 2 13b Chat мы используем экземпляр ml.g5.48xlarge, а для Stable Diffusion 2.1 – экземпляр ml.p3.2xlarge.

Чтобы запросить увеличение квоты на услуги, на консоли квот AWS Service Quotas перейдите на страницу Сервисы AWS, SageMaker и запросите увеличение квоты до значения 1 для использования ml.g5.48xlarge и ml.p3.2xlarge.

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

Развертывание основных моделей SageMaker

SageMaker – это управляемый службой машинного обучения (ML) сервис для разработчиков, позволяющий быстро создавать и обучать модели ML с легкостью. Выполните следующие действия, чтобы развернуть основные модели Llama 2 13b Chat и Stable Diffusion 2.1 с помощью Amazon SageMaker Studio:

  1. Создайте домен SageMaker. Пошаговая инструкция доступна в статье Регистрация в домене Amazon SageMaker с помощью быстрой настройки.

Домен устанавливает все необходимые хранилище и позволяет добавлять пользователей для доступа к SageMaker.

  1. На консоли SageMaker выберите Studio в левой панели навигации, а затем выберите Открыть Studio.
  2. После запуска Studio в левой панели навигации, выберите JumpStart SageMaker, а затем Модели, блокноты, решения.Консоль SageMaker JumpStart
  3. В строке поиска найдите Llama 2 13b Chat.
  4. В разделе Конфигурация развертывания для Экземпляр хостинга SageMaker выберите ml.g5.48xlarge, а для Имя конечной точки введите meta-textgeneration-llama-2-13b-f.
  5. Выберите Развернуть.
Конфигурация развертывания SageMaker JumpStart

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

Статус модели Llama
  1. На странице “Модели, записные книжки, решения” осуществите поиск Stable Diffusion 2.1.
  2. В разделе “Конфигурация развертывания” для “Экземпляра размещения SageMaker” выберите “ml.p3.2xlarge”, а для “Имя конечной точки” введите jumpstart-dft-stable-diffusion-v2-1-base.
  3. Нажмите “Развернуть”.
Конфигурация развертывания SageMaker JumpStart

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

Статус модели Stable Diffusion

Развертывание Lambda и разрешений IAM с помощью AWS CloudFormation

В этом разделе описывается, как запустить стек CloudFormation, который развертывает функцию Lambda для обработки пользовательского запроса и вызывает развернутую конечную точку SageMaker, а также развертывает все необходимые разрешения IAM. Выполните следующие действия:

  1. Перейдите на страницу репозитория GitHub и скачайте шаблон CloudFormation (lambda.cfn.yaml) на свой локальный компьютер.
  2. На консоли CloudFormation выберите в выпадающем меню “Создать стек” и выберите “С новыми ресурсами (стандартно)”.
  3. На странице “Укажите шаблон” выберите “Загрузить файл шаблона” и “Выберите файл”.
  4. Выберите загруженный файл lambda.cfn.yaml, затем выберите “Далее”.
  5. На странице “Укажите детали стека” введите имя стека и ключ API, который вы получили на этапе подготовки, затем выберите “Далее”.
  6. На странице “Настройка параметров стека” выберите “Далее”.
  7. Проверьте и подтвердите изменения, затем выберите “Подтвердить”.

Настройка веб-интерфейса

В этом разделе описываются шаги для запуска веб-интерфейса (созданного с использованием Cloudscape Design System) на вашем локальном компьютере:

  1. На консоли IAM перейдите к пользователю functionUrl.

  2. На вкладке “Security Credentials” выберите “Создать ключ доступа”.

  3. На странице “Лучшие практики и альтернативы ключей доступа” выберите “Интерфейс командной строки (CLI)” и выберите “Далее”.

  4. На странице “Установить тег описания” выберите “Создать ключ доступа”.

  5. Скопируйте ключ доступа и секретный ключ доступа.

  6. Выберите “Готово”.

  7. Перейдите на страницу репозитория GitHub и скачайте код react-llm-chat-studio.

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

  9. Перейдите в src/configs/aws.json и введите ключ доступа и секретный ключ доступа, которые вы получили.

  10. Введите следующие команды в терминале:

    npm installnpm start
  11. Откройте http://localhost:3000 в вашем браузере и начните взаимодействие с вашими моделями!

Чтобы использовать Chat Studio, выберите основную модель в выпадающем меню и введите свой запрос в текстовое поле. Чтобы получить изображения, сгенерированные искусственным интеллектом вместе с ответом, добавьте фразу «с изображениями» в конце вашего запроса.

Добавление других основных моделей SageMaker

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

В этом разделе описываются общие шаги и изменения кода, необходимые для реализации выбранной вами дополнительной модели. Обратите внимание, что для выполнения шагов с 6 по 8 требуется базовое знание языка Python.

  1. В SageMaker Studio разверните выбранную вами основную модель SageMaker.
  2. Выберите SageMaker JumpStart и Launch JumpStart assets.
  3. Выберите вашу недавно развернутую модель конечной точки и выберите Open Notebook.
  4. В консоли блокнота найдите параметры запроса.

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

SageMaker конфигурация конечной точки
  1. На консоли Lambda перейдите к callSageMakerEndpoints.
  2. Добавьте пользовательский обработчик ввода для вашей новой модели.

На следующем снимке экрана показано преобразование ввода для модели Falcon 40B Instruct BF16 и GPT NeoXT Chat Base 20B FP16. Вы можете вставить свою пользовательскую логику параметров, как показано, чтобы добавить логику преобразования ввода с учетом параметров запроса, которые вы скопировали.

Лямбда код отрывка
  1. Вернитесь к консоли блокнота и найдите query_endpoint.

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

SageMaker конфигурация конечной точки
  1. Ссылка на код в query_endpoint, добавьте пользовательский обработчик вывода для вашей новой модели. Лямбда код

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

  3. Откройте свою IDE, запустите код react-llm-chat-studio и перейдите к src/configs/models.json.

  4. Добавьте имя вашей модели и конечную точку модели, а также введите параметры запроса из шага 4 в блоке payload в следующем формате:

    "add_model_name": {"endpoint_name": "add_model_enpoint","payload": {"add_payload_paramters_here"}},
  5. Обновите ваш браузер для начала взаимодействия с вашей новой моделью!

Развертывание приложения с использованием Amplify

Amplify – это полное решение, которое позволяет быстро и эффективно развернуть ваше приложение. В этом разделе описываются шаги для развертывания Chat Studio на дистрибуцию Amazon CloudFront с использованием Amplify, если вы хотите поделиться вашим приложением с другими пользователями.

  1. Перейдите в папку с кодом react-llm-chat-studio, которую вы создали ранее.

  2. Введите следующие команды в терминал и следуйте инструкциям по настройке:

    npm install -g @aws-amplify/cliamplify configure
  3. Инициализируйте новый проект Amplify, используя следующую команду. Укажите имя проекта, примите конфигурации по умолчанию и выберите Ключи доступа AWS, когда будет предложено выбрать метод аутентификации.

    amplify init
  4. Разместите проект Amplify, используя следующую команду. При выборе режима плагина выберите Amazon CloudFront и S3.

    amplify hosting add
  5. Наконец, постройте и разверните проект с помощью следующей команды:

    amplify publish
  6. После успешного размещения откройте предоставленный URL в вашем браузере и начните взаимодействовать со своими моделями!

Очистка

Чтобы избежать будущих расходов, выполните следующие шаги:

  1. Удалите стек CloudFormation. Инструкции можно найти по адресу Удаление стека на консоли AWS CloudFormation.
  2. Удалите конечную точку SageMaker JumpStart. Инструкции можно найти по адресу Удаление конечных точек и ресурсов.
  3. Удалите домен SageMaker. Инструкции можно найти по адресу Удаление домена Amazon SageMaker.

Заключение

В этой статье мы объяснили, как создать веб-интерфейс для взаимодействия с развернутыми на AWS моделями языкового моделирования.

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

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

Мы приглашаем вас попробовать различные предварительно обученные модели языкового моделирования, доступные на AWS, или создать свои собственные модели на платформе SageMaker. Дайте нам знать ваши вопросы и результаты в комментариях и веселитесь!