我想对我在使用 Amazon Bedrock 按需资源时收到的"ThrottlingException"(429 HTTP 状态代码)错误进行故障排除。
简短描述
当您超出服务配额时,Amazon Bedrock 会拒绝您的请求。
Amazon Bedrock 返回"ThrottlingException"(HTTP 状态代码: 429)错误,且您会在客户端收到以下错误消息之一:
- "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."
解决方法
**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI。
监控您的 AWS 服务配额
查看您的 Amazon Bedrock 服务配额,以确保不超出这些配额。以 1 分钟的时间间隔查看 Amazon CloudWatch 指标,以识别节流模式。当高峰时段的使用量超出配额时,即使是之前成功的批次也可能会出现节流。为确保您的应用程序的请求量不超出配额,请监控 Amazon Bedrock 运行时指标 InputTokenCount 和 Invocations。
某些模型针对每分钟请求数 (RPM) 和每分钟令牌数 (TPM) 设置了单独的配额,Amazon Bedrock 会同时执行这些配额。
新模型版本的配额可能与以前的版本不同。
**注意:**服务配额控制面板仅显示已配置的配额,不显示实时使用情况。要监控实时使用情况,请使用 CloudWatch。
使用跨区域推理配置文件
使用跨区域推理配置文件可在多个 AWS 区域之间动态路由流量,从而为每个请求提供最佳可用性,并在高使用量时段提供更好的性能。每个区域维护独立的容量池。为避免某个区域的容量池出现节流,请将请求分配到多个区域。
某些模型(例如 Anthropic Claude 3.5 Sonnet)在特定区域中需要使用跨区域推理配置文件。
有关详细信息,请参阅 GitHub 网站上 amazon-bedrock-workshop 中的跨区域推理代码示例。
**注意:**要使用推理配置文件,您必须使用 Amazon Bedrock 支持的区域和模型。
申请增加配额
新账户的初始配额可能低于默认配额。某些模型设有不可调整的固定配额。如果您的工作负载流量超过账户的按需配额,请联系 AWS Support 或您的账户经理申请增加配额。AWS 可能会根据使用模式或服务需求调整默认配额。
在您的请求中包括以下信息:
- 要增加的配额的名称
- 模型 ID
- 增加配额的区域
- 对您的使用案例的简要说明
- 您的预计使用量,包括稳定和峰值状态下的每分钟令牌数和请求数,以及每个请求的平均输入和输出令牌数。
使用预置吞吐量
如果您有较高的吞吐量需求,请购买预置吞吐量。
**注意:**使用预置吞吐量会产生额外费用。有关预置吞吐量定价的信息,请参阅 Amazon Bedrock 定价中的“定价模式”部分。
有关如何使用预置吞吐量的详细信息,请参阅将预置吞吐量用于 Amazon Bedrock 资源。要使用 AWS CLI 或 Python SDK 创建预置吞吐量,请参阅预置吞吐量的代码示例。
**注意:**在购买预置吞吐量之前,请确保您使用的是 Amazon Bedrock 支持的区域和模型。
添加带指数回退的重试机制
当使用按需模式时,Amazon Bedrock 会使用跨多个客户的共享容量池。在服务需求高峰期,即使您的请求在账户的配额范围内,也可能会遇到节流。此外,该服务会自动管理所有用户的容量分配。
最佳做法是使用带指数回退和随机抖动的重试机制。如果您使用 AWS SDK,请参阅重试行为。
当达到每分钟配额时,确保重试回退时间持续整整 1 分钟。将您的重试尝试与 60 秒配额刷新周期同步。此外,在 1 分钟内将您的请求分散到多个秒级时段。
采用自适应重试模式的 Python 配置示例:
from botocore.config import Config
config = Config(
retries={
'max_attempts': 10, # Default is 3
'mode': 'adaptive'
}
)
bedrock_runtime = boto3.client('bedrock-runtime', config=config)
解决"ServiceUnavailable"错误
出现"ServiceUnavailableException"(HTTP 状态代码 503)错误是由于临时容量限制,而非超出配额。此错误通常会自动解决,但对于关键工作负载,可能需要调整架构。
查看您的 AWS CloudTrail 日志,检查您是否收到"ServiceUnavailable"和"ThrottlingException"错误。
如果您收到这两个错误,请执行以下操作来解决"ServiceUnavailableException"错误:
解决未超出配额时出现的意外节流问题
如果您遇到了节流但未超出服务配额,请执行以下操作: