När din modell har finjusterats kan du distribuera modellen och använda den i ditt eget program.
När du distribuerar modellen gör du modellen tillgänglig för slutsatsdragning och det medför en timvis värdavgift. Finjusterade modeller kan dock lagras i Azure AI Foundry utan kostnad tills du är redo att använda dem.
Azure OpenAI innehåller val av distributionstyper för finjusterade modeller i värdstrukturen som passar olika affärs- och användningsmönster: Standard, Global Standard (förhandsversion) och Etablerat dataflöde (förhandsversion). Läs mer om distributionstyper för finjusterade modeller och begreppen för alla distributionstyper.
Distribuera din finjusterade modell
Om du vill distribuera din anpassade modell väljer du den anpassade modell som ska distribueras och väljer sedan Distribuera.
Dialogrutan Distribuera modell öppnas. I dialogrutan anger du distributionsnamnet och väljer sedan Skapa för att starta distributionen av din anpassade modell.
Du kan övervaka förloppet för distributionen i fönstret Distributioner i Azure AI Foundry-portalen.
Användargränssnittet stöder inte distribution mellan regioner, medan Python SDK eller REST stöder.
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-35-turbo-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-35-turbo-0125.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())
| variable |
Definition |
| token |
Det finns flera sätt att generera en auktoriseringstoken. Den enklaste metoden för inledande testning är att starta Cloud Shell från Azure Portal. Kör sedan az account get-access-token. Du kan använda den här token som din tillfälliga auktoriseringstoken för API-testning. Vi rekommenderar att du lagrar detta i en ny miljövariabel. |
| subscription |
Prenumerations-ID för den associerade Azure OpenAI-resursen. |
| resource_group |
Resursgruppens namn för din Azure OpenAI-resurs. |
| resource_name |
Namnet på Azure OpenAI-resursen. |
| model_deployment_name |
Det anpassade namnet för din nya finjusterade modellutplacering. Det här är det namn som ska refereras till i koden när du gör samtal om chattens slutförande. |
| fine_tuned_model |
Hämta det här värdet från finjusteringens resultat i föregående steg. Det kommer att se ut som gpt-35-turbo-0125.ft-b044a9d3cf9c4228b5d393567f693b83. Du måste lägga till det värdet i deploy_data json. Du kan också distribuera en kontrollpunkt genom att skicka kontrollpunkts-ID:t som visas i formatet ftchkpt-e559c011ecc04fc68eaa339d8227d02d |
Distribution mellan regioner
Finjustering stöder distribution av en finjusterad modell till en annan region än där modellen ursprungligen finjusterades. Du kan också distribuera till en annan prenumeration/region.
De enda begränsningarna är att den nya regionen också måste ha stöd för finjustering och när du distribuerar mellan prenumerationer måste kontot som genererar auktoriseringstoken för distributionen ha åtkomst till både käll- och målprenumerationerna.
Nedan visas ett exempel på hur du distribuerar en modell som har finjusterats i en prenumeration/region till en annan.
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-35-turbo-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-35-turbo-0125.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())
För att distribuera mellan samma prenumeration, men olika regioner skulle du bara ha prenumerations- och resursgrupper som är identiska för både käll- och målvariabler och endast käll- och målresursnamnen måste vara unika.
Utplacering mellan hyresgäster
Det konto som används för att generera åtkomsttoken med az account get-access-token --tenant ska ha Cognitive Services OpenAI Contributor-behörigheter för både käll- och mål-Azure OpenAI-resurser. Du måste generera två olika token, en för källklientorganisationen och en för målklientorganisationen.
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()}")
I följande exempel visas hur du använder REST API för att skapa en modelldistribution för din anpassade modell. REST-API:et genererar ett namn för distributionen av din anpassade modell.
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"
}
}
}'
| variable |
Definition |
| token |
Det finns flera sätt att generera en auktoriseringstoken. Den enklaste metoden för inledande testning är att starta Cloud Shell från Azure Portal. Kör sedan az account get-access-token. Du kan använda den här token som din tillfälliga auktoriseringstoken för API-testning. Vi rekommenderar att du lagrar detta i en ny miljövariabel. |
| subscription |
Prenumerations-ID för den associerade Azure OpenAI-resursen. |
| resource_group |
Resursgruppens namn för din Azure OpenAI-resurs. |
| resource_name |
Namnet på Azure OpenAI-resursen. |
| model_deployment_name |
Det anpassade namnet för din nya finjusterade modellutplacering. Det här är det namn som ska refereras till i koden när du gör samtal om chattens slutförande. |
| fine_tuned_model |
Hämta det här värdet från finjusteringens resultat i föregående steg. Det kommer att se ut som gpt-35-turbo-0125.ft-b044a9d3cf9c4228b5d393567f693b83. Du måste lägga till det värdet i deploy_data json. Du kan också distribuera en kontrollpunkt genom att skicka kontrollpunkts-ID:t som visas i formatet ftchkpt-e559c011ecc04fc68eaa339d8227d02d |
Distribution mellan regioner
Finjustering stöder distribution av en finjusterad modell till en annan region än där modellen ursprungligen finjusterades. Du kan också distribuera till en annan prenumeration/region.
De enda begränsningarna är att den nya regionen också måste ha stöd för finjustering och när du distribuerar mellan prenumerationer måste kontot som genererar auktoriseringstoken för distributionen ha åtkomst till både käll- och målprenumerationerna.
Nedan visas ett exempel på hur du distribuerar en modell som har finjusterats i en prenumeration/region till en annan.
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}"
}
}
}'
För att distribuera mellan samma prenumeration, men olika regioner, skulle du bara ha prenumerations- och resursgrupper som är identiska för både käll- och målvariabler och endast käll- och målresursnamnen måste vara unika.
Utplacering mellan hyresgäster
Det konto som används för att generera åtkomsttoken med az account get-access-token --tenant ska ha Cognitive Services OpenAI Contributor-behörigheter för både käll- och mål-Azure OpenAI-resurser. Du måste generera två olika token, en för källklientorganisationen och en för målklientorganisationen.
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}"
}
}
}'
I följande exempel visas hur du använder Azure CLI för att distribuera din anpassade modell. Med Azure CLI måste du ange ett namn för distributionen av din anpassade modell. Mer information om hur du använder Azure CLI för att distribuera anpassade modeller finns i az cognitiveservices account deployment.
Om du vill köra det här Azure CLI-kommandot i ett konsolfönster måste du ersätta följande <platshållare> med motsvarande värden för din anpassade modell:
| Placeholder |
Value |
|
<YOUR_AZURE_SUBSCRIPTION> |
Namnet eller ID:t för din Azure-prenumeration. |
|
<YOUR_RESOURCE_GROUP> |
Namnet på din Azure-resursgrupp. |
|
<YOUR_RESOURCE_NAME> |
Namnet på din Azure OpenAI-resurs. |
|
<YOUR_DEPLOYMENT_NAME> |
Det namn som du vill använda för modellens distribution. |
|
<YOUR_FINE_TUNED_MODEL_ID> |
Namnet på din anpassade modell. |
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
När du har distribuerat en anpassad modell tas distributionen bort om distributionen förblir inaktiv i mer än femton (15) dagar. Distributionen av en anpassad modell är inaktiv om modellen distribuerades för mer än femton (15) dagar sedan och inga slutföranden eller samtal om chattavslut gjordes till den under en kontinuerlig 15-dagarsperiod.
Borttagningen av en inaktiv distribution tar inte bort eller påverkar inte den underliggande anpassade modellen, och den anpassade modellen kan distribueras om när som helst.
Såsom det beskrivs i Prissättningen för Azure OpenAI i Azure AI Foundry Models, medför varje anpassad (finjusterad) modell som distribueras en timkostnad för drift oavsett om slutföranden eller chattkompletteringar görs med modellen. Mer information om hur du planerar och hanterar kostnader med Azure OpenAI finns i vägledningen i Planera för att hantera kostnader för Azure OpenAI.
Använd din distribuerade finjusterade modell
När din anpassade modell har distribuerats kan du använda den som vilken annan distribuerad modell som helst. Du kan använda Playgrounds i Azure AI Foundry-portalen för att experimentera med din nya distribution. Du kan fortsätta att använda samma parametrar med din anpassade modell, till exempel temperature och max_tokens, som du kan med andra distribuerade modeller.
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-35-turbo-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?"}]}'
Snabb cachelagring
Azure OpenAI-finjustering stöder cachelagring av frågeuppmaningar med utvalda modeller. Med cachelagring av frågor kan du minska den totala svarstiden och kostnaden för längre frågor som har identiskt innehåll i början av prompten. För att lära dig mer om cachelagring av frågor, se komma igång med cachelagring av frågor.
Distributionstyper
Azure OpenAI-finjustering stöder följande distributionstyper.
Standard
Standarddistributioner tillhandahåller en faktureringsmodell för betalning per token med datahemvist begränsat till den distribuerade regionen.
| Models |
Östra USA 2 |
Norra centrala USA |
Centrala Sverige |
Switzerland West |
| o4-mini |
✅ |
|
✅ |
|
| GPT-4.1 |
|
✅ |
✅ |
|
| GPT-4.1-mini |
|
✅ |
✅ |
|
| GPT-4.1-nano |
|
✅ |
✅ |
|
| GPT-4o |
✅ |
|
✅ |
|
| GPT-4o-mini |
|
✅ |
✅ |
|
| GPT-35-Turbo (1106) |
✅ |
✅ |
✅ |
✅ |
| GPT-35-Turbo (0125) |
✅ |
✅ |
✅ |
✅ |
Global Standard
Globala finjusterade standarddistributioner ger kostnadsbesparingar, men anpassade modellvikter kan tillfälligt lagras utanför azure OpenAI-resursens geografiska område.
Globala standarddistributioner är tillgängliga från alla Azure OpenAI-regioner för följande modeller:
- o4-mini
- GPT-4.1
- GPT-4.1-mini
- GPT-4.1-nano
- GPT-4o
- GPT-4o-mini
Utvecklarnivå
Utvecklarnas finjusterade distributioner erbjuder en liknande upplevelse som Global Standard utan en timbaserad värdavgift, men erbjuder inte ett serviceavtal för tillgänglighet. Utvecklardistributioner är utformade för modellkandidatutvärdering och inte för produktionsanvändning.
Utvecklardistributioner är tillgängliga från alla Azure OpenAI-regioner för följande modeller:
- GPT-4.1
- GPT-4.1-mini
- GPT-4.1-nano
Etablerat dataflöde
| Models |
Norra centrala USA |
Centrala Sverige |
| GPT-4.1 |
|
✅ |
| GPT-4o |
✅ |
✅ |
| GPT-4o-mini |
✅ |
✅ |
Finjusterade distributioner av tilldelad kapacitet ger förutsägbar prestanda för svarstidskänsliga agenter och applikationer. De använder samma provisionerade dataflödeskapacitet (PTU) som basmodeller, så om du redan har en regional PTU-kvot kan du distribuera din finjusterad modell i stödregioner.
Rensa din distributionen
Om du vill ta bort en distribution använder du Distributioner – Ta bort REST API och skickar en HTTP DELETE till distributionsresursen. Precis som när du skapar distributioner måste du inkludera följande parametrar:
- Azure-prenumerations-ID
- Namn på Azure-resursgrupp
- Azure OpenAI-resursnamn
- Namnet på distributionen som ska tas bort
Nedan visas REST API-exemplet för att ta bort en distribution:
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>"
Du kan också ta bort en distribution i Azure AI Foundry-portalen eller använda Azure CLI.
Nästa steg