View a markdown version of this page

擴展和輸送量最佳實務 - Amazon Bedrock

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

擴展和輸送量最佳實務

本主題說明輸送量限制和排程如何跨 Amazon Bedrock 端點運作,並提供擴展生成式 AI 應用程式的最佳實務。

Amazon Bedrock 端點

Amazon Bedrock 支援兩個端點進行推論:

  • bedrock-mantle.{region}.api.aws — 支援 OpenAI 相容的聊天完成和回應 APIs,以及 Anthropic Messages API。

  • bedrock-runtime.{region}.amazonaws.com — 支援 Bedrock 原生 InvokeModel 和 Converse APIs、OpenAI 相容聊天完成和回應 APIs,以及 Anthropic Messages API。

對於大多數新應用程式,請從 開始bedrock-runtime。當您需要只能在該端點上使用的功能bedrock-mantle時,請使用 ,例如伺服器端工具、背景推論、專案、工作區或只能在 上使用的模型bedrock-mantle。您可以在相同的應用程式中使用這兩個端點。如需完整的比較,請參閱 Amazon Bedrock 支援的端點。

為什麼兩個端點的行為不同

兩個端點表面都使用相同的基礎推論引擎,但其配額會計和容量選項不同。 bedrock-runtime使用每個模型字符配額,對於某些模型,使用requests-per-minute (RPM) 配額。 bedrock-mantle 不會強制執行 RPM 配額,並為已發佈配額的模型使用單獨的輸入字符和輸出字符配額。上的其他模型bedrock-mantle可能不會在 Service Quotas 中公開每個帳戶配額,但其輸送量仍受內部服務容量管理。

配額是上限,不保證會立即提供每個隨需請求。在高需求期間,請求可以排入佇列或接收暫時性容量錯誤。設計您的應用程式以繫結並行、佇列工作和重試暫時性錯誤,而無需建立重試突增。

bedrock-mantle 端點:輸送量和配額

bedrock-mantle 端點具有下列配額行為:

  • 具有已發佈配額的模型具有不同的每個模型、每個區域input-tokens-per-minute和output-tokens-per-minute配額。

  • 端點不會強制執行 RPM 配額。具有相同 RPM 的兩個工作負載可能會耗用非常不同的容量,因此透過權杖和並行來規劃和限制速率,而不是單獨使用 RPM。

  • 核准請求時,輸入字符檢查會包含輸入字符加上請求max_tokens的值。回應完成後,該保留的未使用部分會被補充。設定max_tokens不高於您的應用程式需求。

  • 沒有已發佈 TPM 配額的模型目前沒有在 Service Quotas 中公開的每個帳戶 TPM 配額。這並不表示輸送量無限制;內部服務容量和暫時性速率限制仍然適用。

  • 批次推論和佈建輸送量只能透過 使用bedrock-runtime。服務層和模型支援因模型而異。

預設值和您帳戶的配置可能會因模型、區域和用量歷史記錄而有所不同。如需目前值、配額評估詳細資訊,以及請求提高的 AWS 支援程序,請參閱 bedrock-mantle 端點的配額。請參閱模型一目了然適用於模型特定端點、服務層和功能支援的 。

bedrock-runtime 端點:輸送量和配額

bedrock-runtime 端點具有下列配額行為:

  • 每個模型、每個區域字符配額會同時計數輸入和輸出字符。輸出字符會根據特定模型的縮減率使用配額。

  • 有些模型也有 RPM 配額,而其他模型則僅受權杖配額管理。檢查適用於您使用之確切模型和推論描述檔的配額。

  • 每分鐘和每天字符配額會跨在此端點上呼叫相同模型APIs 共用。bedrock-runtime 和 的配置bedrock-mantle是獨立的。

  • 自訂推論描述檔、批次推論和佈建輸送量有不同的配額,並且只能透過 使用bedrock-runtime。

如需目前的配額值、字符燒錄詳細資訊和配額增加程序,請參閱 bedrock-runtime 端點的配額。請參閱模型一目了然適用於模型特定的端點、服務層和功能支援。

了解 HTTP 錯誤回應

HTTP 429

429 回應表示請求未被接受。檢查 API 特定的錯誤類型,而不是只依賴 HTTP 狀態。ThrottlingException 或速率限制錯誤通常表示請求超過帳戶配額或服務速率限制。有些執行時間操作也會針對 使用 HTTP 429ModelNotReadyException。在 上bedrock-mantle,檢查輸入和輸出 TPM 用量和請求max_tokens的值;端點沒有 RPM 配額。在 上bedrock-runtime,如果模型具有 RPM 配額,請檢查合併字符配額和 RPM。

HTTP 503

503 回應表示由於高需求或容量限制,服務暫時無法處理請求。它不表示您超過帳戶配額。使用指數退避和抖動重試暫時性回應。如果回應持續存在,請停止增加流量、減少並行,並在支援時考慮不同的區域或跨區域推論。

HTTP 529 (overloaded_error)

當模型因為高需求或服務容量不足而暫時無法處理請求時,某些模型 APIs會傳回 529。將其視為暫時性容量錯誤。如果回應包含 Retry-After標頭,請等待至少該持續時間再重試,並新增抖動,讓用戶端不會同時重試。

如需 API 特定原因和解決步驟,請參閱 對 Amazon Bedrock API 錯誤碼進行疑難排解。

建議的錯誤處理

暫時性錯誤

僅重試可安全重試的錯誤,例如暫時性限流和容量錯誤。如果服務傳回Retry-After標頭,請予以遵守。否則,請使用隨機抖動實作指數退避:

  • 從短暫延遲開始 (例如 1 秒)。

  • 每次重試後增加延遲,並限制最大延遲以符合應用程式的延遲預算。

  • 新增隨機抖動並避免跨工作者同步重試。

  • 使用符合您應用程式延遲目標的週框重試預算。例如,將操作限制為總共六次嘗試:初始請求和最多五次重試。

AWS SDKs和熱門 HTTP 程式庫提供此模式的內建支援。重試設定名稱不同:botocore 的 total_max_attempts包含初始請求,而 OpenAI 和 Anthropic SDKs 僅max_retries計算重試次數。因此,下列範例使用不同的數值來提供相同的範例六嘗試預算。

範例的重試組態 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)
範例的重試組態 bedrock-mantle(OpenAI 開發套件)
from openai import OpenAI client = OpenAI( api_key=api_key, base_url=f"https://bedrock-mantle.{region}.api.aws/v1", max_retries=5, )
範例的重試組態 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, )

根據模型和操作記錄的最大推論持續時間,將連線和讀取逾時與重試分開設定。短於有效長時間執行推論請求的逾時可能會導致可避免的重試和重複工作。

持續的容量錯誤

如果您收到持續的 503 或 529 錯誤,則單獨重試可以放大負載。服務可能遇到暫時性容量限制,或工作負載可能超過目前適用於模型和區域的容量。採取下列步驟:

  • 停止漸進測試並返回上次穩定的請求率和並行層級。

  • 使用邊界用戶端並行、速率限制和請求佇列。

  • 延遲或擺脫低優先順序請求,直到容量復原為止。

  • 對於 bedrock-runtime,請在模型支援時,使用跨區域推論。對於可預測、持續的工作負載,請評估佈建輸送量。

  • 如果問題持續發生,請檢查 AWS 運作狀態儀表板,並聯絡 AWS Support 並提供請求 IDs和 UTC 時間戳記。

提升輸送量

隨需容量可能因模型、區域和時間而異。並非所有配額內的請求都保證在高需求期間成功,因此在啟動工作負載、變更模型或區域或增加大量流量時逐漸漸進。對於沒有每個帳戶已發佈配額的bedrock-mantle模型來說,這尤其重要。

建議的漸進測試程序

  1. 估計每個端點、模型和區域的目標字符率和並行。對於 bedrock-mantle,請分別追蹤輸入和輸出字符,並在輸入字符許可估計值中包含請求max_tokens的值。

  2. 從低於目標的已知穩定基準開始。如果您沒有基準,請從較小的代表性負載開始,而不是傳送完整的目標磁碟區。

  3. 保持每個關卡夠長的時間來觀察請求成功、429/503/529 錯誤、延遲百分位數、字符消耗、並行和佇列深度。

  4. 一次增加一個受控步驟。一次只變更一個主要負載維度,以便識別迴歸的原因。

  5. 如果限流、容量錯誤或延遲超過閾值,請暫停漸進測試、遵守任何Retry-After標頭,並返回上一個穩定層級。

  6. 繼續,直到您達到目標,並針對將接收生產流量的每個模型和區域重複驗證。

從工作負載的延遲和流量模式選擇步驟大小和觀察期間。請勿使用 RPM 作為唯一的控制訊號:請求字符大小和回應長度可能會大幅變更容量消耗,即使 RPM 保持不變。

如需增加bedrock-mantle配額,請遵循 請求提高配額。對於 bedrock-runtime,請遵循 請求提高配額。

其他最佳實務

  • 使用特徵標記在模型之間逐漸轉換流量,而不是一次切換所有流量。

  • 將大型工作負載分散在數分鐘內,並考慮time-of-day模式,以避免尖峰使用期間。

  • 使用輸入大小、輸出大小、延遲和並行的代表性分佈進行測試。避免傳送突增的測試請求。

  • 使用字符感知用戶端速率限制、繫結並行和繫結佇列。僅限 RPM 的限制器無法防止請求大小的變更。

  • 對於非同步、大量離線任務,請在 上使用批次推論bedrock-runtime。

  • 對於可容忍可變延遲的支援模型non-time-sensitive請求,請考慮 Flex 服務層。

區域可用性和跨區域推論

隨需容量為區域性,可能因區域而異。如果您的工作負載以單一區域為目標,可能會在高需求期間遇到容量錯誤。使用 時bedrock-runtime,請在模型和您的資料居住需求支援全域跨區域推論時使用 。如果您實作自己的區域容錯移轉,請驗證每個目標區域中的模型可用性,並套用週框重試,讓容錯移轉不會造成流量激增。

取得說明

  • 輸送量規劃 — 估計每個模型和區域的尖峰輸入和輸出字符、回應延遲、並行和佇列容錯能力。包含工作負載特定的標題,並聯絡 AWS 帳戶 您的團隊進行大型或業務關鍵的啟動。

  • 效能最佳化 — 在支援時監控提示大小、產生的權杖、、max_tokens延遲百分位數和快取用量。最佳化提示和輸出限制,以避免保留或耗用不必要的字符。

  • 支援呈報 — 開啟 AWS 支援案例時,包括端點、區域、模型或推論設定檔 ID、HTTP 狀態和 API 錯誤類型、請求 IDs、UTC 時間戳記、字符率、請求率、並行和擴展時間表。

建議摘要

案例 建議
一般工作負載 請從bedrock-runtime開始。將 bedrock-mantle用於需要的功能或模型。請參閱 Amazon Bedrock 支援的端點。
暫時性 429、503 或 529 錯誤 檢查 API 錯誤類型。對於可重試的錯誤,Retry-After請在限制的重試預算內使用指數退避和抖動來遵守和重試。
持續的容量錯誤 停止漸進測試、返回上一個穩定層級、繫結並行和佇列、延遲較低優先順序的工作,以及在支援的情況下使用跨區域推論。
配額規劃 針對 使用單獨的輸入和輸出 TPMbedrock-mantle。在適用於 的情況下,使用合併字符配額、字符縮減和 RPMbedrock-runtime。
大型離線處理 針對非同步任務使用批次推論。針對可容忍可變延遲的支援、non-time-sensitive請求,使用 Flex 服務層。