API модели предоставленной пропускной способности

В этой статье показано, как развертывать модели с помощью API Foundation Model с зарезервированной пропускной способностью. Azure Databricks рекомендует предоставленную пропускную способность для продуктивных рабочих нагрузок и обеспечивает оптимизированный вывод для фундаментальных моделей с гарантиями производительности.

Что такое подготовленная пропускная способность?

При создании подготовленной модели пропускной способности, обслуживающей конечную точку в Azure Databricks, вы выделяете выделенную емкость вывода, чтобы обеспечить согласованную пропускную способность для базовой модели, которую вы хотите обслуживать. Конечные точки сервиса моделей, обрабатывающие основные модели, можно создавать в блоках единиц модели. Количество выделенных единиц модели позволяет приобрести именно пропускную способность, необходимую для надежной поддержки рабочего приложения GenAI.

Список поддерживаемых архитектур моделей для конечных точек с регулируемой пропускной способностью см. в разделе "Поддерживаемые базовые модели Mosaic AI Model Serving".

Требования

См. раздел Требования.

Databricks рекомендует использовать базовые модели, предварительно установленные в каталоге Unity. Эти модели можно найти под номером system в каталоге и в схеме ai (system.ai).

Чтобы развернуть базовую модель, выполните приведенные действия.

  1. Перейдите к system.ai в обозревателе каталогов.
  2. Щелкните имя модели для развертывания.
  3. На странице модели нажмите кнопку Запустить эту модель.
  4. Откроется страница Создание конечной точки обслуживания. См. раздел Создание конечной точки с заданной пропускной способностью, используя пользовательский интерфейс.

Заметка

Чтобы развернуть модель Meta Llama из system.ai в Unity Catalog, необходимо выбрать соответствующую версию Instruct. Базовые версии моделей Meta Llama не поддерживаются для развертывания из system.ai в каталоге Unity. См. сведения о моделях Foundation, размещенных в Databricks , поддерживаемых вариантами моделей Meta Llama.

Создание подготовленной конечной точки пропускной способности с помощью пользовательского интерфейса

После регистрации модели в каталоге Unity создайте подготовленную конечную точку обслуживания пропускной способности, выполнив следующие действия:

  1. Перейдите к пользовательскому интерфейсу обслуживания в рабочей области.
  2. Выберите Создать конечную точку обслуживания.
  3. В поле сущности выберите вашу модель из каталога Unity. Для подходящих моделей пользовательский интерфейс для обслуживаемой сущности отображает экран предоставленной пропускной способности.
  4. В раскрывающемся списке Максимум вы можете настроить максимальную пропускную способность токенов в секунду для конечной точки.
    1. Подготовленные конечные точки пропускной способности автоматически масштабируются, поэтому вы можете выбрать Изменить, чтобы просмотреть минимальное количество токенов в секунду, до которого ваша конечная точка может снизить масштаб.

подготовленная пропускная способность

Создание подготовленной конечной точки пропускной способности с помощью REST API

Чтобы развернуть модель в подготовленном режиме пропускной способности с помощью REST API, необходимо указать в запросе поля min_provisioned_throughput и max_provisioned_throughput. Если вы предпочитаете Python, вы также можете создать конечную точку, используя SDK для развертывания MLflow.

Сведения о том, как определить подходящий диапазон подготовленной пропускной способности для модели, см. в разделах иотносительно получения этой информации.

import requests
import json

# Set the name of the MLflow endpoint
endpoint_name = "prov-throughput-endpoint"

# Name of the registered MLflow model
model_name = "ml.llm-catalog.foundation-model"

# Get the latest version of the MLflow model
model_version = 3

# Get the API endpoint and token for the current notebook context
API_ROOT = "<YOUR-API-URL>"
API_TOKEN = "<YOUR-API-TOKEN>"

headers = {"Context-Type": "text/json", "Authorization": f"Bearer {API_TOKEN}"}

optimizable_info = requests.get(
  url=f"{API_ROOT}/api/2.0/serving-endpoints/get-model-optimization-info/{model_name}/{model_version}",
  headers=headers)
  .json()

if 'optimizable' not in optimizable_info or not optimizable_info['optimizable']:
  raise ValueError("Model is not eligible for provisioned throughput")

chunk_size = optimizable_info['throughput_chunk_size']

# Minimum desired provisioned throughput
min_provisioned_throughput = 2 * chunk_size

# Maximum desired provisioned throughput
max_provisioned_throughput = 3 * chunk_size

# Send the POST request to create the serving endpoint
data = {
  "name": endpoint_name,
  "config": {
    "served_entities": [
      {
        "entity_name": model_name,
        "entity_version": model_version,
        "min_provisioned_throughput": min_provisioned_throughput,
        "max_provisioned_throughput": max_provisioned_throughput,
      }
    ]
  },
}

response = requests.post(
  url=f"{API_ROOT}/api/2.0/serving-endpoints", json=data, headers=headers
)

print(json.dumps(response.json(), indent=4))

Логарифмическая вероятность для задач завершения чата

Для задач завершения чата можно использовать параметр logprobs для предоставления логарифмической вероятности выбора токена при выборке в процессе генерации крупной языковой модели. Вы можете использовать logprobs для различных сценариев, включая классификацию, оценку неопределенности модели и выполнение метрик оценки. Дополнительные сведения о параметрах см. в API завершения чата .

увеличение подготовленной пропускной способности

Выделенная пропускная способность доступна в виде приростов токенов в секунду, причем конкретные приросты зависят от модели. Чтобы определить подходящий диапазон для ваших потребностей, Databricks рекомендует использовать API сведений об оптимизации модели на платформе.

GET api/2.0/serving-endpoints/get-model-optimization-info/{registered_model_name}/{version}

Ниже приведен пример ответа api:

{
  "optimizable": true,
  "model_type": "llama",
  "throughput_chunk_size": 1580
}

Limitation

  • Развертывание модели может завершиться сбоем из-за проблем с пропускной способностью GPU, что приводит к истечению времени ожидания во время создания или обновления конечной точки. Обратитесь к команде менеджеров по работе с клиентами Databricks, чтобы помочь устранить эту проблему.