Начало работы с подготовленными развертываниями в Службе Azure OpenAI

В следующем руководстве описано, как настроить подготовленное развертывание с помощью ресурса Службы Azure OpenAI.

Необходимые компоненты

  • подписка Azure — создайте бесплатную учетную запись.
  • Доступ, предоставленный Azure OpenAI в требуемой подписке Azure. В настоящее время доступ к этой службе осуществляется приложением. Вы можете подать заявку на доступ к службе Azure OpenAI, выполнив форму по адресу https://aka.ms/oai/access.
  • Полученная квота для подготовленного развертывания и приобрела обязательство.

Примечание.

Подготовленные единицы пропускной способности (PTU) отличаются от стандартной квоты в Azure OpenAI и недоступны по умолчанию. Чтобы узнать больше об этом предложении, обратитесь к группе учетных записей Майкрософт.

Создание подготовленного развертывания

После приобретения обязательства по квоте можно создать развертывание. Чтобы создать подготовленное развертывание, выполните следующие действия. Описанные варианты отражают записи, показанные на снимке экрана.

Screenshot of the Azure OpenAI Studio deployment page for a provisioned deployment.

  1. Вход в Azure OpenAI Studio
  2. Выберите подписку, включенную для подготовленных развертываний, и выберите нужный ресурс в регионе, где у вас есть квота.
  3. В разделе "Управление" в левой области навигации выберите "Развертывания".
  4. Выберите "Создать новое развертывание" и настройте следующие поля. Разверните раскрывающийся список "Дополнительные параметры".
  5. Заполните значения в каждом поле. Приведем пример:
Поле Описание: Пример
Выбор модели Выберите конкретную модель, которую вы хотите развернуть. 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, размера входных данных, размера выходных данных и частоты вызовов. Количество одновременных вызовов и общих маркеров может отличаться в зависимости от этих значений. Мы рекомендуем определить пропускную способность для развертывания следующим образом:

  1. Используйте калькулятор емкости для оценки размера. Вы можете найти калькулятор емкости в Azure OpenAI Studio на странице квот и вкладке "Подготовлено".
  2. Тестирование нагрузки с помощью реальной рабочей нагрузки трафика. Дополнительные сведения о тестировании см. в разделе "Тестирование ".

Измерение использования развертывания

При развертывании указанного количества подготовленных единиц пропускной способности (PTUS) для этой конечной точки предоставляется набор пропускной способности вывода. Использование этой пропускной способности — это сложная формула на основе модели, частоты вызовов версии модели, размера запроса, размера поколения. Чтобы упростить это вычисление, мы предоставляем метрику использования в Azure Monitor. Развертывание возвращает значение 429 при любых новых вызовах после повышения использования выше 100 %. Подготовленное использование определяется следующим образом:

Использование развертывания PTU = (PTUs, потребляемые в период времени) / (PTUS, развернутые в период времени)

Вы можете найти меру использования в разделе Azure-Monitor для ресурса. Чтобы получить доступ к панелям https://portal.azure.comмониторинга, перейдите к ресурсу Azure OpenAI и выберите страницу метрик в левой области навигации. На странице метрик выберите меру "Подготовленное управляемое использование". При наличии нескольких развертываний в ресурсе также следует разделить значения по каждому развертыванию, нажав кнопку "Применить разделение".

Screenshot of the provisioned managed utilization on the resource's metrics blade in the Azure portal.

Дополнительные сведения о мониторинге развертываний см. на странице "Мониторинг 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

Рекомендуется использовать следующий рабочий процесс:

  1. Оцените ПТП пропускной способности с помощью калькулятора емкости.
  2. Запустите тест с этой фигурой трафика в течение длительного периода времени (10+мин), чтобы наблюдать за результатами в устойчивом состоянии.
  3. Обратите внимание на использование, маркеры, обработанные и значения частоты вызовов из средства тестирования и Azure Monitor.
  4. Запустите тест с собственной формой трафика и рабочими нагрузками с помощью реализации клиента. Обязательно реализуйте логику повторных попыток с помощью клиентской библиотеки Azure Openai или пользовательской логики.

Next Steps