Начало работы с подготовленными развертываниями в Службе Azure OpenAI
В следующем руководстве описано, как настроить подготовленное развертывание с помощью ресурса Службы Azure OpenAI.
Необходимые компоненты
- подписка Azure — создайте бесплатную учетную запись.
- Доступ, предоставленный Azure OpenAI в требуемой подписке Azure. В настоящее время доступ к этой службе осуществляется приложением. Вы можете подать заявку на доступ к службе Azure OpenAI, выполнив форму по адресу https://aka.ms/oai/access.
- Полученная квота для подготовленного развертывания и приобрела обязательство.
Примечание.
Подготовленные единицы пропускной способности (PTU) отличаются от стандартной квоты в Azure OpenAI и недоступны по умолчанию. Чтобы узнать больше об этом предложении, обратитесь к группе учетных записей Майкрософт.
Создание подготовленного развертывания
После приобретения обязательства по квоте можно создать развертывание. Чтобы создать подготовленное развертывание, выполните следующие действия. Описанные варианты отражают записи, показанные на снимке экрана.
- Вход в Azure OpenAI Studio
- Выберите подписку, включенную для подготовленных развертываний, и выберите нужный ресурс в регионе, где у вас есть квота.
- В разделе "Управление" в левой области навигации выберите "Развертывания".
- Выберите "Создать новое развертывание" и настройте следующие поля. Разверните раскрывающийся список "Дополнительные параметры".
- Заполните значения в каждом поле. Приведем пример:
Поле | Описание: | Пример |
---|---|---|
Выбор модели | Выберите конкретную модель, которую вы хотите развернуть. | GPT-4 |
Версия модели | Выберите версию модели для развертывания. | 0613 |
Название развертывания | Имя развертывания используется в коде для вызова модели с помощью клиентских библиотек и REST API. | gpt-4 |
Фильтр содержимого | Укажите политику фильтрации для применения к развертыванию. Узнайте больше о нашем руководстве по фильтрации содержимого. | По умолчанию |
Тип развертывания | Это влияет на пропускную способность и производительность. Выберите подготовленный управляемый для подготовленного развертывания | Подготовленный управляемый |
Подготовленные единицы пропускной способности | Выберите объем пропускной способности, которую вы хотите включить в развертывание. | 100 |
Если вы хотите создать развертывание программным способом, это можно сделать с помощью следующей команды Azure CLI. 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
на "ProvisionedManaged", а не "Стандартный".
Создание первых вызовов
Код вывода для подготовленных развертываний совпадает со стандартным типом развертывания. В следующем фрагменте кода показан вызов завершения чата к модели 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 OpenAI Studio на странице квот и вкладке "Подготовлено".
- Тестирование нагрузки с помощью реальной рабочей нагрузки трафика. Дополнительные сведения о тестировании см. в разделе "Тестирование ".
Измерение использования развертывания
При развертывании указанного количества подготовленных единиц пропускной способности (PTUS) для этой конечной точки предоставляется набор пропускной способности вывода. Использование этой пропускной способности — это сложная формула на основе модели, частоты вызовов версии модели, размера запроса, размера поколения. Чтобы упростить это вычисление, мы предоставляем метрику использования в Azure Monitor. Развертывание возвращает значение 429 при любых новых вызовах после повышения использования выше 100 %. Подготовленное использование определяется следующим образом:
Использование развертывания PTU = (PTUs, потребляемые в период времени) / (PTUS, развернутые в период времени)
Вы можете найти меру использования в разделе Azure-Monitor для ресурса. Чтобы получить доступ к панелям https://portal.azure.comмониторинга, перейдите к ресурсу Azure OpenAI и выберите страницу метрик в левой области навигации. На странице метрик выберите меру "Подготовленное управляемое использование". При наличии нескольких развертываний в ресурсе также следует разделить значения по каждому развертыванию, нажав кнопку "Применить разделение".
Дополнительные сведения о мониторинге развертываний см. на странице "Мониторинг Azure OpenAI Service ".
Обработка высокой загрузки
Подготовленные развертывания предоставляют выделенное количество вычислительных ресурсов для выполнения данной модели. Метрика "Подготовленное управляемое использование" в 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://aka.ms/aoai/benchmarking
Рекомендуется использовать следующий рабочий процесс:
- Оцените ПТП пропускной способности с помощью калькулятора емкости.
- Запустите тест с этой фигурой трафика в течение длительного периода времени (10+мин), чтобы наблюдать за результатами в устойчивом состоянии.
- Обратите внимание на использование, маркеры, обработанные и значения частоты вызовов из средства тестирования и Azure Monitor.
- Запустите тест с собственной формой трафика и рабочими нагрузками с помощью реализации клиента. Обязательно реализуйте логику повторных попыток с помощью клиентской библиотеки Azure Openai или пользовательской логики.
Next Steps
- Дополнительные сведения о рекомендациях по облачным приложениям проверка рекомендации в облачных приложениях
- Дополнительные сведения о подготовленных развертываниях проверка проверка подготовленную пропускную способность?
- Дополнительные сведения о логике повторных попыток в каждом пакете SDK проверка: