Saltar al contenido

¿Cómo soluciono el error “ThrottlingException” cuando uso los recursos bajo demanda de Amazon Bedrock?

6 minutos de lectura
0

Quiero solucionar el error “ThrottlingException” (código de estado HTTP 429) que recibo cuando uso los recursos bajo demanda de Amazon Bedrock.

Descripción corta

Cuando superas las cuotas de servicio, Amazon Bedrock rechaza tus solicitudes.

Amazon Bedrock devuelve un error “ThrottlingException” (código de estado HTTP: 429) y recibirás uno de los siguientes mensajes de error en el cliente:

  • “Too many requests, please wait before trying again. You have sent too many requests. Wait before trying again”.
  • “Your request rate is too high. Reduce the frequency of requests”.
  • “Too many tokens, please wait before trying again”.

Resolución

Nota: Si se muestran errores al poner en marcha comandos de Interfaz de la línea de comandos de AWS (AWS CLI), consulta Solución de problemas para AWS CLI. Además, asegúrate de utilizar la versión más reciente de AWS CLI.

Supervisión de las cuotas de servicio de AWS

Revisa tus cuotas de servicio de Amazon Bedrock para asegurarte de que no las superas. Comprueba las métricas de Amazon CloudWatch en incrementos de 1 minuto para identificar los patrones de limitación. Si tu consumo supera las cuotas en las horas de mayor actividad, es posible que se produzcan limitaciones de recursos incluso en lotes que anteriormente se habían realizado correctamente. Para asegurarte de que el volumen de solicitudes de tu aplicación no supere las cuotas, supervisa las métricas de tiempo de ejecución de Amazon Bedrock InputTokenCount e Invocations.

Algunos modelos tienen cuotas independientes para solicitudes por minuto (RPM) y tokens por minuto (TPM) que Amazon Bedrock aplica simultáneamente.

Las versiones de modelos más recientes pueden tener cuotas diferentes a las de las versiones anteriores.

Nota: El panel de Service Quotas solo muestra las cuotas configuradas, no el uso en tiempo real. Para supervisar el uso en tiempo real, utiliza CloudWatch.

Uso de perfiles de inferencia entre regiones

Utiliza perfiles de inferencia entre regiones para enrutar el tráfico de forma dinámica entre varias regiones de AWS para lograr una disponibilidad óptima para cada solicitud y un mejor rendimiento durante los periodos de uso intenso. Cada región cuenta con grupos de capacidad independientes. Para evitar la limitación de recursos en el grupo de capacidad de una región, distribuye las solicitudes entre varias regiones.

Algunos modelos, como Anthropic Claude 3.5 Sonnet, requieren perfiles de inferencia interregionales en ciertas regiones. Los modelos como Anthropic Claude 4.5 Sonnet también ofrecen perfiles de inferencia globales que permiten gestionar las ráfagas de tráfico no planificadas.

Para obtener más información, consulta el ejemplo de código sobre la interferencia entre regiones en el taller amazon-bedrock-workshop del sitio web de GitHub.

Nota: Para usar un perfil de inferencia, debes usar una región y un modelo compatibles con Amazon Bedrock.

Solicitud de un aumento de cuota

Las cuentas de AWS nuevas pueden tener cuotas iniciales más bajas que las cuotas predeterminadas. Algunos modelos tienen cuotas fijas no ajustables. Si el tráfico de la carga de trabajo supera las cuotas bajo demanda de tu cuenta, ponte en contacto con AWS Support o con el administrador de cuentas para solicitar un aumento de la cuota. AWS puede ajustar las cuotas predeterminadas en función de los patrones de uso o los requisitos del servicio.

Incluye la siguiente información en la solicitud:

  • El nombre de la cuota que quieres aumentar.
  • El ID del modelo.
  • La región objeto del aumento de la cuota.
  • Una breve explicación de tu caso de uso.
  • Tu uso previsto, incluidos los tokens y solicitudes estables y máximos por minuto, y el promedio de los tokens de entrada y salida por solicitud.

Uso del rendimiento aprovisionado

Si tienes requisitos de alto rendimiento, compra rendimiento aprovisionado.

Nota: Al utilizar el rendimiento aprovisionado, incurres en costes adicionales. Para obtener información sobre los precios del rendimiento aprovisionado, consulta la sección de Precios del modelo de Precios de Amazon Bedrock.

Para obtener más información sobre cómo puedes utilizar el rendimiento aprovisionado, consulta Use a Provisioned Throughput with an Amazon Bedrock resource (Uso de un rendimiento aprovisionado con un recurso de Amazon Bedrock). Para usar AWS CLI o el SDK de Python para crear un rendimiento aprovisionado, consulta Code examples for Provisioned Throughput (Ejemplos de código para un rendimiento aprovisionado).

Nota: Antes de comprar rendimiento aprovisionado, asegúrate de utilizar una región y un modelo compatibles con Amazon Bedrock.

Adición de reintentos con retroceso exponencial

Cuando utilizas el modo bajo demanda, Amazon Bedrock utiliza un grupo de capacidad compartido entre varios clientes. Durante los periodos de alta demanda de servicio, es posible que experimentes limitaciones de recursos incluso cuando tus solicitudes estén dentro de las cuotas de la cuenta. Además, el servicio administra automáticamente la asignación de capacidad entre todos los usuarios.

Se recomienda utilizar reintentos con retroceso exponencial y fluctuación aleatoria. Si usas los SDK de AWS, consulta Retry behavior (Comportamiento de reintentos).

Asegúrate de que el tiempo de espera entre reintentos sea de 1 minuto completo cuando se alcancen las cuotas por minuto. Sincroniza los reintentos con el ciclo de actualización de cuotas de 60 segundos. Además, distribuye tus solicitudes en varios segundos en un periodo de 1 minuto.

Ejemplo de configuración de Python con modo de reintento adaptativo:

from botocore.config import Config
config = Config(
    retries={
        'max_attempts': 10,  # Default is 3
        'mode': 'adaptive'
    }
)
bedrock_runtime = boto3.client('bedrock-runtime', config=config)

Resolución del error “ServiceUnavailable”

Se produce un error “ServiceUnavailable” (código de estado HTTP 503) debido a restricciones temporales de capacidad, no a que se superen las cuotas. Por lo general, este error se resuelve automáticamente, pero puede requerir ajustes de arquitectura para cargas de trabajo críticas.

Revisa los registros de AWS CloudTrail para comprobar si recibes el error “ServiceUnavailable” con el error “ThrottlingException”.

Si recibes ambos errores, realiza las siguientes acciones para resolver el error “ServiceUnavailable”:

Resolución de las limitaciones inesperadas cuando no se han superado las cuotas

Si has sufrido una limitación y no has superado las cuotas de servicio, toma las siguientes medidas: