共用方式為


開始在 Azure OpenAI 服務上使用佈建的部署

下列指南會逐步引導您使用 Azure OpenAI 服務資源設定佈建的部署。

必要條件

  • Azure 訂用帳戶 - 建立免費帳戶
  • 取得已佈建部署的配額,並已購買承諾用量。

注意

佈建的輸送量單位 (PTU) 與 Azure OpenAI 中的標準配額不同,且不在預設中提供。 若要深入了解此供應項目,請連絡您的 Microsoft 帳戶小組。

建立佈建的部署

購買配額的承諾用項之後,您可以建立部署。 若要建立佈建的部署,您可以遵循下列步驟;所述的選項會反映螢幕擷取畫面中顯示的項目。

已佈建部署的 Azure OpenAI Studio 部署頁面螢幕擷取畫面。

  1. 登入 Azure OpenAI Studio
  2. 選擇針對已佈建部署啟用的訂用帳戶,然後在您擁有配額的區域中選取所需的資源。
  3. 在左側導覽的 [管理] 底下,選取 [部署]
  4. 選取 [建立新的部署],然後設定下欄欄位。 展開 [進階選項] 下拉式清單。
  5. 填寫每個欄位中的值。 以下是範例:
欄位 描述 範例
選取模型 選擇您想要部署的特定模型。 GPT-4
模型版本 選擇要部署的模型版本。 0613
部署名稱 您的程式碼中會使用部署名稱,以透過用戶端程式庫和 REST API 來呼叫模型。 gpt-4
內容篩選 指定要套用至部署的篩選原則。 深入了解內容篩選的操作說明。 預設
部署類型 這會影響輸送量和效能。 針對佈建的部署選擇 [Provisioned-Managed] 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 Key Vault。 如需有關認證安全性的詳細資訊,請參閱 Azure AI 服務安全性一文。

了解預期的輸送量

您可以在端點上達成的輸送量是影響部署的 PTU 數目、輸入大小、輸出大小和呼叫率的一個因素。 並行呼叫數目和已處理的權杖總數可能會根據這些值而有所不同。 決定部署輸送量的建議方式如下:

  1. 使用容量計算機進行大小調整估計。 您可以在 Azure OpenAI Studio 中的 [配額] 頁面和 [佈建] 索引標籤下找到容量計算機。
  2. 使用實際流量工作負載對負載進行效能評定。 如需有關效能評定的詳細資訊,請參閱效能評定一節。

測量您的部署使用率

當您部署指定數目的佈建輸送量單位 (PTU) 時,該端點就可以使用一組推斷輸送量。 此輸送量的使用率是根據模型、模型版本呼叫率、提示大小、產生大小而建立的複雜公式。 為了簡化此計算,我們在 Azure 監視器中提供使用率計量。 在使用率上升超過 100% 之後,您的部署會在發生任何新的呼叫時傳回 429。 佈建使用率的定義如下:

PTU 部署使用率 = (時間週期中所耗用的 PTU) / (在時間週期中部署的 PTU)

您可以在資源的 Azure-Monitor 區段中找到使用率量值。 若要存取監視儀表板,請登入 https://portal.azure.com,移至您的 Azure OpenAI 資源,然後從左側導覽中選取 [計量] 頁面。 在 [計量] 頁面上,選取 [Provisioned-managed 使用率] 量值。 如果您在資源中有多個部署,請同時按一下 [套用分割] 按鈕來依據每個部署分割值。

Azure 入口網站中資源計量刀鋒視窗上 provisioned managed 使用率的螢幕擷取畫面。

如需監視部署的詳細資訊,請參閱監視 Azure OpenAI 服務頁面。

處理高使用率

佈建的部署提供您已配置的計算容量,用於執行指定的模型。 Azure 監視器中的「Provisioned-Managed 使用率」計量會以一分鐘為增量單位來測量部署的使用率。 Provisioned-Managed 部署也會進行最佳化,讓接受的呼叫會以一致的「每次呼叫延遲上限」來處理。 當工作負載超過其配置的容量時,服務會傳回 429 HTTP 狀態碼,直到使用率降至 100% 以下為止。 重試前的時間會在 retry-afterretry-after-ms 回應標頭中提供,這些標頭分別提供以秒和以毫秒為單位的時間。 此方法會維護「每次呼叫延遲」目標,同時讓開發人員控制如何處理高負載的情況,例如重試或轉移至另一個體驗/端點。

當我收到 429 回應時,該怎麼辦?

429 回應表示呼叫時完全取用已配置的 PTU。 回應包含 retry-after-msretry-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

我們建議使用下列工作負載:

  1. 使用容量計算機預估輸送量 PTU。
  2. 執行具有此流量圖形的效能評定達一段較長的時間 (10+ 分鐘),以觀察處於穩定狀態的結果。
  3. 從效能評定工具和 Azure 監視器中觀察使用率、權杖處理和呼叫率的值。
  4. 使用用戶端實作,以您自己的流量圖形和工作負載執行效能評定。 請務必使用 Azure Openai 用戶端程式庫或自訂邏輯來實作重試邏輯。

後續步驟