Introducción a las implementaciones aprovisionadas en Microsoft Foundry

La siguiente guía le guía por los pasos clave para crear una implementación aprovisionada con el recurso Microsoft Foundry. Para obtener más información sobre los conceptos que se describen aquí, consulte:

Requisitos previos

Comprobación de la disponibilidad de la cuota de PTU

Las implementaciones de rendimiento aprovisionadas tienen un tamaño en unidades denominadas Unidades de rendimiento aprovisionadas (PTU). La cuota de PTU para cada tipo de implementación aprovisionado se concede a una suscripción de forma regional y limita el número total de PTUs que se pueden implementar en esa región en todos los modelos y versiones.

La creación de una nueva implementación requiere una cuota disponible (sin usar) para cubrir el tamaño deseado de la implementación. Por ejemplo: si una suscripción tiene lo siguiente en Centro-Sur de EE. UU.

  • Cuota total de PTU = 500 PTU
  • Implementaciones:
    • 100 PTUs: GPT-4o, 2024-05-13
    • 100 PTUs: DeepSeek-R1, 1

A continuación, se consideran usadas 200 PTU de cuota y hay 300 PTUs disponibles para su uso para crear nuevas implementaciones.

Se asigna una cantidad predeterminada de cuota aprovisionada global, de zona de datos y regional a suscripciones aptas en varias regiones.

Puede ver la cuota disponible en una región visitando el panel Quota en el panel Microsoft FoundryOperate y seleccionando la suscripción y región deseadas.

Se puede solicitar cuota adicional seleccionando el botón Solicitar cuota .

Creación de un recurso foundry

Las implementaciones aprovisionadas se crean a través de objetos de recursos Foundry dentro de Azure. Debe tener un recurso Foundry en cada región donde quiera crear una implementación.

Nota

Los recursos de Foundry pueden admitir varios tipos de implementaciones de Foundry al mismo tiempo. No es necesario dedicar nuevos recursos a las implementaciones aprovisionadas.

Descubre modelos con la opción de despliegue aprovisionada

Una vez que haya comprobado la cuota, puede crear una implementación. Vaya al catálogo de modelos de Foundry para detectar los modelos con opciones de implementación aprovisionadas.

  1. Inicie sesión en Microsoft Foundry. Asegúrese de que el interruptor New Foundry esté activado. Estos pasos hacen referencia a Foundry (nuevo).
  2. En la página principal del portal de Foundry, elija la suscripción habilitada para las implementaciones aprovisionadas y seleccione el recurso deseado en una región donde tenga la cuota.
  3. Seleccione Detectar en el panel de navegación superior derecho y, a continuación, Modelos en el panel izquierdo.
  4. Seleccione el filtro Collections y filtre por Direct de Azure para ver los modelos mantenidos y servidos directamente por Azure. Una selección de estos modelos admite la opción de implementación de rendimiento aprovisionado.
  5. Seleccione el modelo que desea implementar para abrir su tarjeta de modelo.
  6. Seleccione Implementar>configuración personalizada para personalizar la implementación.
  7. Seleccione el menú desplegable Tipo de implementación para ver si la implementación aprovisionada está disponible para el modelo.

Cree su implementación provisionada: la capacidad está disponible

Puede crear la implementación mediante programación mediante el siguiente comando CLI de Azure. Para especificar el tipo de implementación, modifique a sku-nameGlobalProvisionedManaged, DataZoneProvisionedManagedo ProvisionedManaged en función del tipo de implementación previsto. Actualice con sku-capacity el número deseado de unidades de rendimiento aprovisionadas.

az cognitiveservices account deployment create \
--name <myResourceName> \
--resource-group <myResourceGroupName> \
--deployment-name MyModel \
--model-name GPT-4 \
--model-version 0613  \
--model-format OpenAI \
--sku-capacity 100 \
--sku-name ProvisionedManaged

Rest, plantilla de ARM, Bicep y Terraform también se pueden usar para crear implementaciones. Consulte la sección sobre la automatización de implementaciones en la guía de procedimientos de administración de cuotas y reemplace por sku.nameGlobalProvisionedManaged, DataZoneProvisionedManagedo ProvisionedManaged en lugar de Standard.

Opcionalmente, comprar una reserva

Una vez que haya creado la implementación, es posible que quiera comprar un descuento por período a través de una reserva de Azure. Una reserva de Azure puede proporcionar un descuento sustancial en la tarifa por hora para los usuarios que piensan usar la implementación más allá de unos días.

Para obtener más información sobre el modelo de compra y las reservas, consulte:

Importante

La disponibilidad de la capacidad para las implementaciones de modelos es dinámica y cambia con frecuencia entre regiones y modelos. Para evitar que compre una reserva para más PTUs de las que puede utilizar, primero cree las implementaciones y, a continuación, compre la reserva de Azure para cubrir los PTUs que ha implementado. Este procedimiento recomendado garantizará que pueda aprovechar al máximo el descuento por reserva e impedirá que compre un compromiso de término que no pueda usar.

Realiza tus primeras llamadas de inferencia

El código de inferencia para las implementaciones aprovisionadas es el mismo que un tipo de implementación estándar. El siguiente fragmento de código muestra una llamada para completar un chat a un modelo GPT-4. Recomendamos que, al usar estos modelos programáticamente por primera vez, comience con nuestra guía de inicio rápido. Nuestra recomendación es usar la biblioteca de OpenAI con la versión 1.0 o posterior, ya que esto incluye lógica de reintento dentro de la biblioteca.

    import os
    from openai import AzureOpenAI

    client = AzureOpenAI(
        azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"), 
        api_key=os.getenv("AZURE_OPENAI_API_KEY"),  
        api_version="2024-10-21"
    )

    response = client.chat.completions.create(
        model="gpt-4", # model = "deployment_name".
        messages=[
            {"role": "system", "content": "You are a helpful assistant."},
            {"role": "user", "content": "Does Azure OpenAI support customer managed keys?"},
            {"role": "assistant", "content": "Yes, customer managed keys are supported by Azure OpenAI."},
            {"role": "user", "content": "Do other Azure services support this too?"}
        ]
    )

    print(response.choices[0].message.content)

Importante

Para producción, use una forma segura de almacenar y acceder a sus credenciales, como Azure Key Vault. Para obtener más información sobre la seguridad de las credenciales, consulte este artículo de seguridad .

Descripción del rendimiento esperado

La cantidad de rendimiento que puede lograr en el punto de conexión es un factor del número de PTUs implementados, tamaño de entrada, tamaño de salida y velocidad de llamadas. El número de llamadas simultáneas y el número total de tokens procesados puede variar en función de estos valores.

Medición del uso de la implementación

Al implementar un número especificado de unidades de rendimiento aprovisionadas (PTU), se pone a disposición de ese punto de conexión una cantidad establecida de rendimiento de inferencia. El uso de este rendimiento de procesamiento es una fórmula compleja basada en el modelo, la tasa de llamadas de la versión del modelo, el tamaño del prompt y el tamaño de generación. Para simplificar este cálculo, proporcionamos una métrica de uso en Azure Monitor. La implementación devuelve un 429 en cualquier nueva llamada cuando la utilización supera el 100%. El uso aprovisionado se define de la siguiente manera:

Uso del despliegue de PTU = (PTUs consumidos en el período de tiempo) / (PTUs desplegados en el período de tiempo)

Puede encontrar la medida de uso en la sección Azure-Monitor del recurso. Para acceder a los paneles de supervisión, inicie sesión en https://portal.azure.com, vaya al recurso Azure OpenAI y seleccione la página Métricas en el panel de navegación izquierdo. En la página de métricas, seleccione la métrica "Uso aprovisionado-administrado V2". Si tiene más de una implementación en el recurso, también debe dividir los valores por cada implementación seleccionando el botón "Aplicar división".

Captura de pantalla del uso administrado aprovisionado en el panel de métricas del recurso en el portal de Azure.

Gestión del uso elevado

Las implementaciones aprovisionadas proporcionan una cantidad asignada de capacidad de computación para ejecutar un modelo determinado. La métrica "Provisioned-Managed Utilización V2" de Azure Monitor mide la utilización de la implementación en incrementos de un minuto. Provisioned-Managed implementaciones también están optimizadas para que las llamadas aceptadas se procesen con una latencia máxima coherente por llamada. Cuando la carga de trabajo supera su capacidad asignada, el servicio devuelve un código de estado HTTP 429 hasta que el uso cae por debajo de 100%. El tiempo antes de reintentar se proporciona en los encabezados de respuesta retry-after y retry-after-ms que proporcionan el tiempo en segundos y milisegundos respectivamente. Este enfoque mantiene los objetivos de latencia por llamada al mismo tiempo que proporciona al desarrollador control sobre cómo controlar situaciones de alta carga, por ejemplo, reintentar o desviar a otra experiencia o punto de conexión.

¿Qué debo hacer cuando reciba una respuesta 429?

Una respuesta 429 indica que las PTUs asignadas se consumen completamente en el momento de la llamada. La respuesta incluye los retry-after-ms encabezados y retry-after que indican el tiempo de espera antes de que se acepte la siguiente llamada. La forma en que decide controlar una respuesta 429 depende de los requisitos de la aplicación. Estas son algunas consideraciones:

  • Si puede tolerar latencias más largas por llamada, implemente la lógica de reintento del lado del cliente para esperar el retry-after-ms tiempo y volver a intentar. Este enfoque le permite maximizar el rendimiento en la implementación. Los SDKs de cliente de Microsoft ya lo gestionan con valores predeterminados razonables. Es posible que todavía necesite un ajuste adicional en función de los casos de uso.
  • Considere la posibilidad de redirigir el tráfico a otros modelos, implementaciones o experiencias. Este enfoque es la solución de latencia más baja porque esta acción se puede realizar tan pronto como reciba la señal 429. La señal 429 no es una respuesta de error inesperada al llegar a una alta utilización, sino que forma parte del diseño para la gestión de colas y la carga alta en las implementaciones aprovisionadas.

Modificación de la lógica de reintento dentro de las bibliotecas cliente

Los SDK de Azure OpenAI reintentan las respuestas 429 de forma predeterminada e internamente en el cliente (hasta el máximo de reintentos). Las bibliotecas respetan el retry-after tiempo. También puede modificar el comportamiento de reintento para adaptarse mejor a su experiencia. Este es un ejemplo con la biblioteca de Python.

Puede usar la max_retries opción para configurar o deshabilitar los valores de reintento:

import os
from openai import AzureOpenAI

# Configure the default for all requests:
client = AzureOpenAI(
    azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"),
    api_key=os.getenv("AZURE_OPENAI_API_KEY"),
    api_version="2024-10-21",
    max_retries=5,# default is 2
)

# Or, configure per-request:
client.with_options(max_retries=5).chat.completions.create(
    model="gpt-4", # model = "deployment_name".
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Does Azure OpenAI support customer managed keys?"},
        {"role": "assistant", "content": "Yes, customer managed keys are supported by Azure OpenAI."},
        {"role": "user", "content": "Do other Azure services support this too?"}
    ]
)

Ejecución de una prueba comparativa

Las capacidades exactas de rendimiento y capacidad de procesamiento de su instancia dependen del tipo de solicitudes que realice y de la carga de trabajo específica. La mejor manera de determinar el rendimiento de la carga de trabajo es ejecutar una prueba comparativa en sus propios datos.

Para ayudarle en este trabajo, la herramienta de pruebas comparativas proporciona una manera de ejecutar pruebas comparativas fácilmente en la implementación. La herramienta incluye varias formas de carga de trabajo preconfiguradas posibles y genera métricas clave de rendimiento. Obtenga más información sobre la herramienta y las opciones de configuración en nuestro repositorio de GitHub: https://github.com/Azure/azure-openai-benchmark.

Se recomienda el siguiente flujo de trabajo:

  1. Calcule las PTU de rendimiento mediante la calculadora de capacidad.
  2. Ejecute una prueba comparativa con esta forma de tráfico durante un período de tiempo prolongado (más de 10 minutos) para observar los resultados en un estado estable.
  3. Observe los valores de uso, tokens procesados y velocidad de llamadas de la herramienta de pruebas comparativas y Azure Monitor.
  4. Ejecute una prueba comparativa con su propio patrón de tráfico y cargas de trabajo utilizando su implementación del cliente. Asegúrese de implementar la lógica de reintento mediante una biblioteca cliente de OpenAI Azure o una lógica personalizada.