Масштабирование чата Azure OpenAI для JavaScript с помощью RAG с приложениями контейнеров Azure
Узнайте, как добавить балансировку нагрузки в приложение, чтобы расширить приложение чата за пределы маркера Azure OpenAI и квоты модели. Этот подход использует приложения контейнеров Azure для создания трех конечных точек Azure OpenAI, а также основного контейнера для направления входящего трафика в одну из трех конечных точек.
В этой статье требуется развернуть два отдельных примера:
Приложение чата
Если вы еще не развернули приложение чата, дождитесь развертывания примера подсистемы балансировки нагрузки.
Если вы уже развернули приложение чата один раз, вы измените переменную среды для поддержки пользовательской конечной точки для подсистемы балансировки нагрузки и повторно разверните ее.
Приложение чата доступно на следующих языках:
Приложение подсистемы балансировки нагрузки
Примечание.
В этой статье используется один или несколько шаблонов приложений ИИ в качестве основы для примеров и рекомендаций в этой статье. Шаблоны приложений ИИ предоставляют вам хорошо поддерживаемые и простые в развертывании эталонные реализации, которые помогают обеспечить высококачественную отправную точку для приложений ИИ.
Архитектура балансировки нагрузки Azure OpenAI с помощью приложений контейнеров Azure
Так как ресурс Azure OpenAI имеет определенные ограничения на маркер и квоту модели, приложение чата с использованием одного ресурса Azure OpenAI может иметь сбои бесед из-за этих ограничений.
Чтобы использовать приложение чата без достижения этих ограничений, используйте решение с балансировкой нагрузки с помощью приложений контейнеров Azure. Это решение легко предоставляет одну конечную точку из приложений контейнеров Azure на сервере приложений чата.
Приложение контейнера Azure находится перед набором ресурсов Azure OpenAI. Приложение-контейнер решает два сценария: обычный и регулирование. В обычном сценарии , где доступна квота маркера и модели, ресурс Azure OpenAI возвращает 200 обратно через приложение контейнера и сервер приложений.
Если ресурс находится в режиме регулирования, например из-за ограничений квоты, приложение контейнера Azure может повторить другой ресурс Azure OpenAI немедленно, чтобы полностью выполнить исходный запрос приложения чата.
Необходимые компоненты
Подписка Azure. Создать бесплатно
Службе Azure OpenAI предоставлен доступ в требуемой подписке Azure
В настоящее время доступ к этой службе предоставляется только приложением. Вы можете подать заявку на доступ к Azure OpenAI, выполнив форму по адресу https://aka.ms/oai/access.
Контейнеры разработки доступны для обоих примеров, при этом все зависимости, необходимые для выполнения этой статьи. Контейнеры разработки можно запускать в GitHub Codespaces (в браузере) или локально с помощью Visual Studio Code.
- учетная запись GitHub;
Пример приложения локального балансировщика контейнеров
GitHub Codespaces запускает контейнер разработки, управляемый GitHub, с Помощью Visual Studio Code для Интернета в качестве пользовательского интерфейса. Для наиболее простой среды разработки используйте GitHub Codespaces, чтобы у вас были правильные средства разработчика и зависимости, предварительно установленные для выполнения этой статьи.
Внимание
Все учетные записи GitHub могут использовать пространства Кода до 60 часов бесплатно каждый месяц с 2 основными экземплярами. Дополнительные сведения см. в GitHub Codespaces ежемесячно включаемых в хранилище и основные часы.
Развертывание подсистемы балансировки нагрузки для приложений контейнеров Azure
Войдите в интерфейс командной строки разработчика Azure, чтобы обеспечить проверку подлинности для шагов подготовки и развертывания.
azd auth login --use-device-code
Задайте переменную среды для использования проверки подлинности Azure CLI на шаге после подготовки.
azd config set auth.useAzCliAuth "true"
Разверните приложение подсистемы балансировки нагрузки.
azd up
Вам потребуется выбрать подписку и регион для развертывания. Они не должны быть той же подпиской и регионом, что и приложение чата.
Дождитесь завершения развертывания, прежде чем продолжать работу.
Получение конечной точки развертывания
Используйте следующую команду, чтобы отобразить развернутую конечную точку для приложения контейнера Azure.
azd env get-values
Скопируйте значение
CONTAINER_APP_URL
. Он понадобится в следующем разделе.
Повторное развертывание приложения чата с конечной точкой подсистемы балансировки нагрузки
Они завершены в примере приложения чата.
Откройте контейнер разработки приложения чата с помощью одного из следующих вариантов.
Язык Кодовые пространства Visual Studio Code .NET JavaScript Python Войдите в Azure Developer CLI (AZD).
azd auth login
Завершите выполнение инструкций для входа.
Создайте среду AZD с таким именем, как
chat-app
.azd env new <name>
Добавьте следующую переменную среды, которая сообщает серверной части приложения Чата использовать настраиваемый URL-адрес для запросов OpenAI.
azd env set OPENAI_HOST azure_custom
Добавьте следующую переменную среды, подложив
<CONTAINER_APP_URL>
URL-адрес из предыдущего раздела. Это действие сообщает серверной части приложения чата, что такое значение настраиваемого URL-адреса для запроса OpenAI.azd env set AZURE_OPENAI_CUSTOM_URL <CONTAINER_APP_URL>
Разверните приложение чата.
azd up
Теперь вы можете использовать приложение чата с уверенностью в том, что оно создано для масштабирования для многих пользователей без превышения квоты.
Потоковая передача журналов для просмотра результатов подсистемы балансировки нагрузки
В портал Azure выполните поиск по группе ресурсов.
В списке ресурсов в группе выберите ресурс приложения-контейнера.
Выберите "Мониторинг —> поток журнала", чтобы просмотреть журнал.
Используйте приложение чата для создания трафика в журнале.
Найдите журналы, которые ссылаются на ресурсы Azure OpenAI. Каждый из трех ресурсов имеет свое числовое удостоверение в комментарии журнала, начиная с
Proxying to https://openai3
того, где3
указывает третий ресурс Azure OpenAI.При использовании приложения чата, когда подсистема балансировки нагрузки получает состояние превышения квоты запроса, подсистема балансировки нагрузки автоматически поворачивается на другой ресурс.
Настройка маркеров в минуту квоты (TPM)
По умолчанию каждый экземпляр OpenAI в подсистеме балансировки нагрузки будет развернут с емкостью 30 000 TPM (токенов в минуту). Вы можете использовать приложение чата с уверенностью в том, что оно создано для масштабирования для многих пользователей без превышения квоты. Измените это значение, если:
- Вы получаете ошибки емкости развертывания: ниже этого значения.
- Планирование более высокой емкости, повышение значения.
Чтобы изменить значение, используйте следующую команду.
azd env set OPENAI_CAPACITY 50
Повторно разверните подсистему балансировки нагрузки.
azd up
Очистка ресурсов
Когда вы закончите работу с приложением чата и подсистемой балансировки нагрузки, очистите ресурсы. Ресурсы Azure, созданные в этой статье, выставляются в подписку Azure. Если вы не ожидаете, что эти ресурсы потребуются в будущем, удалите их, чтобы избежать дополнительных расходов.
Очистка ресурсов приложения чата
Вернитесь в статью о приложении чата, чтобы очистить эти ресурсы.
Очистка ресурсов подсистемы балансировки нагрузки
Выполните следующую команду Командной строки разработчика Azure, чтобы удалить ресурсы Azure и удалить исходный код:
azd down --purge --force
Параметры предоставляют следующие параметры:
purge
: удаленные ресурсы немедленно очищаются. Это позволяет повторно использовать TPM Azure OpenAI.force
: удаление происходит автоматически, не требуя согласия пользователя.
Очистка GitHub Codespaces
Удаление среды GitHub Codespaces гарантирует, что вы можете максимально увеличить объем бесплатных прав на базовые часы, которые вы получаете для вашей учетной записи.
Внимание
Дополнительные сведения о правах учетной записи GitHub см . в GitHub Codespaces ежемесячно включено в хранилище и основные часы.
Войдите на панель мониторинга GitHub Codespaces (https://github.com/codespaces).
Найдите текущие запущенные пространства Codespaces, полученные из
azure-samples/openai-aca-lb
репозитория GitHub.Откройте контекстное меню для пространства кода и нажмите кнопку "Удалить".
Получить помощь
Если у вас возникли проблемы с развертыванием подсистемы балансировки нагрузки azure Управление API, зайдите в журнал проблемы репозитория.
Пример кода
Примеры, используемые в этой статье, включают:
Следующий шаг
- Использование нагрузочного тестирования Azure для нагрузочного тестирования приложения чата с помощью