View a markdown version of this page

Mejores prácticas de escalado y rendimiento - Amazon Bedrock

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Mejores prácticas de escalado y rendimiento

En este tema se explica cómo funcionan los límites de rendimiento y la programación en los puntos de enlace de Amazon Bedrock y se proporcionan las mejores prácticas para escalar las aplicaciones de IA generativa.

Puntos de conexión de Amazon Bedrock

Amazon Bedrock admite dos puntos finales para la inferencia:

  • bedrock-mantle.{region}.api.aws— Es compatible con las API de finalización y respuesta del OpenAI-compatible chat y con la API de mensajes antrópicos.

  • bedrock-runtime.{region}.amazonaws.com— Es compatible con las Bedrock-native InvokeModel API Converse, las API de finalización y respuestas de OpenAI-compatible chat y la API de mensajes antrópicos.

Para la mayoría de las aplicaciones nuevas, comience por. bedrock-runtime Úselo bedrock-mantle cuando necesite funciones que solo estén disponibles en ese punto final, como las herramientas del lado del servidor, la inferencia en segundo plano, los proyectos, los espacios de trabajo o un modelo que solo esté disponible en. bedrock-mantle Puede usar ambos puntos finales en la misma aplicación. Para obtener una comparación completa, consulteTerminales compatibles con Amazon Bedrock.

Por qué los dos puntos finales se comportan de manera diferente

Ambas superficies de punto final utilizan el mismo motor de inferencia subyacente, pero sus opciones de capacidad y contabilidad de cuotas son diferentes. bedrock-runtimeutiliza cuotas de fichas por modelo y, en algunos modelos, cuotas de solicitudes por minuto (RPM). bedrock-mantleno impone cuotas de RPM y usa cuotas de token de entrada y de salida independientes para los modelos que tienen cuotas publicadas. bedrock-mantleEs posible que otros modelos no tengan las cuotas por cuenta expuestas en las cuotas de servicio, pero su rendimiento sigue dependiendo de la capacidad de servicio interna.

Una cuota es un límite superior, no una garantía de que todas las solicitudes bajo demanda se atiendan de forma inmediata. Durante los períodos de alta demanda, las solicitudes pueden ponerse en cola o recibir errores de capacidad transitorios. Diseñe su aplicación para limitar la concurrencia, poner en cola el trabajo y reintentar los errores transitorios sin generar un aumento de reintentos.

punto final fundamental: rendimiento y cuotas

El bedrock-mantle punto final tiene el siguiente comportamiento de cuota:

  • Los modelos con cuotas publicadas tienen cuotas separadas para cada modelo, para cada región, para los tokens de entrada por minuto y para los de salida por minuto.

  • El punto final no aplica las cuotas de RPM. Dos cargas de trabajo con el mismo RPM pueden consumir cantidades de capacidad muy diferentes, así que planifique y limite la velocidad mediante tokens y simultaneidad, en lugar de hacerlo únicamente por RPM.

  • Cuando se admite una solicitud, la verificación del token de entrada incluye los tokens de entrada más el valor solicitado. max_tokens Una vez completada la respuesta, se repone la parte no utilizada de la reserva. max_tokensNo configure más de lo que necesita su solicitud.

  • Los modelos sin cuotas de TPM publicadas no tienen actualmente cuotas de TPM por cuenta expuestas en las cuotas de servicio. Esto no significa que el rendimiento sea ilimitado; la capacidad del servicio interno y la limitación de velocidad transitoria siguen vigentes.

  • La inferencia por lotes y el rendimiento aprovisionado solo están disponibles a través de. bedrock-runtime Service-tier y el soporte de los modelos varía según el modelo.

Los valores predeterminados y las asignaciones de tu cuenta pueden variar según el modelo, la región y el historial de uso. Para ver los valores actuales, los detalles de la evaluación de las cuotas y el proceso de AWS asistencia para solicitar un aumento, consultaCuotas para el punto final entre el lecho rocoso y el manto. Consulte la sección correspondiente Modelos de un vistazo para obtener información sobre el soporte de terminales, niveles de servicio y funciones específicos para cada modelo.

punto final de ejecución básico: rendimiento y cuotas

El bedrock-runtime punto final tiene el siguiente comportamiento de cuota:

  • Per-model, Las cuotas de tokens por región cuentan los tokens de entrada y salida juntos. Los tokens de salida consumen la cuota de acuerdo con una tasa de agotamiento específica del modelo.

  • Algunos modelos también tienen cuotas de RPM, mientras que otros modelos se rigen únicamente por cuotas simbólicas. Comprueba las cuotas que se aplican al modelo exacto y al perfil de inferencia que utilizas.

  • Per-minute y las cuotas de tokens por día se comparten entre las API de inferencia que utilizan el mismo modelo en este terminal. Las asignaciones son independientes bedrock-runtime y son independientes. bedrock-mantle

  • Los perfiles de inferencia personalizados, la inferencia por lotes y el rendimiento aprovisionado tienen cuotas independientes y solo están disponibles a través de. bedrock-runtime

Para ver los valores de las cuotas actuales, los detalles sobre la reducción de los tokens y el proceso de aumento de las cuotas, consulte. Cuotas para el punto final de ejecución básico Consulta la sección correspondiente Modelos de un vistazo para conocer el soporte para terminales, niveles de servicio y funciones específicos de cada modelo.

Comprender las respuestas de error de HTTP

HTTP 429

Una respuesta 429 significa que la solicitud no se ha admitido. Inspeccione el tipo de API-specific error en lugar de confiar únicamente en el estado HTTP. Un error ThrottlingException o un error de límite de velocidad generalmente significa que la solicitud superó la cuota de la cuenta o el límite de la tarifa de servicio. Algunas operaciones de tiempo de ejecución también utilizan HTTP 429 para. ModelNotReadyException bedrock-mantleActiva, comprueba el uso del TPM de entrada y salida y el max_tokens valor de la solicitud; el punto final no tiene una cuota de RPM. Activabedrock-runtime, comprueba si el modelo tiene una cuota de RPM y las cuotas de token combinadas.

HTTP 503

Una respuesta 503 significa que el servicio no puede gestionar temporalmente la solicitud debido a la gran demanda o a una limitación de capacidad. No indica que hayas superado la cuota de la cuenta. Vuelva a intentar dar respuestas transitorias con retardo y fluctuación exponenciales. Si la respuesta persiste, deje de aumentar el tráfico, reduzca la simultaneidad y considere la posibilidad de utilizar una inferencia regional o interregional diferente cuando sea posible.

HTTP 529 () overloaded_error

Algunas API de modelos devuelven 529 cuando el modelo no puede procesar temporalmente la solicitud debido a la alta demanda o a una capacidad de servicio insuficiente. Trátelo como un error de capacidad transitorio. Si la respuesta incluye un Retry-After encabezado, espere al menos ese tiempo antes de volver a intentarlo y añada fluctuación para que los clientes no lo vuelvan a intentar simultáneamente.

Para conocer API-specific las causas y los pasos para resolverlos, consulte. Solución de códigos de error de la API de Amazon Bedrock

Tratamiento de errores recomendado

Errores transitorios

Vuelva a intentar solo los errores que se puedan reintentar de forma segura, como los errores transitorios de limitación y capacidad. Si el servicio devuelve un Retry-After encabezado, acéptelo. De lo contrario, implementa un retroceso exponencial con una fluctuación aleatoria:

  • Comience con un breve retraso (por ejemplo, 1 segundo).

  • Aumente la demora después de cada reintento y limite la demora máxima para que se ajuste al presupuesto de latencia de su aplicación.

  • Agregue fluctuaciones aleatorias y evite los reintentos sincronizados entre los trabajadores.

  • Utilice un presupuesto de reintentos limitado que se ajuste al objetivo de latencia de su aplicación. Por ejemplo, limita la operación a un total de seis intentos: la solicitud inicial y un máximo de cinco reintentos.

La mayoría de AWS los SDK y bibliotecas HTTP populares ofrecen soporte integrado para este patrón. Retry-setting los nombres difieren: el de botocore total_max_attempts incluye la solicitud inicial, mientras que el de los SDK de OpenAI y Anthropic solo cuenta los reintentos. max_retries Por lo tanto, los siguientes ejemplos utilizan valores numéricos diferentes para proporcionar el mismo presupuesto para seis intentos del ejemplo.

ejemplo Vuelva a intentar la configuración de bedrock-runtime (AWS SDK/boto3)
import boto3 from botocore.config import Config config = Config(retries={"total_max_attempts": 6, "mode": "standard"}) client = boto3.client("bedrock-runtime", config=config)
ejemplo Vuelva a intentar la configuración para bedrock-mantle (OpenAI SDK)
from openai import OpenAI client = OpenAI( api_key=api_key, base_url=f"https://bedrock-mantle.{region}.api.aws/v1", max_retries=5, )
ejemplo Vuelva a intentar la configuración para bedrock-mantle (Anthropic SDK)
import anthropic client = anthropic.Anthropic( api_key=api_key, base_url=f"https://bedrock-mantle.{region}.api.aws/anthropic", max_retries=5, )

Configure los tiempos de espera de conexión y lectura por separado de los reintentos, en función de la duración máxima de inferencia documentada del modelo y la operación. Un tiempo de espera inferior al de una solicitud de inferencia válida de larga duración puede provocar reintentos evitables y trabajos duplicados.

Errores de capacidad sostenidos

Si recibe errores 503 o 529 persistentes, los reintentos por sí solos pueden amplificar la carga. Es posible que el servicio esté experimentando una restricción de capacidad temporal o que la carga de trabajo supere la capacidad disponible actualmente para el modelo y la región. Siga estos pasos:

  • Detenga la rampa y regrese a la última tasa de solicitudes y nivel de simultaneidad estables.

  • Utilice colas limitadas de simultaneidad, limitación de velocidad y solicitudes en el lado del cliente.

  • Aplaza o elimina las solicitudes de menor prioridad hasta que se recupere la capacidad.

  • bedrock-runtimeEn cambio, utilice la inferencia interregional cuando el modelo la admita. Para cargas de trabajo predecibles y sostenidas, evalúe el rendimiento aprovisionado.

  • Si el problema continúa, consulta el panel de AWS estado y ponte en contacto con el equipo de AWS soporte para indicar los ID de las solicitudes y las marcas horarias UTC.

Aumentando el rendimiento

On-demand la capacidad puede variar según el modelo, la región y la época. No se garantiza que todas las solicitudes dentro de una cuota tengan éxito durante los períodos de alta demanda, por lo que debe aumentarlas gradualmente al iniciar una carga de trabajo, cambiar de modelo o región o aumentar considerablemente el tráfico. Esto es especialmente importante para bedrock-mantle los modelos que no tienen una cuota de publicaciones por cuenta.

Procedimiento de aceleración recomendado

  1. Calcule la tasa de tokens y la concurrencia objetivo para cada punto final, modelo y región. Para ellobedrock-mantle, realice un seguimiento de los tokens de entrada y salida por separado e incluya el max_tokens valor solicitado en la estimación de admisión de los tokens de entrada.

  2. Comience con una línea base estable conocida por debajo del objetivo. Si no tiene una línea base, comience con una carga representativa pequeña en lugar de enviar todo el volumen objetivo.

  3. Mantén cada nivel el tiempo suficiente para observar el éxito de la solicitud, los errores 429/503 /529, los percentiles de latencia, el consumo de tokens, la simultaneidad y la profundidad de las colas.

  4. Aumente paso a paso de forma controlada. Cambie solo una dimensión de carga principal a la vez para poder identificar la causa de una regresión.

  5. Si la limitación, los errores de capacidad o la latencia superan tu límite, pausa la rampa, respeta cualquier Retry-After encabezado y vuelve al último nivel estable.

  6. Continúe hasta alcanzar el objetivo y repita la validación para cada modelo y región que reciba tráfico de producción.

Elija el tamaño del paso y el período de observación a partir del patrón de tráfico y latencia de su carga de trabajo. No utilices el RPM como la única señal de control: el tamaño de los tokens de solicitud y la duración de las respuestas pueden cambiar considerablemente el consumo de capacidad, incluso cuando el RPM se mantiene constante.

Para aumentar las bedrock-mantle cuotas, sigaSolicitud de aumento de cuota. Parabedrock-runtime, sigueSolicitud de aumento de cuota.

Prácticas recomendadas adicionales

  • Usa indicadores de función para hacer la transición gradual del tráfico entre modelos en lugar de cambiar todo el tráfico a la vez.

  • Distribuya las grandes cargas de trabajo en varios minutos y tenga en cuenta los patrones de hora del día para evitar los períodos de mayor uso.

  • Realice pruebas con distribuciones representativas del tamaño de entrada, el tamaño de salida, la latencia y la simultaneidad. Evite enviar una ráfaga repentina de solicitudes de prueba.

  • Utilice límites de velocidad, simultaneidad y colas delimitados por el lado del cliente que tengan en cuenta los tokens. Un RPM-only limitador no protege contra los cambios en el tamaño de las solicitudes.

  • Para trabajos sin conexión asincrónicos y de gran volumen, utilice la inferencia por lotes activada. Procesamiento de múltiples peticiones con la inferencia por lotes bedrock-runtime

  • Para los modelos compatibles y las solicitudes que no son urgentes y que pueden tolerar una latencia variable, considere el nivel de servicio Flex. Niveles de servicio para optimizar el rendimiento y los costes

Disponibilidad regional e inferencia interregional

On-demand la capacidad es regional y puede variar de una región a otra. Si su carga de trabajo se dirige a una sola región, es posible que se produzcan errores de capacidad durante los períodos de gran demanda. bedrock-runtimeUtilícela Inferencia interregional global cuando el modelo y sus requisitos de residencia de datos lo respalden. Si implementas tu propia conmutación por error regional, verifica la disponibilidad del modelo en cada región de destino y aplica reintentos limitados para que la conmutación por error no genere un aumento del tráfico.

Obtener ayuda

  • Planificación del rendimiento: calcule los picos de entrada y salida, la latencia de respuesta, la concurrencia y la tolerancia a las colas para cada modelo y región. Incluya un margen de maniobra específico para cada carga de trabajo y póngase en contacto con su Cuenta de AWS equipo para lanzamientos importantes o críticos para la empresa.

  • Optimización del rendimiento: supervise el tamaño de los anuncios, los tokens generados, los percentiles de latencia y el max_tokens uso de la caché cuando sea posible. Optimice las solicitudes y los límites de salida para evitar reservar o consumir tokens innecesarios.

  • Escalamiento del soporte: al abrir un caso de AWS soporte, incluye el ID del punto final, la región, el modelo o el perfil de inferencia, el estado HTTP y el tipo de error de la API, los ID de las solicitudes, las marcas de hora UTC, la tasa de tokens, la tasa de solicitudes, la simultaneidad y el cronograma de escalado.

Resumen de recomendaciones

Escenario Recomendación
Cargas de trabajo generales Comience por bedrock-runtime. Úselo bedrock-mantle para las capacidades o los modelos que lo requieran. Consulte Terminales compatibles con Amazon Bedrock.
Errores transitorios 429, 503 o 529 Inspeccione el tipo de error de la API. En el caso de errores que se puedan volver a intentar, respete Retry-After y vuelva a intentarlo con un retraso y una fluctuación exponenciales dentro de un presupuesto de reintento limitado.
Errores de capacidad sostenidos Detenga el aumento gradual, vuelva al último nivel estable, limite la concurrencia y las colas, aplace los trabajos de menor prioridad y utilice la inferencia interregional cuando sea posible.
Planificación de cuotas Utilice TPM de entrada y salida separados parabedrock-mantle. Usa cuotas de tokens combinadas, quema de tokens y RPM cuando corresponda. bedrock-runtime
Procesamiento de gran tamaño sin conexión Utilice la inferencia por lotes para trabajos asincrónicos. Utilice el nivel de servicio Flex para las solicitudes compatibles que no sean urgentes y que puedan tolerar una latencia variable.