Compartir a través de


Escalado de Azure OpenAI para Python con Azure API Management

Obtenga información sobre cómo 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 del servicio OpenAI de Azure. 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:
    • Espere a implementar la aplicación de chat hasta después de implementar el ejemplo del equilibrador de carga.
    • Si ya ha implementado la aplicación de chat una vez, cambie la variable de entorno para admitir un punto de conexión personalizado para el equilibrador de carga y vuelva a implementarla.
  • Equilibrador de carga con Azure API Management.

Nota:

En este artículo se usan una o varias plantillas de aplicaciones 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 que son fáciles de implementar. Ayudan a garantizar un punto de partida de alta calidad para las aplicaciones de inteligencia artificial.

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.

Diagrama que muestra la arquitectura de la aplicación de chat con un recurso de Azure OpenAI resaltado.

Para usar la aplicación de chat sin alcanzar esos límites, use una solución de carga equilibrada con API Management. Esta solución expone sin problemas un único punto de conexión de API Management al servidor de aplicaciones de chat.

Diagrama que muestra la arquitectura de aplicaciones de chat con Azure API Management delante de tres recursos de Azure OpenAI.

El recurso de API Management, como una 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.

Diagrama que muestra un escenario normal con tres grupos de puntos de conexión de Azure OpenAI. El primer grupo de dos puntos de conexión obtiene tráfico correcto.

Cuando un recurso se ralentiza debido a los límites de cuota, la capa de API puede intentar acceder inmediatamente a un recurso diferente de Azure OpenAI para satisfacer la solicitud original de la aplicación de chat.

Diagrama que muestra un escenario de estrangulamiento con un código de respuesta 429 de error y un encabezado de respuesta que indica cuántos segundos el cliente debe esperar para volver a intentarlo.

Prerrequisitos

Abre la aplicación de ejemplo del equilibrador de carga 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.

Abrir en GitHub Codespaces.

Importante

Todas las cuentas de GitHub pueden usar GitHub Codespaces durante hasta 60 horas gratuitas cada mes con dos 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

  1. Para implementar el equilibrador de carga en Azure, inicie sesión en la CLI para desarrolladores de Azure (AZD):

    azd auth login
    
  2. Finalice las instrucciones de inicio de sesión.

  3. Implemente la aplicación del equilibrador de carga:

    azd up
    

    Seleccione una suscripción y una región para la implementación. No tienen que ser la misma suscripción y región que la aplicación de chat.

  4. Espere a que finalice la implementación antes de continuar. Este proceso 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 de la implementación. Necesitará esta información más adelante.

azd env get-values | grep APIM_GATEWAY_URL

Vuelva a desplegar la aplicación de chat con el punto de conexión del equilibrador de carga

Estos ejemplos se completan en el ejemplo de aplicación de chat.

  1. Abra el contenedor de desarrollo de la aplicación de chat usando una de las siguientes opciones.

    Language GitHub Codespaces Visual Studio Code
    .NET Abrir en GitHub Codespaces Abrir en contenedores de desarrollo
    JavaScript Abrir en GitHub Codespaces Abrir en contenedores de desarrollo
    Pitón Abrir en GitHub Codespaces Abrir en contenedores de desarrollo
  2. Inicie sesión en la CLI para desarrolladores de Azure (AZD):

    azd auth login
    

    Finalice las instrucciones de inicio de sesión.

  3. Cree un AZD entorno con un nombre como chat-app:

    azd env new <name>
    
  4. Agregue la siguiente variable de entorno, que indica al back-end de la aplicación de chat que use una dirección URL personalizada para las solicitudes de Azure OpenAI:

    azd env set OPENAI_HOST azure_custom
    
  5. Agregue esta variable de entorno para indicar al back-end de la aplicación de chat la dirección URL personalizada de la solicitud de Azure OpenAI:

    azd env set AZURE_OPENAI_CUSTOM_URL <APIM_GATEWAY_URL>
    
  6. Implemente la aplicación de chat:

    azd up
    

Configuración de la cuota de TPM

De forma predeterminada, cada una de las instancias de Azure OpenAI del equilibrador de carga se implementa con una capacidad de 30 000 tokens por minuto (TPM). Puede usar la aplicación de chat con la confianza de que es escalable para muchos usuarios sin agotar la cuota. Cambie este valor cuando:

  • Recibe errores de capacidad de implementación: reduzca el valor.
  • Necesita mayor capacidad: aumente el valor.
  1. Use el siguiente comando para cambiar el valor:

    azd env set OPENAI_CAPACITY 50
    
  2. 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

Regresa al artículo sobre la aplicación de chat para depurar esos recursos.

Limpieza de los recursos del equilibrador de carga

Elimine los recursos de Azure y quite el código fuente:

azd down --purge --force

Los interruptores proporcionan:

  • purge: Los recursos eliminados se purgan inmediatamente. Puede reutilizar los tokens de Azure OpenAI por minuto.
  • force: la eliminación se produce de forma silenciosa, sin necesidad de consentimiento del usuario.

Limpieza de recursos

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.

  1. Inicie sesión en el panel de GitHub Codespaces.

  2. Busque los espacios de código que se están ejecutando actualmente que tienen como origen el azure-samples/openai-apim-lb repositorio de GitHub.

    Captura de pantalla que muestra todos los espacios de código en ejecución, incluidos su estado y sus plantillas.

  3. Abra el menú contextual del elemento GitHub Codespaces y seleccione Eliminar.

    Captura de pantalla que muestra el menú contextual de un único espacio de código con la opción Eliminar resaltada.

Obtención de ayuda

Si tiene problemas para implementar el equilibrador de carga de Azure API Management, agregue el problema a la página web Problemas del repositorio.

Código de ejemplo

Entre los ejemplos usados en este artículo se incluyen: