После того как ваша модель будет доработана, вы можете развернуть её и использовать в вашем собственном приложении.
When you deploy the model, you make the model available for inferencing, and that incurs an hourly hosting charge. Однако точно настроенные модели можно хранить в Azure AI Foundry без затрат, пока вы не будете готовы к использованию.
Azure OpenAI предоставляет варианты типов развертывания для тонко настроенных моделей на структуре размещения, которая подходит для различных бизнес- и пользовательских шаблонов: Standard, Global Standard (предварительная версия) и Управляемая подготовленная (предварительная версия). Дополнительные сведения о типах развертывания для точно настроенных моделей и понятиях всех типов развертывания.
Разверните точно настроенную модель
To deploy your custom model, select the custom model to deploy, and then select Deploy.
Откроется диалоговое окно "Развертывание модели ". In the dialog box, enter your Deployment name and then select Create to start the deployment of your custom model.
Вы можете отслеживать ход развертывания на панели Развертывания в портале Azure AI Foundry.
Пользовательский интерфейс не поддерживает развертывание между регионами, а пакет SDK для Python или 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-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())
переменная |
Определение |
токен |
Существует несколько способов создания токена авторизации. Самый простой способ начального тестирования — запустить Cloud Shell из портал Azure. Затем выполните az account get-access-token . Этот маркер можно использовать в качестве временного маркера авторизации для тестирования API. Мы рекомендуем сохранить это в новой переменной окружения. |
подписка |
Идентификатор подписки для связанного ресурса Azure OpenAI. |
ресурсная группа |
The resource group name for your Azure OpenAI resource. |
имя_ресурса |
Название ресурса Azure OpenAI. |
имя_развертывания_модели |
Настраиваемое имя для нового точно настроенного развертывания модели. Это имя будет использоваться в вашем коде при совершении вызовов завершения чата. |
тонко настроенная модель |
Извлеките это значение из результатов задания по точной настройке на предыдущем шаге. Оно выглядит так: gpt-35-turbo-0125.ft-b044a9d3cf9c4228b5d393567f693b83 . Вам нужно добавить это значение в deploy_data json. В качестве альтернативы вы также можете развернуть контрольную точку, передав ID контрольной точки, который будет отображаться в формате 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-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())
Чтобы развернуть в рамках одной подписки, но в разных регионах, подписка и группы ресурсов должны быть одинаковыми для обеих переменных источника и назначения, и только имена ресурсов источника и назначения должны быть уникальными.
Развертывание между клиентами
Учетная запись, используемая для генерации маркеров доступа с помощью az account get-access-token --tenant
, должна иметь разрешения участника OpenAI Cognitive Services как для исходных, так и для целевых ресурсов Azure 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"
}
}
}'
переменная |
Определение |
токен |
Существует несколько способов создания токена авторизации. Самый простой способ начального тестирования — запустить Cloud Shell из портал Azure. Затем выполните az account get-access-token . Этот маркер можно использовать в качестве временного маркера авторизации для тестирования API. Мы рекомендуем сохранить это в новой переменной окружения. |
подписка |
Идентификатор подписки для связанного ресурса Azure OpenAI. |
ресурсная группа |
Имя группы ресурсов для вашего ресурса Azure OpenAI. |
имя_ресурса |
Название ресурса Azure OpenAI. |
имя_развертывания_модели |
Настраиваемое имя для развертывания вашей новой модели с точной настройкой. Это имя будет использоваться в вашем коде при вызовах завершения чата. |
тонко настроенная модель |
Извлеките это значение из результатов задания по точной настройке на предыдущем шаге. Оно выглядит так: gpt-35-turbo-0125.ft-b044a9d3cf9c4228b5d393567f693b83 . You'll need to add that value to the deploy_data json. В качестве альтернативы вы также можете развернуть контрольную точку, передав ID контрольной точки, который появится в формате 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
, должна иметь права участника на использование служб OpenAI Cognitive Services как для исходных, так и для целевых ресурсов Azure 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 необходимо указать имя развертывания настраиваемой модели. Дополнительные сведения об использовании Azure CLI для развертывания настраиваемых моделей см. в статье az cognitiveservices account deployment
.
Чтобы выполнить эту команду Azure CLI в окне консоли, необходимо заменить следующие <заполнители соответствующими значениями> для настраиваемой модели:
Замещающее поле |
Ценность |
<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"
Это важно
После развертывания настраиваемой модели, если в любое время развертывание остается неактивным в течение более чем пятнадцати дней (15) развертывание удаляется. Развертывание настраиваемой модели неактивно, если модель была развернута более 15 дней назад, и в течение непрерывного 15-дневного периода не выполнялись вызовы завершений задач или завершений чата.
Удаление неактивного развертывания не влияет на базовую настраиваемую модель, а настраиваемую модель можно повторно развернуть в любое время.
Как описано в ценах на услугу Azure OpenAI, каждая настроенная модель, развернутая несет почасовую стоимость размещения, независимо от того, выполняются ли вызовы завершения или завершения чата для модели. Дополнительные сведения о планировании и управлении затратами с помощью Azure OpenAI см. в руководстве по управлению затратами на Службу Azure OpenAI.
Используйте развернутую и настроенную модель
После развертывания пользовательской модели её можно использовать как любую другую развернутую модель. Вы можете использовать игровые площадки на портале Azure AI 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-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 AI 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 AI services support this too?"}]}'
Быстрое кэширование
Тонкая настройка Azure OpenAI поддерживает кэширование запросов с выбранными моделями. Кэширование запросов позволяет сократить общую задержку запроса и затраты на более длинные запросы, имеющие идентичное содержимое в начале запроса. Дополнительные сведения о кэшировании запросов см. в разделе начало работы с кэшированием запросов.
Типы развертывания
Настройка Azure OpenAI поддерживает следующие типы развертывания.
Стандарт
Стандартные развертывания предоставляют платежную модель за каждый вызов, и доступная модель в каждом регионе, а также пропускная способность могут быть ограничены.
Модели |
Регион |
GPT-4o-finetune |
Восточная часть США 2, северная часть США, Центральная Швеция |
gpt-4o-mini-2024-07-18 |
Северо-Центральный США, Центральная Швеция |
GPT-4-finetune |
Северо-Центральный США, Центральная Швеция |
GPT-35-Turbo-finetune |
Восточная часть США 2, северная часть США, Центральная Швеция, Западная Швейцария |
GPT-35-Turbo-1106-finetune |
Восточная часть США 2, северная часть США, Центральная Швеция, Западная Швейцария |
GPT-35-Turbo-0125-finetune |
Восточная часть США 2, северная часть США, Центральная Швеция, Западная Швейцария |
Global Standard (предварительная версия)
Модели |
Регион |
GPT-4o-finetune |
Восточная часть США 2, северная часть США и Центральная Швеция |
GPT-4o-mini-finetune |
Восточная часть США 2, северная часть США и Центральная Швеция |
Глобальные стандартные точно настроенные развертывания обеспечивают экономию затрат, но веса пользовательских моделей могут временно храниться за пределами географического региона ресурса Azure OpenAI.
В настоящее время точно настроенные развертывания по глобальному стандарту поддерживают только структурированные выходные данные на GPT-4o.
Подготовленное с управлением (предварительная версия)
Модели |
Регион |
GPT-4o-finetune |
Северная часть США, Западная Швейцария |
GPT-4o-mini-finetune |
Северная часть США, Западная Швейцария |
gpt-4o-mini-2024-07-18
gpt-4o-2024-08-06
Подготовленные управляемые точно настроенные развертывания обеспечивают прогнозируемую производительность для точно настроенных развертываний. В рамках общедоступной предварительной версии подготовленные управляемые развертывания могут создаваться регионально с помощью версии REST API уровня данных версии 2024-10-01
или более поздней. Примеры см. ниже.
В настоящее время подготовленные, контролируемые и точно настроенные развертывания поддерживают структурированные выходные данные только в GPT-4o.
Создание подготовленного управляемого развертывания
Чтобы создать новое развертывание, выполните вызов HTTP PUT через Deployments - Create or Update REST API. Такой подход аналогичен выполнению развертывания между регионами со следующими исключениями:
- Необходимо указать
sku
имя ProvisionedManaged
.
- Емкость должна быть указана в ЕТЕ.
-
api-version
должен быть версии 2024-10-01
или более поздней.
- Метод HTTP должен быть
PUT
.
Например, чтобы развернуть модель gpt-4o-mini:
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 <TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"sku": {"name": "ProvisionedManaged", "capacity": 25},
"properties": {
"model": {
"format": "OpenAI",
"name": "gpt-4omini-ft-model-name",
"version": "1",
"source": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/{SourceResourceGroupName}/providers/Microsoft.CognitiveServices/accounts/{SourceAOAIAccountName}"
}
}
}'
Масштабирование точно настроенной модели с управляемой подготовкой ресурсов
Чтобы масштабировать настроенное управляемое развертывание для увеличения или уменьшения емкости PTU, выполните тот же PUT
вызов REST API, что и при создании развертывания и укажите обновленное значение для sku
. Помните, что подготовленные развертывания должны масштабироваться с минимальными увеличениями.
Например, чтобы масштабировать модель, развернутую в предыдущем разделе, от 25 до 40 PTU, выполните другой PUT
вызов и увеличьте емкость:
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 <TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"sku": {"name": "ProvisionedManaged", "capacity": 40},
"properties": {
"model": {
"format": "OpenAI",
"name": "gpt-4omini-ft-model-name",
"version": "1",
"source": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/{SourceResourceGroupName}/providers/Microsoft.CognitiveServices/accounts/{SourceAOAIAccountName}"
}
}
}'
Очистите своё развертывание
Чтобы удалить развертывание, используйте Deployments - Delete 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>"
Вы также можете удалить развертывание на портале Azure AI Foundry или использовать Azure CLI.
Дальнейшие действия