Escalado de Azure OpenAI para Python con Azure API Management
Aprenda a agregar equilibrio de carga de nivel empresarial a la aplicación para ampliar la aplicación de chat más allá de los límites de cuota de modelo y token de Azure OpenAI. Este enfoque usa Azure API Management para dirigir el tráfico inteligentemente entre tres recursos de Azure OpenAI.
Este artículo requiere que implemente dos ejemplos independientes:
Aplicación de chat
- Si aún no ha implementado la aplicación de chat, espere hasta que se implemente el ejemplo del equilibrador de carga.
- Si ya ha implementado la aplicación de chat una vez, cambiará la variable de entorno para admitir un punto de conexión personalizado para el equilibrador de carga y volver a implementarla.
Equilibrador de carga con Azure API Management
Nota:
En este artículo se usan una o varias plantillas de aplicación de IA como base para los ejemplos e instrucciones del artículo. Las plantillas de aplicación de IA proporcionan implementaciones de referencia bien mantenidas y fáciles de implementar que ayudan a garantizar un punto de partida de alta calidad para las aplicaciones de IA.
Arquitectura para el equilibrio de carga de Azure OpenAI con Azure API Management
Dado que el recurso de Azure OpenAI tiene límites específicos de cuota de tokens y modelos, una aplicación de chat que usa un único recurso de Azure OpenAI es propenso a tener errores de conversación debido a esos límites.
Para usar la aplicación de chat sin alcanzar esos límites, use una solución de carga equilibrada con Azure API Management. Esta solución expone sin problemas un único punto de conexión de Azure API Management al servidor de aplicaciones de chat.
El recurso de Azure API Management, como capa de API, se encuentra delante de un conjunto de recursos de Azure OpenAI. La capa de API se aplica a dos escenarios: normales y limitados. Durante un escenario normal en el que el token y la cuota del modelo están disponibles, el recurso de Azure OpenAI devuelve un valor de 200 a través de la capa de API y el servidor de aplicaciones back-end.
Cuando se limita un recurso debido a los límites de cuota, la capa de API puede reintentar un recurso de Azure OpenAI diferente inmediatamente para cumplir la solicitud de aplicación de chat original.
Requisitos previos
Suscripción de Azure. Crear una cuenta gratuita
Acceso concedido a Azure OpenAI en la suscripción de Azure que quiera.
Actualmente, solo la aplicación concede acceso a este servicio. Para solicitar acceso a Azure OpenAI, rellene el formulario en https://aka.ms/oai/access.
Los contenedores de desarrollo están disponibles para ambos ejemplos, con todas las dependencias necesarias para completar este artículo. Puede ejecutar los contenedores de desarrollo en GitHub Codespaces (en un explorador) o localmente mediante Visual Studio Code.
- Solo se requiere una cuenta de GitHub para usar Codespaces.
Apertura de la aplicación de ejemplo del equilibrador local de Azure API Management
GitHub Codespaces ejecuta un contenedor de desarrollo administrado por GitHub con Visual Studio Code para la web como interfaz de usuario. Para obtener el entorno de desarrollo más sencillo, utilice Codespaces de GitHub de modo que tenga las herramientas y dependencias de desarrollador correctas preinstaladas para completar este artículo.
Importante
Todas las cuentas de GitHub pueden usar Codespaces durante un máximo de 60 horas gratis cada mes con 2 instancias principales. Para obtener más información, consulte Almacenamiento y horas de núcleo incluidas mensualmente en GitHub Codespaces.
Implementación del equilibrador de carga de Azure API Management
Para implementar el equilibrador de carga en Azure, inicie sesión en Azure Developer CLI (AZD).
azd auth login
Finalice las instrucciones de inicio de sesión.
Implemente la aplicación del equilibrador de carga.
azd up
Deberá seleccionar una suscripción y una región para la implementación. No tienen por qué ser de la misma suscripción y región que la aplicación de chat.
Antes de continuar, espere a que se complete la implementación. Esto puede tardar hasta 30 minutos.
Obtención del punto de conexión del equilibrador de carga
Ejecute el siguiente comando de Bash para ver las variables de entorno desde la implementación. Necesitará esta información más adelante.
azd env get-values | grep APIM_GATEWAY_URL
Reimplementación de la aplicación de chat con el punto de chat del equilibrador de carga
Estos se completan en el ejemplo de la aplicación de chat.
Abra el contenedor de desarrollo de la aplicación de chat mediante una de las siguientes opciones.
Lenguaje Codespaces Visual Studio Code .NET JavaScript Python Inicie sesión en Azure Developer CLI (AZD).
azd auth login
Finalice las instrucciones de inicio de sesión.
Cree un entorno de AZD con un nombre como
chat-app
.azd env new <name>
Agregue la siguiente variable de entorno, que indica al back-end de la aplicación chat que usa una dirección URL personalizada para las solicitudes de OpenAI.
azd env set OPENAI_HOST azure_custom
Agregue la siguiente variable de entorno, que indica al back-end de la aplicación chat cuál es el valor de la dirección URL personalizada para la solicitud de OpenAI.
azd env set AZURE_OPENAI_CUSTOM_URL <APIM_GATEWAY_URL>
Implemente la aplicación de chat.
azd up
Configuración de los tokens por cuota de minutos (TPM)
De forma predeterminada, cada una de las instancias de OpenAI del equilibrador de carga se implementará con 30 000 TPM (tokens por minuto). Puedes usar la aplicación de chat con la confianza de que se ha creado para escalar horizontalmente entre muchos usuarios sin quedarse sin cuota. Cambie este valor cuando:
- Obtiene errores de capacidad de implementación: menor que ese valor.
- Planee una mayor capacidad, aumente el valor.
Use el siguiente comando para cambiar el valor.
azd env set OPENAI_CAPACITY 50
Vuelva a implementar el equilibrador de carga.
azd up
Limpieza de recursos
Cuando haya terminado con la aplicación de chat y el equilibrador de carga, limpie los recursos. Los recursos Azure creados en este artículo se facturan a su suscripción Azure. Si no espera necesitar estos recursos en el futuro, elimínelos para evitar incurrir en más gastos.
Limpieza de los recursos de la aplicación de chat
Vuelva al artículo de la aplicación de chat para limpiar esos recursos.
Limpieza de los recursos del equilibrador de carga
Ejecute el siguiente comando de la Azure Developer CLI para eliminar los recursos de Azure y eliminar el código de origen:
azd down --purge --force
Los modificadores proporcionan:
purge
: los recursos eliminados se purgan inmediatamente. Esto le permite reutilizar el TPM de Azure OpenAI.force
: la eliminación se produce de forma silenciosa, sin necesidad de consentimiento del usuario.
Limpiar GitHub Codespaces
La eliminación del entorno de GitHub Codespaces garantiza que pueda maximizar la cantidad de derechos de horas gratuitas por núcleo que obtiene para su cuenta.
Importante
Para obtener más información sobre los derechos de la cuenta de GitHub, consulte Almacenamiento y horas de núcleo incluidas mensualmente en GitHub Codespaces.
Inicie sesión en el panel de GitHub Codespaces (https://github.com/codespaces).
Busque los espacios de código que se ejecutan actualmente procedentes del repositorio de GitHub
azure-samples/openai-apim-lb
.Abra el menú contextual del elemento Codespaces y, a continuación, seleccione Eliminar.
Obtener ayuda
Si tiene problemas para implementar el equilibrador de carga de Azure API Management, registre el problema en el repositorio Problemas.
Código de ejemplo
Entre los ejemplos usados en este artículo se incluyen:
Paso siguiente
- Visualización de datos de diagnóstico de Azure API Management en Azure Monitor
- Uso de Azure Load Testing para probar la carga de la aplicación de chat con