微調模型之後,您就可以部署模型,並在自己的應用程式中使用。
當您部署模型時,會讓模型可供推斷使用,因而產生每小時裝載費用。 不過,微調過的模型可以在你準備好使用前免費存放在 Microsoft Foundry。
Azure OpenAI 為代管結構上的微調模型提供部署類型選擇,以符合不同的商務和使用模式: 標準、全域標準(預覽)和 配置傳輸量(預覽)。 深入瞭解 微調模型的部署類型 ,以及 所有部署類型的概念。
部署已微調的模型
若要部署自定義模型,請選取要部署的自定義模型,然後選取 [ 部署]。
[部署模型] 對話方塊隨即開啟。 在對話方塊中,輸入 [部署名稱],然後選取 [建立] 以開始部署自訂模型。
你可以在 Foundry 入口網站的 部署 面板中監控部署進度。
UI 不支援跨區域部署,而 Python SDK 或 REST 則支援。
import json
import os
import requests
token = os.getenv("<TOKEN>")
subscription = "<YOUR_SUBSCRIPTION_ID>"
resource_group = "<YOUR_RESOURCE_GROUP_NAME>"
resource_name = "<YOUR_AZURE_OPENAI_RESOURCE_NAME>"
model_deployment_name = "gpt-4.1-mini-ft" # custom deployment name that you will use to reference the model when making inference calls.
deploy_params = {'api-version': "2024-10-21"}
deploy_headers = {'Authorization': 'Bearer {}'.format(token), 'Content-Type': 'application/json'}
deploy_data = {
"sku": {"name": "standard", "capacity": 1},
"properties": {
"model": {
"format": "OpenAI",
"name": <"fine_tuned_model">, #retrieve this value from the previous call, it will look like gpt-4.1-mini-2025-04-14.ft-b044a9d3cf9c4228b5d393567f693b83
"version": "1"
}
}
}
deploy_data = json.dumps(deploy_data)
request_url = f'https://management.azure.com/subscriptions/{subscription}/resourceGroups/{resource_group}/providers/Microsoft.CognitiveServices/accounts/{resource_name}/deployments/{model_deployment_name}'
print('Creating a new deployment...')
r = requests.put(request_url, params=deploy_params, headers=deploy_headers, data=deploy_data)
print(r)
print(r.reason)
print(r.json())
| 變數 |
Definition |
| Token |
有多種方式可以產生授權令牌。 初始測試最簡單的方法是從 Azure 入口網站啟動Cloud Shell。 接著,執行 az account get-access-token。 您可以使用此權杖作為 API 測試的暫時授權權杖。 建議您將此儲存在新的環境變數中。 |
| 月租方案 |
相關聯 Azure OpenAI 資源的訂閱識別碼。 |
| resource_group |
Azure OpenAI 資源的資源群組名稱。 |
| resource_name |
Azure OpenAI 資源名稱。 |
| model_deployment_name |
新微調模型部署的自訂名稱。 這是在程式碼中執行聊天完成功能調用時參考的名稱。 |
| fine_tuned_model |
從上一個步驟的微調作業結果中擷取此值。 其將會如 gpt-4.1-mini-2025-04-14.ft-b044a9d3cf9c4228b5d393567f693b83 所示。 您必須將此值新增至 deploy_data json。 或者,您也可以透過傳遞檢查點識別碼 (格式為 ftchkpt-e559c011ecc04fc68eaa339d8227d02d) 來部署檢查點 |
跨區域部署
微調支援將微調的模型部署至與最初微調模型時的不同區域。 您也可以部署至不同的訂閱/區域。
唯一的限制在於新區域也必須支援微調,且在跨訂閱部署時,產生部署授權權杖的帳戶必須同時具有來源和目的地訂閱的存取權。
以下是將某個訂閱/區域中微調的模型部署至另一個訂閱/區域的範例。
import json
import os
import requests
token= os.getenv("<TOKEN>")
subscription = "<DESTINATION_SUBSCRIPTION_ID>"
resource_group = "<DESTINATION_RESOURCE_GROUP_NAME>"
resource_name = "<DESTINATION_AZURE_OPENAI_RESOURCE_NAME>"
source_subscription = "<SOURCE_SUBSCRIPTION_ID>"
source_resource_group = "<SOURCE_RESOURCE_GROUP>"
source_resource = "<SOURCE_RESOURCE>"
source = f'/subscriptions/{source_subscription}/resourceGroups/{source_resource_group}/providers/Microsoft.CognitiveServices/accounts/{source_resource}'
model_deployment_name = "gpt-4.1-mini-ft" # custom deployment name that you will use to reference the model when making inference calls.
deploy_params = {'api-version': "2024-10-21"}
deploy_headers = {'Authorization': 'Bearer {}'.format(token), 'Content-Type': 'application/json'}
deploy_data = {
"sku": {"name": "standard", "capacity": 1},
"properties": {
"model": {
"format": "OpenAI",
"name": <"FINE_TUNED_MODEL_NAME">, # This value will look like gpt-4.1-mini-2025-04-14.ft-0ab3f80e4f2242929258fff45b56a9ce
"version": "1",
"source": source
}
}
}
deploy_data = json.dumps(deploy_data)
request_url = f'https://management.azure.com/subscriptions/{subscription}/resourceGroups/{resource_group}/providers/Microsoft.CognitiveServices/accounts/{resource_name}/deployments/{model_deployment_name}'
print('Creating a new deployment...')
r = requests.put(request_url, params=deploy_params, headers=deploy_headers, data=deploy_data)
print(r)
print(r.reason)
print(r.json())
若要在同一訂閱但不同區域之間進行部署,您只需讓來源變數與目的地變數的訂閱和資源群組相同,而且只有來源和目的地資源名稱必須是唯一的。
跨租用戶部署
透過 az account get-access-token --tenant 用來產生存取權杖的帳戶應具有來源和目的地 Azure OpenAI 資源的認知服務 OpenAI 參與者權限。 您必須產生兩個不同的令牌,一個用於來源租使用者,另一個用於目的地租使用者。
import requests
subscription = "DESTINATION-SUBSCRIPTION-ID"
resource_group = "DESTINATION-RESOURCE-GROUP"
resource_name = "DESTINATION-AZURE-OPENAI-RESOURCE-NAME"
model_deployment_name = "DESTINATION-MODEL-DEPLOYMENT-NAME"
fine_tuned_model = "gpt-4o-mini-2024-07-18.ft-f8838e7c6d4a4cbe882a002815758510" #source fine-tuned model id example id provided
source_subscription_id = "SOURCE-SUBSCRIPTION-ID"
source_resource_group = "SOURCE-RESOURCE-GROUP"
source_account = "SOURCE-AZURE-OPENAI-RESOURCE-NAME"
dest_token = "DESTINATION-ACCESS-TOKEN" # az account get-access-token --tenant DESTINATION-TENANT-ID
source_token = "SOURCE-ACCESS-TOKEN" # az account get-access-token --tenant SOURCE-TENANT-ID
headers = {
"Authorization": f"Bearer {dest_token}",
"x-ms-authorization-auxiliary": f"Bearer {source_token}",
"Content-Type": "application/json"
}
url = f"https://management.azure.com/subscriptions/{subscription}/resourceGroups/{resource_group}/providers/Microsoft.CognitiveServices/accounts/{resource_name}/deployments/{model_deployment_name}?api-version=2024-10-01"
payload = {
"sku": {
"name": "standard",
"capacity": 1
},
"properties": {
"model": {
"format": "OpenAI",
"name": fine_tuned_model,
"version": "1",
"sourceAccount": f"/subscriptions/{source_subscription_id}/resourceGroups/{source_resource_group}/providers/Microsoft.CognitiveServices/accounts/{source_account}"
}
}
}
response = requests.put(url, headers=headers, json=payload)
# Check response
print(f"Status Code: {response.status_code}")
print(f"Response: {response.json()}")
下列範例示範如何使用 REST API 來為您的自定義模型建立模型部署。 REST API 會產生自訂模型部署的名稱。
curl -X POST "https://management.azure.com/subscriptions/<SUBSCRIPTION>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.CognitiveServices/accounts/<RESOURCE_NAME>/deployments/<MODEL_DEPLOYMENT_NAME>?api-version=2024-10-21" \
-H "Authorization: Bearer <TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"sku": {"name": "standard", "capacity": 1},
"properties": {
"model": {
"format": "OpenAI",
"name": "<FINE_TUNED_MODEL>",
"version": "1"
}
}
}'
| 變數 |
Definition |
| Token |
有多種方式可以產生授權令牌。 初始測試最簡單的方法是從 Azure 入口網站啟動Cloud Shell。 接著,執行 az account get-access-token。 您可以使用此權杖作為 API 測試的暫時授權權杖。 建議您將此儲存在新的環境變數中。 |
| 月租方案 |
相關聯 Azure OpenAI 資源的訂閱識別碼。 |
| resource_group |
Azure OpenAI 資源的資源群組名稱。 |
| resource_name |
Azure OpenAI 資源名稱。 |
| model_deployment_name |
新微調模型部署的自訂名稱。 這是在程式碼中執行聊天完成功能調用時參考的名稱。 |
| fine_tuned_model |
從上一個步驟的微調作業結果中擷取此值。 其將會如 gpt-4.1-mini-2025-04-14.ft-b044a9d3cf9c4228b5d393567f693b83 所示。 您必須將此值新增至 deploy_data json。 或者,您也可以透過傳遞檢查點識別碼 (格式為 ftchkpt-e559c011ecc04fc68eaa339d8227d02d) 來部署檢查點 |
跨區域部署
微調支援將微調的模型部署至與最初微調模型時的不同區域。 您也可以部署至不同的訂閱/區域。
唯一的限制在於新區域也必須支援微調,且在跨訂閱部署時,產生部署授權權杖的帳戶必須同時具有來源和目的地訂閱的存取權。
以下是將某個訂閱/區域中微調的模型部署至另一個訂閱/區域的範例。
curl -X PUT "https://management.azure.com/subscriptions/<SUBSCRIPTION>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.CognitiveServices/accounts/<RESOURCE_NAME>/deployments/<MODEL_DEPLOYMENT_NAME>?api-version=2024-10-21" \
-H "Authorization: Bearer <TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"sku": {"name": "standard", "capacity": 1},
"properties": {
"model": {
"format": "OpenAI",
"name": "<FINE_TUNED_MODEL>",
"version": "1",
"source": "/subscriptions/{sourceSubscriptionID}/resourceGroups/{sourceResourceGroupName}/providers/Microsoft.CognitiveServices/accounts/{sourceAccount}"
}
}
}'
若要在同一訂閱但不同區域之間進行部署,您只需讓來源變數與目的地變數的訂閱和資源群組相同,而且只有來源和目的地資源名稱必須是唯一的。
跨租用戶部署
透過 az account get-access-token --tenant 用來產生存取權杖的帳戶應具有來源和目的地 Azure OpenAI 資源的認知服務 OpenAI 參與者權限。 您必須產生兩個不同的令牌,一個用於來源租使用者,另一個用於目的地租使用者。
curl -X PUT "https://management.azure.com/subscriptions/<SUBSCRIPTION>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.CognitiveServices/accounts/<RESOURCE_NAME>/deployments/<MODEL_DEPLOYMENT_NAME>?api-version=2024-10-01" \
-H "Authorization: Bearer <DESTINATION TOKEN>" \
-H "x-ms-authorization-auxiliary: Bearer <SOURCE TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"sku": {"name": "standard", "capacity": 1},
"properties": {
"model": {
"format": "OpenAI",
"name": "<FINE_TUNED_MODEL>",
"version": "1",
"sourceAccount": "/subscriptions/{sourceSubscriptionID}/resourceGroups/{sourceResourceGroupName}/providers/Microsoft.CognitiveServices/accounts/{sourceAccount}"
}
}
}'
下列範例示範如何使用 Azure CLI 來部署自訂模型。 使用 Azure CLI,您必須指定自訂模型部署的名稱。 如需如何使用 Azure CLI 部署自訂模型的詳細資訊,請參閱 az cognitiveservices account deployment。
若要在主控台視窗中執行此 Azure CLI 命令,您必須使用自訂模型的對應值取代下列<預留位置>:
| Placeholder |
Value |
|
<YOUR_AZURE_SUBSCRIPTION> |
您 Azure 訂用帳戶的名稱或識別碼。 |
|
<YOUR_RESOURCE_GROUP> |
Azure 資源群組的名稱。 |
|
<YOUR_RESOURCE_NAME> |
您 Azure OpenAI 資源的名稱。 |
|
<YOUR_DEPLOYMENT_NAME> |
您要用於模型部署的名稱。 |
|
<YOUR_FINE_TUNED_MODEL_ID> |
您自訂模型的名稱。 |
az cognitiveservices account deployment create
--resource-group <YOUR_RESOURCE_GROUP>
--name <YOUR_RESOURCE_NAME>
--deployment-name <YOUR_DEPLOYMENT_NAME>
--model-name <YOUR_FINE_TUNED_MODEL_ID>
--model-version "1"
--model-format OpenAI
--sku-capacity "1"
--sku-name "Standard"
Important
部署自訂模型之後,如果在任何時候該部署處於非使用中的狀態超過十五 (15) 天,則系統會刪除該部署。 如果模型部署的時間超過十五 (15) 天,而且在連續 15 天內沒有針對模型進行完成或聊天完成呼叫,則自訂模型的部署為「非使用中」。
刪除非使用中的部署不會刪除或影響基礎自訂模型,且自訂模型可以隨時進行重新部署。
如 Microsoft Foundry 模型中的 Azure OpenAI 定價中所述,每個部署的自訂 (微調) 模型都會產生每小時裝載成本,無論是否要對模型進行完成或聊天完成呼叫。 若要深入瞭解使用 Azure OpenAI 規劃和管理成本,請參閱 規劃管理 Azure OpenAI 成本中的指引。
使用已部署的微調模型
部署自訂模型後,您就能如同使用其他部署模型般使用該模型。 您可以使用 Foundry 入口網站中的 [遊樂場] 對新部署進行實驗。 您可以繼續對自訂模型使用相同的參數,例如 temperature 和 max_tokens,如同對其他部署模型一樣。
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.1-mini-ft", # model = "Custom deployment name you chose for your fine-tuning model"
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 services support this too?"}
]
)
print(response.choices[0].message.content)
curl $AZURE_OPENAI_ENDPOINT/openai/deployments/<deployment_name>/chat/completions?api-version=2024-10-21 \
-H "Content-Type: application/json" \
-H "api-key: $AZURE_OPENAI_API_KEY" \
-d '{"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 services support this too?"}]}'
提示快取
Azure OpenAI 微調支援使用選取模型進行提示快取。 提示快取可讓您減少在提示開始時具有相同內容的較長提示的整體要求延遲和成本。 若要深入瞭解提示快取,請參閱 提示快取入門。
部署類型
Azure OpenAI 微調支援下列部署類型。
標準
標準部署提供按權杖付費的計費模型,其資料落地僅限於已部署的區域。
| Models |
美國東部 2 |
美國中北部 |
瑞典中部 |
| o4-mini |
✅ |
|
✅ |
| GPT-4.1 |
|
✅ |
✅ |
| GPT-4.1-mini |
|
✅ |
✅ |
| GPT-4.1-nano |
|
✅ |
✅ |
| GPT-4o |
✅ |
|
✅ |
| GPT-4o-mini |
|
✅ |
✅ |
全域標準
全域標準 微調的部署可 節省成本,但自定義模型權數可能會暫時儲存在 Azure OpenAI 資源的地理位置之外。
所有 Azure OpenAI 區域都可針對下列模型提供全域標準部署:
- o4-mini
- GPT-4.1
- GPT-4.1-mini
- GPT-4.1-nano
- GPT-4o
- GPT-4o-mini
開發人員層
開發人員微調的部署提供與全域標準類似的體驗,無需每小時託管費用,但不提供可用性 SLA。 開發人員部署是為模型候選評估而設計,不是為生產用途而設計。
所有 Azure OpenAI 區域都可針對下列模型提供開發人員部署:
- GPT-4.1
- GPT-4.1-mini
- GPT-4.1-nano
- o4-mini
佈建的輸送量
| Models |
美國中北部 |
瑞典中部 |
| GPT-4.1 |
|
✅ |
| GPT-4o |
✅ |
✅ |
| GPT-4o-mini |
✅ |
✅ |
已佈建輸送量微調部署提供延遲敏感性代理程式和應用程式的可預期效能。 它們會使用與基底模型相同的區域布建輸送量(PTU)容量,因此如果您已經有區域 PTU 配額,您可以在支持區域中部署微調的模型。
清除您的部署
若要刪除部署,請使用 部署 - 刪除 REST API ,並將 HTTP DELETE 傳送至部署資源。 像建立部署一樣,您必須指定下列參數:
- Azure 訂用帳戶識別碼
- Azure 資源組名
- Azure OpenAI 資源名稱
- 要刪除的部署名稱
以下是刪除部署的 REST API 範例:
curl -X DELETE "https://management.azure.com/subscriptions/<SUBSCRIPTION>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.CognitiveServices/accounts/<RESOURCE_NAME>/deployments/<MODEL_DEPLOYMENT_NAME>?api-version=2024-10-21" \
-H "Authorization: Bearer <TOKEN>"
你也可以在 Foundry 管理入口網站中刪除部署,或者使用 Azure CLI。
後續步驟