Создайте безопасное корпоративное приложение с помощью Generative AI и RAG с использованием Amazon SageMaker JumpStart

Создайте безопасное корпоративное приложение с помощью Generative AI и RAG, используя Amazon SageMaker JumpStart.

Генеративное искусственное интеллект (Generative AI) – это тип искусственного интеллекта, который может создавать новый контент и идеи, включая диалоги, истории, изображения, видео и музыку. Он работает на основе больших языковых моделей (LLM), которые предварительно обучены на огромных объемах данных и обычно называются основными моделями (FM).

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

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

В этом посте мы создаем безопасное предприятийское приложение с использованием AWS Amplify, которое вызывает основную модель Amazon SageMaker JumpStart, точки входа Amazon SageMaker и сервис Amazon OpenSearch для объяснения того, как создать текст-к-текст или текст-к-изображение и увеличенное поколение с поиском (RAG). Вы можете использовать этот пост в качестве справочника для создания безопасных предприятийских приложений в области генеративного искусственного интеллекта с использованием услуг AWS.

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

Это решение использует модели SageMaker JumpStart для развертывания моделей текст-к-текст, текст-к-изображение и моделей вложений текста в виде точек входа SageMaker. Эти точки входа SageMaker используются в приложении React Amplify через шлюз API Amazon и функции AWS Lambda. Чтобы защитить приложение и API от непреднамеренного доступа, в Amplify React, шлюз API и функции Lambda интегрирована служба Amazon Cognito. Точки входа SageMaker и Lambda развертываются в частной виртуальной частной сети (VPC), поэтому связь от шлюза API к функциям Lambda защищена с помощью VPC-ссылок шлюза API. Ниже приведена схема рабочего процесса этого решения.

Рабочий процесс включает следующие шаги:

  1. Начальная настройка: Модели SageMaker JumpStart FM развертываются в виде точек входа SageMaker, с тремя точками входа, созданными на основе моделей SageMaker JumpStart. Модель текст-к-изображение – это модель Stable Diffusion Stability AI, которая будет использоваться для генерации изображений. Модель текст-к-текст, используемая для генерации текста и развертывания в решении, – это модель Hugging Face Flan T5 XL. Модель вложений текста, которая будет использоваться для генерации вложений для индексации в сервисе Amazon OpenSearch или для поиска контекста для поступающего вопроса, – это модель вложений Hugging Face GPT 6B FP16. Можно развернуть альтернативные LLM на основе конкретной задачи и показателей производительности модели. Дополнительную информацию о моделях основы можно найти в руководстве по началу работы с Amazon SageMaker JumpStart.
  2. Вы получаете доступ к приложению React с вашего компьютера. В приложении React есть три страницы: страница, которая принимает изображения в качестве подсказок и отображает сгенерированное изображение; страница, которая принимает текстовые подсказки и отображает сгенерированный текст; и страница, которая принимает вопрос, находит соответствующий контекст вопроса и отображает ответ, сгенерированный моделью текст-к-текст.
  3. Приложение React, созданное с использованием библиотек Amplify, размещается на Amplify и предоставляется пользователю по адресу хоста Amplify. Amplify обеспечивает среду хостинга для приложения React. Командная строка Amplify используется для создания среды хостинга Amplify и развертывания кода в среде хостинга Amplify.
  4. Если вы не прошли аутентификацию, вы будете аутентифицированы с использованием библиотеки Amplify React UI.
  5. При предоставлении ввода и отправке формы запрос обрабатывается через шлюз API.
  6. Функции Lambda очищают пользовательский ввод и вызывают соответствующие точки входа SageMaker. Функции Lambda также формируют подсказки из очищенного пользовательского ввода в соответствующем формате, ожидаемом LLM. Эти функции Lambda также переформатируют выходные данные LLM и отправляют ответ пользователю.
  7. Точки входа SageMaker развертываются для моделей текст-к-текст (Flan T5 XXL), текст-к-вложения (GPTJ-6B) и текст-к-изображение (Stability AI). Развертываются три отдельные точки входа с использованием рекомендуемых типов экземпляров SageMaker по умолчанию.
  8. Генерируются вложения для документов с использованием модели текст-к-вложения, и эти вложения индексируются в сервисе OpenSearch Service. Включен индекс ближайших соседей (k-Nearest Neighbor, k-NN), позволяющий искать вложения из сервиса OpenSearch.
  9. Задание AWS Fargate берет документы и разделяет их на более мелкие пакеты, вызывает модель LLM текст-к-вложения и индексирует полученные вложения в сервисе OpenSearch для поиска контекста, как описано ранее.

Обзор набора данных

Набор данных, используемый для этого решения, называется pile-of-law и находится в репозитории Hugging Face. Этот набор данных представляет собой большой корпус правовых и административных данных. В данном примере мы используем файл train.cc_casebooks.jsonl.xz из этого репозитория. Это коллекция учебников по праву, отобранных в формате JSONL, который требуется для использования LLM.

Необходимые условия

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

  • Учетная запись AWS.
  • Политика управления доменом Amazon SageMaker Studio, привязанная к роли выполнения AWS Identity and Access Management (IAM). Для инструкций по назначению разрешений роли обратитесь к документации Amazon SageMaker API Permissions: Actions, Permissions, and Resources Reference. В этом случае необходимо назначить разрешения, связанные с Amazon Augmented AI (Amazon A2I). Дополнительную информацию см. в примерах политик, основанных на идентификации на основе Amazon SageMaker.
  • Бакет Amazon Simple Storage Service (Amazon S3). Для инструкций см. Creating a bucket.
  • Для этого поста вы будете использовать AWS Cloud Development Kit (AWS CDK) с использованием Python. Следуйте инструкциям в Getting Started with the AWS CDK, чтобы настроить свою локальную среду и настроить учетную запись разработчика.
  • В этом проекте AWS CDK требуются экземпляры SageMaker (два ml.g5.2xlarge и один ml.p3.2xlarge). Возможно, вам потребуется увеличить квоту.

Реализация решения

В этом репозитории AWS Samples на GitHub предоставлен проект AWS CDK, который включает все архитектурные компоненты. Чтобы реализовать это решение, выполните следующие действия:

  1. Клонируйте репозиторий GitHub на свой компьютер.
  2. Перейдите в корневую папку.
  3. Инициализируйте виртуальное окружение Python.
  4. Установите необходимые зависимости, указанные в файле requirements.txt.
  5. Инициализируйте AWS CDK в папке проекта.
  6. Настройте AWS CDK в папке проекта.
  7. С помощью команды AWS CDK deploy разверните стеки.
  8. Перейдите в папку Amplify внутри папки проекта.
  9. Инициализируйте Amplify и примите значения по умолчанию, предоставленные CLI.
  10. Добавьте хостинг Amplify.
  11. Опубликуйте веб-интерфейс Amplify из папки Amplify и запишите предоставленное имя домена в конце выполнения.
  12. На консоли Amazon Cognito добавьте пользователя в экземпляр Amazon Cognito, который был предоставлен с развертыванием.
  13. Перейдите по имени домена из шага 11 и введите данные входа в Amazon Cognito для доступа к приложению.

Запуск задания индексации OpenSearch

В рамках проекта AWS CDK была развернута функция Lambda с именем GenAIServiceTxt2EmbeddingsOSIndexingLambda. Перейдите к этой функции на консоли Lambda.

Выполните тестовый запуск с пустым полезным нагрузкой, как показано на следующем снимке экрана.

Эта функция Lambda запускает задачу Fargate в Amazon Elastic Container Service (Amazon ECS), работающую внутри VPC. Эта задача Fargate берет включенный файл JSONL, разбивает его на сегменты и создает индекс векторных представлений. Векторное представление каждого сегмента является результатом вызова точки доступа LLM для преобразования текста в векторные представления, развернутой в рамках проекта AWS CDK.

Очистка

Чтобы избежать будущих затрат, удалите конечную точку SageMaker и остановите все функции Lambda. Также удалите выходные данные в Amazon S3, созданные в процессе выполнения рабочего процесса приложения. Вы должны удалить данные в бакетах S3 перед удалением бакетов.

Заключение

В этом посте мы продемонстрировали полный цикл создания безопасного предприятийного приложения с использованием Generative AI и RAG. Этот подход может быть использован для создания безопасных и масштабируемых приложений Generative AI на AWS. Мы призываем вас развернуть приложение AWS CDK в своей учетной записи и создать решение Generative AI.

Дополнительные ресурсы

Для получения дополнительной информации о приложениях Generative AI на AWS обратитесь к следующему:

  • Ускорьте свое обучение перед экзаменами по сертификации AWS с помощью автоматической генерации вопросов с использованием моделей Amazon SageMaker foundations
  • Создайте мощного бота для ответов на вопросы с использованием Amazon SageMaker, Amazon OpenSearch Service, Streamlit и LangChain
  • Развертывайте модели генеративного искусственного интеллекта из Amazon SageMaker JumpStart с помощью AWS CDK
  • Начните работу с генеративным искусственным интеллектом на AWS с помощью Amazon SageMaker JumpStart
  • Создайте безсерверный бэкэнд для сводки собраний с использованием больших языковых моделей на Amazon SageMaker JumpStart