開始在 Azure OpenAI 服務上使用布建的部署
下列指南會逐步引導您使用 Azure OpenAI 服務資源設定布建的部署。
必要條件
- Azure 訂用帳戶 - 免費建立一個訂用帳戶
- 在所需的 Azure 訂用帳戶中授與 Azure OpenAI 的存取權。 目前,此服務的存取權是由應用程式所提供。 您可以在 完成表單 https://aka.ms/oai/access,以申請 Azure OpenAI 服務的存取權。
- 取得已布建部署的配額,並購買承諾用量。
注意
布建的輸送量單位 (PTU) 與 Azure OpenAI 中的標準配額不同,且預設無法使用。 若要深入瞭解此供應專案,請連絡您的 Microsoft 帳戶小組。
建立布建的部署
購買配額的承諾之後,您可以建立部署。 若要建立布建的部署,您可以遵循下列步驟:所述的選項會反映螢幕快照中顯示的專案。
- 登入 Azure OpenAI Studio
- 選擇針對已布建部署啟用的訂用帳戶,然後在您擁有配額的區域中選取所需的資源。
- 在左側導覽的 [ 管理 ] 下,選取 [部署]。
- 選取 [建立新的部署],然後設定下列欄位。 展開 [進階選項] 下拉式清單。
- 填寫每個欄位中的值。 以下是範例:
欄位 | 描述 | 範例 |
---|---|---|
選取模型 | 選擇您想要部署的特定模型。 | GPT-4 |
模型版本 | 選擇要部署的模型版本。 | 0613 |
部署名稱 | 部署名稱會用於您的程式代碼中,以使用用戶端連結庫和 REST API 來呼叫模型。 | gpt-4 |
內容篩選 | 指定要套用至部署的篩選原則。 深入瞭解內容 篩選 操作說明。 | 預設 |
部署類型 | 這會影響輸送量和效能。 針對已布建的部署選擇 [已布建管理] | Provisioned-Managed |
布建的輸送量單位 | 選擇您想要包含在部署中的輸送量。 | 100 |
如果您想要以程式設計方式建立部署,您可以使用下列 Azure CLI 命令來執行此動作。 sku-capacity
使用所需的佈建輸送量單位數目來更新 。
az cognitiveservices account deployment create \
--name <myResourceName> \
--resource-group <myResourceGroupName> \
--deployment-name MyModel \
--model-name GPT-4 \
--model-version 0613 \
--model-format OpenAI \
--sku-capacity 100 \
--sku-name ProvisionedManaged
REST、ARM 範本、Bicep 和 Terraform 也可用來建立部署。 請參閱管理配額操作指南中的自動化部署一節,並將 取代sku.name
為 “ProvisionedManaged” 而非 “Standard”。
進行您的第一次呼叫
布建部署的推斷程式代碼與標準部署類型相同。 下列代碼段顯示對 GPT-4 模型的聊天完成呼叫。 建議您從快速入門指南開始,第一次以程序設計方式使用這些模型。 我們建議使用具有 1.0 版或更新版本的 OpenAI 連結庫,因為這包含連結庫內的重試邏輯。
#Note: The openai-python library support for Azure OpenAI is in preview.
import os
from openai import AzureOpenAI
client = AzureOpenAI(
azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"),
api_key=os.getenv("AZURE_OPENAI_API_KEY"),
api_version="2024-02-01"
)
response = client.chat.completions.create(
model="gpt-4", # model = "deployment_name".
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Does Azure OpenAI support customer managed keys?"},
{"role": "assistant", "content": "Yes, customer managed keys are supported by Azure OpenAI."},
{"role": "user", "content": "Do other Azure AI services support this too?"}
]
)
print(response.choices[0].message.content)
重要
針對生產環境,請使用安全的方式來儲存和存取您的認證,例如 Azure 金鑰保存庫。 如需有關認證安全性的詳細資訊,請參閱 Azure AI 服務安全性一文。
瞭解預期的輸送量
您可以在端點上達成的輸送量量,是部署的 PTU 數目、輸入大小、輸出大小和呼叫率的一個因素。 並行呼叫數目和已處理的令牌總數可能會根據這些值而有所不同。 我們決定部署輸送量的建議方式如下:
- 使用容量計算機進行重設大小估計。 您可以在 [配額] 頁面和 [布建] 索引標籤下的 Azure OpenAI Studio 中找到容量計算機。
- 使用實際流量工作負載對負載進行效能評定。 如需基準檢驗的詳細資訊,請參閱 效能評定 一節。
測量您的部署使用率
當您部署指定數目的布建輸送量單位 (PTU)時,該端點可以使用一組推斷輸送量。 此輸送量的使用率是根據模型、模型版本呼叫率、提示大小、產生大小而建立的複雜公式。 為了簡化此計算,我們在 Azure 監視器中提供使用率計量。 在使用率上升超過 100% 之後,您的部署會在任何新的呼叫上傳回 429。 布建使用率的定義如下:
PTU 部署使用率 = (時間週期所耗用的 PTU) / (在時間週期中部署的 PTU)
您可以在資源的 Azure-Monitor 區段中找到使用率量值。 若要存取監視儀錶板登入 https://portal.azure.com,請移至您的 Azure OpenAI 資源,然後從左側導覽中選取 [計量] 頁面。 在 [計量] 頁面上,選取 [布建管理的使用率] 量值。 如果您在資源中有多個部署,則也應該按兩下 [套用分割] 按鈕,依每個部署分割值。
如需監視部署的詳細資訊,請參閱 監視 Azure OpenAI 服務 頁面。
處理高使用率
布建的部署提供您配置數量的計算容量,以執行指定的模型。 Azure 監視器中的「布建受控使用率」計量會以一分鐘的增量測量部署的使用率。 布建管理的部署也會優化,以便接受的呼叫會以一致的每個呼叫最大延遲來處理。 當工作負載超過其配置容量時,服務會傳回 429 HTTP 狀態代碼,直到使用率降至 100% 以下為止。 重試前的時間會在和 retry-after-ms
回應標頭中retry-after
提供,分別提供以秒和毫秒為單位的時間。 此方法會維護每個呼叫延遲目標,同時讓開發人員控制如何處理高負載的情況,例如重試或轉移至另一個體驗/端點。
當我收到 429 回應時,該怎麼辦?
429 回應表示在呼叫時會完全取用已配置的 PTU。 回應包含 retry-after-ms
和 retry-after
標頭,告知您將接受下一個呼叫之前等待的時間。 選擇處理 429 回應的方式取決於您的應用程式需求。 以下是一些考量:
- 如果您能夠處理較長的每次呼叫延遲,請實作用戶端重試邏輯以等候
retry-after-ms
時間和重試。 此方法可讓您將部署的輸送量最大化。 Microsoft 提供的用戶端 SDK 已使用合理的預設值來處理它。 您可能需要根據使用案例進一步調整。 - 請考慮將流量重新導向至其他模型、部署或體驗。 這種方法是最低的延遲解決方案,因為只要收到 429 訊號,就可以採取此動作。 當推送至高使用率時,429 訊號不是非預期的錯誤回應,而是管理佇列和布建部署高負載設計的一部分。
修改客戶端連結庫內的重試邏輯
Azure OpenAI SDK 預設會重試 429 個回應,並在用戶端幕後重試 (最多重試次數上限)。 連結庫尊重 retry-after
時間。 您也可以修改重試行為,以更符合您的體驗。 以下是 Python 連結庫的範例。
您可以使用 max_retries
選項來設定或停用重試設定:
from openai import AzureOpenAI
# Configure the default for all requests:
client = AzureOpenAI(
azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"),
api_key=os.getenv("AZURE_OPENAI_API_KEY"),
api_version="2024-02-01",
max_retries=5,# default is 2
)
# Or, configure per-request:
client.with_options(max_retries=5).chat.completions.create(
model="gpt-4", # model = "deployment_name".
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Does Azure OpenAI support customer managed keys?"},
{"role": "assistant", "content": "Yes, customer managed keys are supported by Azure OpenAI."},
{"role": "user", "content": "Do other Azure AI services support this too?"}
]
)
執行基準檢驗
實例的確切效能和輸送量功能取決於您提出的要求種類和確切的工作負載。 判斷工作負載輸送量的最佳方式是在您自己的數據上執行效能評定。
為了協助您完成這項工作,基準檢驗工具提供一種方式,讓您輕鬆地在部署上執行效能評定。 此工具隨附數個可能預先設定的工作負載圖形,並輸出關鍵效能計量。 深入瞭解 GitHub 存放庫中的工具和組態設定: https://aka.ms/aoai/benchmarking。
我們建議使用下列工作流程:
- 使用容量計算機估計輸送量 PTU。
- 執行具有此流量圖形的基準檢驗一段較長的時間(10+ 分鐘),以觀察結果處於穩定狀態。
- 觀察基準檢驗工具和 Azure 監視器的使用率、令牌處理和呼叫速率值。
- 使用用戶端實作,以您自己的流量形狀和工作負載執行基準檢驗。 請務必使用 Azure Openai 用戶端連結庫或自定義邏輯來實作重試邏輯。
後續步驟
- 如需雲端應用程式最佳做法的詳細資訊,請參閱 雲端應用程式中的最佳做法
- 如需布建部署的詳細資訊,請參閱 什麼是布建輸送量?
- 如需每個 SDK 內重試邏輯的詳細資訊,請參閱: