我想對在使用 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 Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本。
監控您的 AWS 服務配額
檢查您的 Amazon Bedrock 服務配額,確認您沒有超出配額。以 1 分鐘為增量檢查 Amazon CloudWatch 指標,以識別限流模式。當您的使用量在高峰時段超出配額時,即使先前成功的批次也可能會出現限流。若要確保應用程式的請求量不超過配額,請監控 InputTokenCount 和 Invocations Amazon Bedrock 執行時期指標。
部分模型對每分鐘請求數 (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" 錯誤:
解決未超出配額時的意外限流
如果您遇到限流但並未超出服務配額,請執行下列動作: