Depois que o modelo estiver ajustado, você poderá implantá-lo e usá-lo em seu próprio aplicativo.
Ao implantar o modelo, você disponibiliza o modelo para inferência, e isso incorre em uma taxa de hospedagem por hora. No entanto, os modelos afinados podem ser armazenados no Microsoft Foundry sem custos até estares pronto para os usar.
O Azure OpenAI fornece opções de tipos de implantação para modelos ajustados na estrutura de hospedagem que se ajustam a diferentes padrões de negócios e uso: Padrão, Padrão Global (visualização) e Taxa de Transferência Provisionada (visualização). Saiba mais sobre os tipos de implantação para modelos ajustados e os conceitos de todos os tipos de implantação.
Implante o seu modelo afinado
Para implantar seu modelo personalizado, selecione o modelo personalizado a ser implantado e, em seguida, selecione Implantar.
A caixa de diálogo Implantar modelo é aberta. Na caixa de diálogo, digite o nome da implantação e selecione Criar para iniciar a implantação do modelo personalizado.
Pode acompanhar o progresso da sua implementação no painel de Implementações no portal Foundry.
A interface do usuário não suporta a implantação entre regiões, enquanto o Python SDK ou REST suporta.
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())
| variável |
Definition |
| token |
Há várias maneiras de gerar um token de autorização. O método mais fácil para teste inicial é iniciar o Cloud Shell a partir do portal do Azure. Em seguida, execute az account get-access-token. Você pode usar esse token como seu token de autorização temporária para testes de API. Recomendamos armazená-lo em uma nova variável de ambiente. |
| subscrição |
A ID de assinatura para o recurso associado do Azure OpenAI. |
| resource_group |
O nome do grupo de recursos para seu recurso do Azure OpenAI. |
| resource_name |
O nome de recurso do Microsoft Azure OpenAI. |
| model_deployment_name |
O nome personalizado para a sua nova implementação de modelo ajustado. Este é o nome que será referenciado no seu código ao fazer chamadas de conclusão de chat. |
| fine_tuned_model |
Recupere esse valor dos resultados do trabalho de ajuste fino na etapa anterior. Vai parecer gpt-4.1-mini-2025-04-14.ft-b044a9d3cf9c4228b5d393567f693b83. Você precisará agregar esse valor ao deploy_data json. Como alternativa, você também pode implantar um ponto de verificação, passando o ID do ponto de verificação que aparecerá no formato ftchkpt-e559c011ecc04fc68eaa339d8227d02d |
Implantação entre regiões
O ajuste fino suporta a implantação de um modelo ajustado em uma região diferente daquela em que o modelo foi originalmente ajustado. Você também pode implantar noutra assinatura ou região diferente.
As únicas limitações são que a nova região também deve oferecer suporte ao ajuste fino e, ao implantar a assinatura cruzada, a conta que gera o token de autorização para a implantação deve ter acesso às assinaturas de origem e de destino.
Abaixo está um exemplo de implantação de um modelo que foi ajustado numa assinatura/região para outra.
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())
Para a implantação entre a mesma assinatura, mas em regiões diferentes, a assinatura e os grupos de recursos devem ser idênticos para as variáveis de origem e destino, e apenas os nomes dos recursos de origem e destino precisam ser exclusivos.
Implantação entre locatários
A conta usada para gerar tokens de acesso com az account get-access-token --tenant deve ter permissões de Colaborador dos Serviços Cognitivos OpenAI para os recursos Azure OpenAI de origem e destino. Você precisará gerar dois tokens diferentes, um para o locatário de origem e outro para o locatário de destino.
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()}")
O exemplo a seguir mostra como usar a API REST para criar uma implantação de modelo para seu modelo personalizado. A API REST gera um nome para a implantação do seu modelo personalizado.
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"
}
}
}'
| variável |
Definition |
| token |
Há várias maneiras de gerar um token de autorização. O método mais fácil para teste inicial é iniciar o Cloud Shell a partir do portal do Azure. Em seguida, execute az account get-access-token. Você pode usar esse token como seu token de autorização temporária para testes de API. Recomendamos armazená-lo em uma nova variável de ambiente. |
| subscrição |
A ID de assinatura para o recurso associado do Azure OpenAI. |
| resource_group |
O nome do grupo de recursos para seu recurso do Azure OpenAI. |
| resource_name |
O nome de recurso do Microsoft Azure OpenAI. |
| model_deployment_name |
O nome personalizado para a sua nova implementação de modelo ajustado. Este é o nome que será referenciado no seu código ao fazer chamadas de conclusão de chat. |
| fine_tuned_model |
Recupere esse valor dos resultados do trabalho de ajuste fino na etapa anterior. Vai parecer gpt-4.1-mini-2025-04-14.ft-b044a9d3cf9c4228b5d393567f693b83. Você precisará agregar esse valor ao deploy_data json. Como alternativa, você também pode implantar um ponto de verificação, passando o ID do ponto de verificação que aparecerá no formato ftchkpt-e559c011ecc04fc68eaa339d8227d02d |
Implantação entre regiões
O ajuste fino suporta a implantação de um modelo ajustado em uma região diferente daquela em que o modelo foi originalmente ajustado. Você também pode implantar noutra assinatura ou região diferente.
As únicas limitações são que a nova região também deve oferecer suporte ao ajuste fino e, ao implantar a assinatura cruzada, a conta que gera o token de autorização para a implantação deve ter acesso às assinaturas de origem e de destino.
Abaixo está um exemplo de implantação de um modelo que foi ajustado numa assinatura/região para outra.
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}"
}
}
}'
Para implantar na mesma assinatura, mas em regiões diferentes, você terias apenas que a assinatura e os grupos de recursos fossem idênticos para as variáveis de origem e destino. Apenas os nomes dos recursos de origem e de destino precisariam ser exclusivos.
Implantação entre locatários
A conta usada para gerar tokens de acesso com az account get-access-token --tenant deve ter permissões de Colaborador dos Serviços Cognitivos OpenAI para os recursos Azure OpenAI de origem e destino. Você precisará gerar dois tokens diferentes, um para o locatário de origem e outro para o locatário de destino.
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}"
}
}
}'
O exemplo a seguir mostra como usar a CLI do Azure para implantar seu modelo personalizado. Com a CLI do Azure, você deve especificar um nome para a implantação do seu modelo personalizado. Para obter mais informações sobre como usar a CLI do Azure para implantar modelos personalizados, consulte az cognitiveservices account deployment.
Para executar este comando da CLI do Azure numa janela de consola, deve substituir os seguintes <placeholders> pelos valores correspondentes para o seu modelo personalizado:
| Placeholder |
Value |
|
<YOUR_AZURE_SUBSCRIPTION> |
O nome ou ID da sua assinatura do Azure. |
|
<YOUR_RESOURCE_GROUP> |
O nome do seu grupo de recursos do Azure. |
|
<YOUR_RESOURCE_NAME> |
O nome do recurso do Azure OpenAI. |
|
<O_NOME_DO_SEU_DESDOBRAMENTO> |
O nome que se deseja usar para a implantação do modelo. |
|
<YOUR_FINE_TUNED_MODEL_ID> |
O nome do seu modelo personalizado. |
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
Depois de implantar um modelo personalizado, se a qualquer momento a implantação permanecer inativa por mais de quinze (15) dias, a implantação será excluída. A implantação de um modelo personalizado estará inativa se o modelo tiver sido implantado há mais de quinze (15) dias e nenhuma conclusão ou chamada de conclusão de bate-papo tiver sido feita para ele durante um período contínuo de 15 dias.
A exclusão de uma implantação inativa não exclui nem afeta o modelo personalizado subjacente, e o modelo personalizado pode ser reimplantado a qualquer momento.
Conforme descrito no Azure OpenAI na Microsoft Foundry Models, cada modelo personalizado (ajustado finamente) que é implementado tem um custo horário de alojamento, independentemente de estarem a ser feitas chamadas de conclusão ou de chat para o modelo. Para saber mais sobre como planejar e gerenciar custos com o Azure OpenAI, consulte as orientações em Planejar o gerenciamento de custos para o Azure OpenAI.
Utilize o seu modelo implantado e refinado
Depois que seu modelo personalizado for implantado, você poderá usá-lo como qualquer outro modelo implantado. Podes usar os Playgrounds no portal da Foundry para experimentar a tua nova implementação. Você pode continuar a usar os mesmos parâmetros com seu modelo personalizado, como temperature e max_tokens, como pode fazer com outros modelos implantados.
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?"}]}'
Armazenamento em cache de comandos
O ajuste fino do Azure OpenAI dá suporte ao caching de prompts em modelos selecionados. A cache de prompts permite reduzir a latência geral das solicitações e o custo para prompts mais longos que têm conteúdo idêntico no início. Para saber mais sobre o cache de prompts, consulte Introdução ao cache de prompts.
Tipos de implantação
O ajuste fino do Azure OpenAI dá suporte aos seguintes tipos de implantação.
Standard
As implantações padrão fornecem um modelo de cobrança de pagamento por token com residência de dados confinada à região implantada.
| Models |
Leste dos EUA2 |
E.U.A. Centro-Norte |
Suécia Central |
| O4-Mini |
✅ |
|
✅ |
| GPT-4,1 |
|
✅ |
✅ |
| GPT-4.1-mini |
|
✅ |
✅ |
| GPT-4.1-nano |
|
✅ |
✅ |
| GPT-4O |
✅ |
|
✅ |
| GPT-4o-mini |
|
✅ |
✅ |
Padrão Global
As implementações ajustadas aos padrões globais oferecem economia de custos, mas pesos de modelos personalizados podem ser temporariamente armazenados fora da região do seu recurso do Azure OpenAI.
As implantações padrão globais estão disponíveis em todas as regiões do Azure OpenAI para os seguintes modelos:
- O4-Mini
- GPT-4,1
- GPT-4.1-mini
- GPT-4.1-nano
- GPT-4O
- GPT-4o-mini
Nível de desenvolvedor
As implantações ajustadas pelo desenvolvedor oferecem uma experiência semelhante à Global Standard sem uma taxa de hospedagem por hora, mas não oferecem um SLA de disponibilidade. As implantações de desenvolvedores são projetadas para avaliação de candidato a modelo e não para uso em produção.
As implantações de desenvolvedor estão disponíveis em todas as regiões do Azure OpenAI para os seguintes modelos:
- GPT-4,1
- GPT-4.1-mini
- GPT-4.1-nano
- O4-Mini
Taxa de transferência provisionada
| Models |
E.U.A. Centro-Norte |
Suécia Central |
| GPT-4,1 |
|
✅ |
| GPT-4O |
✅ |
✅ |
| GPT-4o-mini |
✅ |
✅ |
As implantações otimizadas de taxa de transferência provisionada oferecem desempenho previsível para agentes e aplicações sensíveis à latência. Eles usam a mesma capacidade de taxa de transferência provisionada regional (PTU) que os modelos base, portanto, se já tiver uma cota de taxa de transferência provisionada regional, poderá implantar o seu modelo ajustado nas regiões suportadas.
Limpe sua implantação
Para excluir uma implantação, use a API Deployments - Delete REST e envie um HTTP DELETE para o recurso de implantação. Assim como na criação de implantações, você deve incluir os seguintes parâmetros:
- Id de subscrição do Azure
- Nome do grupo de recursos do Azure
- Nome do recurso do Azure OpenAI
- Nome da implantação a ser excluída
Abaixo está o exemplo da API REST para excluir uma implantação:
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>"
Também pode eliminar uma implementação no portal Foundry ou usar Azure CLI.
Próximos passos