Масштабирование OpenAI для Python с помощью службы "Управление API Azure"

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

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

  • Приложение чата:
    • Дождитесь развертывания приложения чата до тех пор, пока не будет развернут пример подсистемы балансировки нагрузки.
    • Если вы уже развернули приложение чата один раз, измените переменную среды для поддержки пользовательской конечной точки для подсистемы балансировки нагрузки и повторно разверните ее.
  • Подсистема балансировки нагрузки с помощью службы "Управление API Azure".

Замечание

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

Архитектура балансировки нагрузки для Azure OpenAI с использованием Управления API Azure

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

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

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

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

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

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

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

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

Предпосылки

Откройте пример приложения локального балансировщика API Azure.

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

Открыть в GitHub Codespaces.

Это важно

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

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

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

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

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

    azd up
    

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

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

Получите конечную точку балансировщика нагрузки

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

azd env get-values | grep APIM_GATEWAY_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. Добавьте эту переменную среды, чтобы сообщить серверной части приложения чата пользовательский URL-адрес для запроса Azure OpenAI:

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

    azd up
    

Настройка квоты TPM

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

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

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

    azd up
    

Очистите ресурсы

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

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

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

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

Удалите ресурсы Azure и удалите исходный код:

azd down --purge --force

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

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

Очистите ресурсы

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

Это важно

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

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

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

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

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

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

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

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

Пример кода

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