Поделиться через


Масштабирование чата Azure OpenAI для Python с помощью RAG с приложениями контейнеров Azure

Узнайте, как добавить балансировку нагрузки в ваше приложение, чтобы расширить возможности приложения-чата за пределы ограничений токенов и лимитов модели службы Azure OpenAI. Этот подход использует приложения контейнеров Azure для создания трех конечных точек Azure OpenAI и основного контейнера для направления входящего трафика к одной из трех конечных точек.

В этой статье требуется развернуть два отдельных примера:

  • Приложение чата

    • Если вы еще не развернули приложение чата, дождитесь развертывания примера подсистемы балансировки нагрузки.

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

    • Приложение чата доступно на следующих языках:

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

Заметка

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

Архитектура балансировки нагрузки Azure OpenAI с помощью приложений контейнеров Azure

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

диаграмма, на которой показана архитектура приложения чата с выделенным ресурсом Azure OpenAI.

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

Диаграмма, где показана архитектура приложения чата с Azure Container Apps перед тремя ресурсами Azure OpenAI.

Приложение-контейнер находится перед набором ресурсов Azure OpenAI. Приложение-контейнер решает два сценария: обычный и ограниченный. В обычном сценарии, где доступна квота маркера и модели, ресурс Azure OpenAI возвращает 200 обратно через приложение контейнера и сервер приложений.

схема, показывающая обычный сценарий. Обычный сценарий показывает три группы конечных точек Azure OpenAI с первой группой двух конечных точек, получая успешный трафик.

Если ресурс находится в сценарии ограниченного использования из-за ограничений квоты, приложение контейнера может попробовать использовать другой ресурс Azure OpenAI для выполнения исходного запроса чат-приложения.

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

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

Откройте приложение-пример балансировщика нагрузки для контейнерных приложений

GitHub Codespaces запускает контейнер разработки, управляемый GitHub, с Visual Studio Code для веба в качестве пользовательского интерфейса. Для наиболее простой среды разработки используйте GitHub Codespaces, чтобы у вас были правильные средства разработчика и зависимости, предварительно установленные для выполнения этой статьи.

Открыть в GitHub Codespaces.

Важный

Все учетные записи GitHub могут использовать GitHub Codespaces до 60 часов бесплатно каждый месяц с двумя основными экземплярами. Дополнительные сведения см. в статье GitHub Codespaces ежемесячно включают в себя хранилище и основные часы.

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

  1. Войдите в интерфейс командной строки разработчика Azure, чтобы обеспечить проверку подлинности для шагов подготовки и развертывания:

    azd auth login --use-device-code
    
  2. Задайте переменную среды для использования аутентификации Azure CLI на этапе после развертывания.

    azd config set auth.useAzCliAuth "true"
    
  3. Разверните приложение подсистемы балансировки нагрузки:

    azd up
    

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

  4. Дождитесь завершения развертывания, прежде чем продолжить.

Получить конечную точку развертывания

  1. Используйте следующую команду, чтобы отобразить развернутую конечную точку для приложения-контейнера:

    azd env get-values
    
  2. Скопируйте значение CONTAINER_APP_URL. Вы используете его в следующем разделе.

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

Эти примеры завершены в примере приложения чата.

  1. Откройте контейнер разработки для приложения чата с помощью одного из следующих вариантов.

    Язык Пространства кода GitHub Visual Studio Code
    .СЕТЬ Открыть в GitHub Codespaces Открыть в контейнерах разработки
    JavaScript Открыть в GitHub Codespaces Открыть в контейнерах разработки
    Питон Открыть в GitHub Codespaces Открыть в контейнерах разработки
  2. Войдите в интерфейс командной строки разработчика Azure (AZD):

    azd auth login
    

    Завершите инструкцию по входу в систему.

  3. Создайте среду AZD с именем, например chat-app:

    azd env new <name>
    
  4. Добавьте следующую переменную среды, которая сообщает серверной части приложения чата использовать настраиваемый URL-адрес для запросов Azure OpenAI:

    azd env set OPENAI_HOST azure_custom
    
  5. Добавьте следующую переменную среды. Замените <CONTAINER_APP_URL> URL-адресом из предыдущего раздела. Это действие сообщает серверной части приложения чата, что такое значение настраиваемого URL-адреса для запроса Azure OpenAI.

    azd env set AZURE_OPENAI_CUSTOM_URL <CONTAINER_APP_URL>
    
  6. Разверните приложение чата:

    azd up
    

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

Передача логов в потоковом режиме для просмотра результатов балансировщика нагрузки

  1. На портале Azureвыполните поиск по группе ресурсов.

  2. В списке ресурсов в группе выберите ресурс "Приложения контейнеров Azure".

  3. Выберите «Мониторинг»>и «Поток журнала», чтобы просмотреть журнал.

  4. Используйте приложение чата для создания трафика в журнале.

  5. Найдите журналы, которые ссылаются на ресурсы Azure OpenAI. Каждый из трех ресурсов имеет свое числовое удостоверение в примечании журнала, которое начинается с Proxying to https://openai3, где 3 указывает третий ресурс Azure OpenAI.

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

Когда балансировщик нагрузки получает сообщение о том, что запрос превышает квоту, он автоматически переключается на другой ресурс.

Настройка квоты доверенного платформенного модуля

По умолчанию каждый экземпляр Azure OpenAI в системе балансировки нагрузки развертывается с емкостью 30 000 токенов в минуту (TPM). Вы можете использовать приложение чата с уверенностью в том, что оно создано для масштабирования для многих пользователей без превышения квоты. Измените это значение, если:

  • Возникают ошибки емкости развертывания: уменьшите значение.
  • Вам нужна более высокая емкость: увеличьте значение.
  1. Чтобы изменить значение, используйте следующую команду:

    azd env set OPENAI_CAPACITY 50
    
  2. Повторно разверните подсистему балансировки нагрузки:

    azd up
    

Очистка ресурсов

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

Очистка ресурсов приложения чата

Вернитесь в статью о приложении чата, чтобы очистить ресурсы:

Очистка ресурсов подсистемы балансировки нагрузки

Выполните следующую команду Командной строки разработчика Azure, чтобы удалить ресурсы Azure и удалить исходный код:

azd down --purge --force

Переключатели обеспечивают:

  • purge. Удаленные ресурсы немедленно очищаются, чтобы вы могли многократно использовать токены службы Azure OpenAI в течение каждой минуты.
  • force. Удаление выполняется автоматически, не требуя согласия пользователя.

Очистка GitHub Codespaces и Visual Studio Code

Удаление среды GitHub Codespaces гарантирует, что вы можете максимально использовать объем бесплатных часовых квот на ядро, предоставляемых для учетной записи.

Важный

Дополнительные сведения о правах учетной записи GitHub см. в разделах GitHub Codespaces о ежемесячно включаемом объеме хранилища и основных часах.

  1. Войдите в панель мониторинга GitHub Codespaces.

  2. Найдите в настоящее время работающие пространства кода, полученные из репозитория azure-samples/openai-aca-lb на GitHub.

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

  3. Откройте контекстное меню для пространства кода, а затем выберите Удалить.

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

Получите помощь

Если у вас возникли проблемы с развертыванием балансировщика нагрузки Azure API Management, добавьте вашу проблему на страницу репозитория Issues.

Пример кода

Примеры, используемые в этой статье, включают:

Используйте нагрузочного тестирования Azure для нагрузочного тестирования приложения чата.