Начало работы с подготовленными развертываниями в Службе Azure OpenAI
В следующем руководстве описаны основные шаги по созданию подготовленного развертывания с помощью ресурса Службы Azure OpenAI. Дополнительные сведения о концепциях, описанных здесь, см. в следующих разделах:
Необходимые компоненты
- подписка Azure — создайте бесплатную учетную запись.
- Роль участника Azure или участника Cognitive Services
Получение или проверка доступности квоты PTU.
Развертывания подготовленной пропускной способности имеют размер в единицах, называемых подготовленными единицами пропускной способности (PTUS). Квота PTU для каждого подготовленного типа развертывания предоставляется подписке в регионе и ограничивает общее количество ПТП, которые можно развернуть в этом регионе во всех моделях и версиях.
Для создания нового развертывания требуется доступная (неиспользуемая) квота для покрытия требуемого размера развертывания. Например, если подписка имеет следующую команду в южной части США:
- Общая квота PTU = 500 ПТП
- Развертывания:
- 100 PTUs: GPT-4o, 2024-05-13
- 100 PTUs: GPT-4, 0613
Затем используется 200 PTUS квоты, и для создания новых развертываний доступно 300 ПТП.
Объем глобальной зоны данных и региональной подготовленной квоты по умолчанию назначается соответствующим подпискам в нескольких регионах. Вы можете просмотреть квоту, доступную для вас в регионе, перейдя на панель "Квоты" на портале Azure AI Foundry и выбрав нужную подписку и регион. Например, на снимке экрана ниже показан предел квоты 500 ПТП в Западной части США для выбранной подписки. Обратите внимание, что вы можете увидеть более низкие значения доступных квот по умолчанию.
Дополнительную квоту можно запросить, щелкнув ссылку "Квота запроса" справа от столбца "Использование и ограничение". (Это вне экрана на снимке экрана выше).
Создание ресурса Azure OpenAI
Подготовленные развертывания создаются с помощью объектов ресурсов Azure OpenAI в Azure. У вас должен быть ресурс Azure OpenAI в каждом регионе, где планируется создать развертывание. При необходимости используйте портал Azure для создания ресурса в регионе с доступной квотой.
Примечание.
Ресурсы Azure OpenAI могут одновременно поддерживать несколько типов развертываний Azure OpenAI. Не обязательно выделять новые ресурсы для подготовленных развертываний.
Создание подготовленного развертывания — емкость доступна
После проверки квоты можно создать развертывание. Чтобы создать подготовленное развертывание, выполните следующие действия. Описанные варианты отражают записи, показанные на снимке экрана.
- Войдите на портал Azure AI Foundry.
- Выберите подписку, включенную для подготовленных развертываний, и выберите нужный ресурс в регионе, где у вас есть квота.
- В разделе "Управление" в левой области навигации выберите "Развертывания".
- Выберите "Создать новое развертывание" и настройте следующие поля. Разверните раскрывающееся меню расширенных параметров.
- Заполните значения в каждом поле. Приведем пример:
Поле | Описание: | Пример |
---|---|---|
Выбор модели | Выберите конкретную модель, которую вы хотите развернуть. | GPT-4 |
Версия модели | Выберите версию модели для развертывания. | 0613 |
Название развертывания | Имя развертывания используется в коде для вызова модели с помощью клиентских библиотек и REST API. | gpt-4 |
Фильтр содержимого | Укажите политику фильтрации для применения к развертыванию. Узнайте больше о нашем руководстве по фильтрации содержимого. | По умолчанию. |
Тип развертывания | Это влияет на пропускную способность и производительность. Выберите global Provisioned-Managed, DataZone Provisioned-Manageded или Provisioned-Managed в раскрывающемся списке развертывания для развертывания | Подготовленный управляемый |
Подготовленные единицы пропускной способности | Выберите объем пропускной способности, которую вы хотите включить в развертывание. | 100 |
Примечание.
Диалоговое окно развертывания содержит напоминание о том, что вы можете приобрести резервирование Azure для Azure OpenAI, подготовленное для получения значительной скидки на обязательство.
После ввода параметров развертывания нажмите кнопку "Подтвердить цены ", чтобы продолжить. Откроется диалоговое окно подтверждения цен, которое будет отображать цену на развертывание, если вы решили платить за нее почасовой основе без резервирования Azure, чтобы предоставить скидку на срок.
Если вы не уверены в затратах, отмените развертывание и запустите его после понимания модели оплаты и базовых затрат на подготовленное развертывание. Этот шаг может предотвратить непредвиденные, высокие расходы на счет оплаты. Ресурсы для обучения себя включают:
На рисунке ниже показано подтверждение ценообразования. Показанная цена является только примером.
Если вы хотите создать развертывание программным способом, это можно сделать с помощью следующей команды Azure CLI. Чтобы указать тип развертывания, измените его sku-name
GlobalProvisionedManaged
DataZoneProvisionedManaged
или ProvisionedManaged
на основе предполагаемого типа развертывания. 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
на GlobalProvisionedManaged
, DataZoneProvisionedManaged
а ProvisionedManaged
не Standard
.
Создание подготовленного развертывания— емкость недоступна
Из-за динамической природы доступности емкости возможно, что регион выбранного ресурса может не иметь емкости службы для создания развертывания указанной модели, версии и количества ПТУ.
В этом случае мастер на портале Azure AI Foundry будет направлять вас в другие регионы с доступной квотой и емкостью для создания развертывания требуемой модели. В этом случае диалоговое окно развертывания будет выглядеть следующим образом:
Что следует заметить:
- В сообщении отображается много PTUS, имеющихся в доступной квоте, и сколько в настоящее время можно развернуть.
- Если выбрать число PTUS больше емкости службы, появится сообщение, которое предоставляет параметры для получения дополнительной емкости, и кнопка, позволяющая выбрать альтернативный регион. При нажатии кнопки "Просмотреть другие регионы" откроется диалоговое окно, в котором отображается список ресурсов Azure OpenAI, где можно создать развертывание, а также максимальное количество развертываний, которые можно создать на основе доступной квоты и емкости служб в каждом регионе.
Выбор ресурса и нажатие кнопки " Переключить ресурс " приведет к повторному воспроизведению диалогового окна развертывания с помощью выбранного ресурса. Затем можно продолжить создание развертывания в новом регионе.
При необходимости приобрести резервирование
После создания развертывания может потребоваться приобрести скидку на срок с помощью резервирования Azure. Резервирование Azure может предоставить значительную скидку на почасовую ставку для пользователей, намеревающихся использовать развертывание за несколько дней.
Дополнительные сведения о модели покупки и резервированиях см. в следующих статье:
- Экономия затрат с помощью подготовленных резервирований службы Microsoft Azure OpenAI.
- Руководство по подключению в Azure OpenAI, подготовленное
- Руководство по подготовленным резервированиям в Azure OpenAI
Внимание
Доступность емкости для развертываний моделей является динамической и часто изменяется в разных регионах и моделях. Чтобы предотвратить покупку резервирования для более PTUS, чем можно использовать, сначала создайте развертывания, а затем приобретите резервирование Azure для покрытия развернутых PTUS. Эта рекомендация гарантирует, что вы можете воспользоваться скидкой на резервирование и предотвратить покупку обязательств по сроку действия, которые вы не можете использовать.
Создание первых вызовов вывода
Код вывода для подготовленных развертываний совпадает со стандартным типом развертывания. В следующем фрагменте кода показан вызов завершения чата к модели GPT-4. Впервые используя эти модели программным способом, мы рекомендуем начать с нашего краткого руководства. Мы рекомендуем использовать библиотеку OpenAI с версией 1.0 или более поздней, так как это включает логику повторных попыток в библиотеке.
#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.
Общие сведения о ожидаемой пропускной способности
Объем пропускной способности, которую можно достичь на конечной точке, является фактором числа развернутых PTUS, размера входных данных, размера выходных данных и частоты вызовов. Количество одновременных вызовов и общих маркеров может отличаться в зависимости от этих значений. Мы рекомендуем определить пропускную способность для развертывания следующим образом:
- Используйте калькулятор емкости для оценки размера. Калькулятор емкости можно найти на портале Azure AI Foundry на странице квот и на вкладке "Подготовлено".
- Тестирование нагрузки с помощью реальной рабочей нагрузки трафика. Дополнительные сведения о тестировании см. в разделе "Тестирование ".
Измерение использования развертывания
При развертывании указанного количества подготовленных единиц пропускной способности (PTUS) для этой конечной точки предоставляется набор пропускной способности вывода. Использование этой пропускной способности — это сложная формула на основе модели, частоты вызовов версии модели, размера запроса, размера поколения. Чтобы упростить это вычисление, мы предоставляем метрику использования в Azure Monitor. Развертывание возвращает значение 429 при любых новых вызовах после повышения использования выше 100 %. Подготовленное использование определяется следующим образом:
Использование развертывания PTU = (PTUs, потребляемые в период времени) / (PTUS, развернутые в период времени)
Вы можете найти меру использования в разделе Azure-Monitor для ресурса. Чтобы получить доступ к панелям https://portal.azure.comмониторинга, перейдите к ресурсу Azure OpenAI и выберите страницу метрик в левой области навигации. На странице метрик выберите метрику "Подготовленное управляемое использование версии 2". При наличии нескольких развертываний в ресурсе также следует разделить значения по каждому развертыванию, нажав кнопку "Применить разделение".
Дополнительные сведения о мониторинге развертываний см. на странице "Мониторинг Azure OpenAI Service ".
Обработка высокой загрузки
Подготовленные развертывания предоставляют выделенное количество вычислительных ресурсов для выполнения данной модели. Метрика "Подготовленное управляемое использование версии 2" в Azure Monitor измеряет использование развертывания в течение одной минуты. Подготовленные управляемые развертывания также оптимизированы, чтобы принятые вызовы обрабатывались с согласованной максимальной задержкой для каждого вызова. Когда рабочая нагрузка превышает выделенную емкость, служба возвращает код состояния HTTP 429 до тех пор, пока использование не будет удалено ниже 100 %. Время перед повторным повтором указывается в retry-after
заголовках ответов, retry-after-ms
которые предоставляют время в секундах и миллисекундах соответственно. Этот подход поддерживает целевые показатели задержки для каждого вызова, предоставляя разработчику контроль над обработкой ситуаций высокой нагрузки, например повтор или перенаправление в другой интерфейс или конечную точку.
Что делать, когда я получаю ответ 429?
Ответ 429 указывает, что выделенные PTUs полностью используются во время вызова. Ответ содержит retry-after-ms
заголовки, retry-after
которые сообщают вам время ожидания до принятия следующего вызова. Способ обработки ответа 429 зависит от требований приложения. Ниже приведены некоторые рекомендации.
- Если вы в порядке с более длительными задержками на вызов, реализуйте логику повторных попыток на стороне клиента, чтобы дождаться
retry-after-ms
времени и повтора. Этот подход позволяет максимально увеличить пропускную способность развертывания. Пакеты SDK клиента, предоставляемые корпорацией Майкрософт, уже обрабатывают его с разумными значениями по умолчанию. Возможно, вам потребуется дополнительная настройка на основе вариантов использования. - Рассмотрите возможность перенаправления трафика на другие модели, развертывания или интерфейсы. Такой подход является решением с наименьшей задержкой, так как это действие можно предпринять сразу после получения сигнала 429. Сигнал 429 не является непредвиденным ответом на ошибку при отправке на высокий уровень использования, а не часть разработки для управления очередями и высокой нагрузкой для подготовленных развертываний.
Изменение логики повторных попыток в клиентских библиотеках
Пакеты SDK Для Azure OpenAI по умолчанию повторяют ответы 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://github.com/Azure/azure-openai-benchmark
Рекомендуется использовать следующий рабочий процесс:
- Оцените ПТП пропускной способности с помощью калькулятора емкости.
- Запустите тест с этой фигурой трафика в течение длительного периода времени (10+мин), чтобы наблюдать за результатами в устойчивом состоянии.
- Обратите внимание на использование, маркеры, обработанные и значения частоты вызовов из средства тестирования и Azure Monitor.
- Запустите тест с собственной формой трафика и рабочими нагрузками с помощью реализации клиента. Обязательно реализуйте логику повторных попыток с помощью клиентской библиотеки Azure OpenAI или пользовательской логики.
Next Steps
- Дополнительные сведения о рекомендациях по облачным приложениям см . в рекомендациях по облачным приложениям.
- Дополнительные сведения о подготовленных развертываниях см. в статье "Что такое подготовленная пропускная способность?
- Дополнительные сведения о логике повторных попыток в каждом пакете SDK см. в следующих сведениях: