Поделиться через


Настройка шлюза ИИ на конечных точках обслуживания моделей

Из этой статьи вы узнаете, как настроить Mosaic AI Gateway на конечной точке обслуживания модели.

Требования

Настройка шлюза искусственного интеллекта с помощью пользовательского интерфейса

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

Настройка функций шлюза искусственного интеллекта

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

Функция Как включить Сведения
Отслеживание использования Выберите Включить отслеживание использования, чтобы активировать отслеживание и мониторинг показателей использования данных.
Эта функция включена по умолчанию для конечных точек с оплатой за токен .
  • Необходимо включить каталог Unity.
  • Администраторы учетных записей должны включить схему системной таблицы перед использованием системных таблиц: system.serving.endpoint_usage, которая отслеживает количество токенов для каждого запроса к конечной точке, и system.serving.served_entities, где хранятся метаданные каждой базовой модели.
  • См. схемы таблиц отслеживания использования
  • Только администраторы учетных записей имеют разрешение на просмотр или запрос таблицы served_entities или endpoint_usage, даже если пользователь, управляющий конечной точкой, должен включить отслеживание использования. См. Предоставить доступ к системным таблицам
  • Число входных и выходных маркеров оценивается как (text_length+1)/4, если число маркеров не возвращается моделью.
  • Системная system.serving.served_entities таблица в настоящее время не поддерживается для конечных точек с оплатой за токен.
Ведение журнала полезной нагрузки Выберите Включить таблицы вывода результатов, чтобы с вашего конечного узла автоматически записывать запросы и ответы в таблицы Delta, управляемые каталогом Unity.
  • Необходимо, чтобы Unity Catalog был включен и был доступ CREATE TABLE в указанной схеме каталога.
  • Таблицы вывода, включенные шлюзом ИИ , имеют другую схему, чем устаревшие таблицы вывода , которые поддерживаются только в конечных точках, которые служат пользовательским моделям. См. схему таблицы вывода заключений с поддержкой шлюза ИИ .
  • Данные регистрации полезной нагрузки заполняют эти таблицы менее чем за час после запроса конечной точки.
  • Данные размером более 1 МБ не записываются.
  • Полезная нагрузка ответа объединяет ответы всех возвращённых фрагментов.
  • Поддерживается потоковое вещание. В сценариях потоковой передачи ответный пакет данных объединяет ответы от передаваемых фрагментов.
  • Таблицы вывода для оптимизированных для маршрутов конечных точек обслуживания модели находятся в общедоступной предварительной версии.
AI Guardrails См. раздел "Настройка AI Guardrails" в пользовательском интерфейсе.
  • Защита предотвращает взаимодействие модели с небезопасным и вредным содержимым, обнаруженным в входных и выходных данных модели.
  • Ограничения для выхода не поддерживаются для моделей встраивания или потокового вещания.
Ограничения скорости Выберите ограничения частоты, чтобы управлять и устанавливать количество запросов в минуту (QPM), которые ваша конечная точка может получать как в целом, так и от каждого пользователя. Ограничения скорости применяются только к пользователям, у которых есть разрешение на запрос конечной точки.
Можно определить ограничения скорости на разных уровнях.
  • Используйте поле Endpoint , чтобы указать максимальный QPM, который может обрабатываться всей конечной точкой. Это ограничение применяется ко всем трафику независимо от пользователя.
  • Используйте поле "Пользователь (по умолчанию"), чтобы задать ограничение скорости по умолчанию для всех пользователей конечной точки, если не определен более конкретный настраиваемый предел скорости.

Можно указать настраиваемые ограничения скорости для:
  • Отдельные пользователи или субъекты-службы. Они принимают приоритет над ограничениями настраиваемой скорости группы пользователей.
  • Группы пользователей. Это ограничение является общим ограничением скорости для всех членов группы.
  • По умолчанию для пользователей или конечной точки не настроены ограничения скорости.
  • В конечной точке можно указать не более 20 ограничений скорости и до 5 ограничений для конкретной группы.
  • Ограничение скорости конечной точки — это глобальный максимум. Если это ограничение превышено, все запросы к конечной точке блокируются независимо от ограничений скорости для конкретного пользователя или группы.
  • Ограничения пользовательской скорости переопределяют ограничение скорости пользователя (по умолчанию).
  • Если пользователь принадлежит как к ограничению, определенному пользователем, так и к ограничению для конкретной группы, применяется ограничение для конкретного пользователя.
  • Если пользователь принадлежит нескольким группам пользователей с разными ограничениями скорости, применяется наименее ограничивающий (самый высокий) ограничение скорости группы.
Разделение трафика В разделе Обслуживаемых сущностей укажите процент трафика, который требуется перенаправить в определенные модели.
Сведения о том, как настроить разделение трафика в конечной точке программным способом, см. в статье Обслуживать несколько внешних моделей для конечной точки.
  • Чтобы маршрутизировать весь трафик в определенную модель, задайте для него значение 100%.
  • Если вы хотите указать резервную модель, добавьте эту модель в конечную точку и задайте ее процент трафика в 0%.
  • Чтобы сбалансировать трафик между моделями и настроить резервные варианты, можно ожидать следующего поведения:
  • Запросы распределяются случайным образом по сущностям на основе назначенных процентных значений трафика.
  • Если запрос попадает в первую сущность и завершается ошибкой, он возвращается к следующей сущности в том порядке, в который были перечислены обслуживаемые сущности во время создания конечной точки или последнего обновления конечной точки.
  • Разделение трафика не влияет на порядок резервных попыток.
Резервные копии Выберите Включить резервные варианты в разделе Шлюза ИИ, чтобы отправить запрос другим обслуживаемым моделям на конечную точку в качестве резервного варианта.
  • Если первоначальный запрос, перенаправленный в определенную сущность, возвращает ошибку 429 или 5XX, запрос возвращается к следующей сущности, указанной в конечной точке.
  • Порядок перенаправления запросов на резервные обслуживаемые сущности зависит от порядка перечисления моделей во время создания конечной точки или последнего обновления конечной точки. Процент трафика не влияет на порядок резервных попыток, отправляемых обслуживающим единицам.
  • Резервные возможности поддерживаются только для внешних моделей.
  • Прежде чем включить возможность использования резервных моделей для внешних систем, необходимо назначить проценты трафика другим моделям, обслуживаемым конечному пункту.
  • Любая внешняя модель с функциями трафика 0% используется исключительно в качестве резервной модели.
  • У вас может быть не более двух резервных копий.
  • Каждая сущность пытается один раз в последовательном порядке, пока запрос не будет успешным. Если все перечисленные сущности были испробованы безуспешно, запрос не выполняется.
  • Первая успешная или последняя неудачная попытка запроса и ответ регистрируются как в таблицах отслеживания использования, так и в таблицах ведения журнала полезных данных.

На следующей схеме показан резервный пример, в котором:

  • Три обслуживаемые сущности обслуживаются в конечной точке обслуживания модели.
  • Запрос изначально направляется к обслуживаемой сущности 3.
  • Если запрос возвращает ответ 200, запрос был успешно выполнен на обслуживаемой сущности 3, а запрос и его ответ регистрируются в таблицах отслеживания использования и журнала полезной нагрузки конечной точки.
  • Если запрос возвращает ошибку 429 или 5xx для обслуживаемой сущности 3, запрос возвращается к следующей обслуживаемой сущности в конечной точке, обслуживаемой сущности 1.
    • Если запрос возвращает ошибку 429 или 5xx для обслуживаемой сущности 1, запрос возвращается к следующей обслуживаемой сущности в конечной точке, обслуживаемой сущности 2.
    • Если запрос возвращает ошибку 429 или 5xx для обслуживаемой сущности 2, запрос завершается ошибкой, так как это максимальное количество резервных сущностей. Неудачный запрос и ошибка ответа регистрируются в таблицах отслеживания использования и в таблицах логирования полезной нагрузки.

пример резервной диаграммы

Настройка AI Guardrails в пользовательском интерфейсе

Это важно

Эта функция доступна в общедоступной предварительной версии.

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

Примечание.

После 30 мая 2025 года модерация тем и фильтрация ключевых слов больше не поддерживаются ИИ. Если эти функции необходимы для рабочих процессов, обратитесь к группе учетной записи Databricks, чтобы принять участие в пользовательской предварительной версии.

Ограждение Как включить
Безопасность Выберите Безопасность, чтобы включить защитные меры и предотвратить взаимодействие модели с небезопасным и вредным содержимым.
Обнаружение персонально идентифицируемой информации (PII) Выберите для блокировки или маскирования данных PII, таких как имена, адреса, номера кредитной карты, если такая информация обнаружена в запросах и ответах конечных точек. В противном случае выберите "Нет" , чтобы не обнаруживать личные данные.

Настройка функций AI Guardrail

схемы таблиц отслеживания использования

В следующих разделах перечислены схемы таблиц отслеживания использования для системных таблиц system.serving.served_entities и system.serving.endpoint_usage.

схема таблицы отслеживания использования system.serving.served_entities

Примечание.

Системная system.serving.served_entities таблица отслеживания использования в настоящее время не поддерживается для конечных точек с оплатой за токен.

Системная таблица отслеживания использования system.serving.served_entities имеет следующую схему:

Имя столбца Описание Тип
served_entity_id Уникальный идентификатор обслуживаемой сущности. СТРОКА
account_id Идентификатор учетной записи клиента для Delta Sharing. СТРОКА
workspace_id Идентификатор рабочего пространства клиента для конечной точки обслуживания. СТРОКА
created_by Идентификатор создателя. СТРОКА
endpoint_name Имя конечной точки обслуживания. СТРОКА
endpoint_id Уникальный идентификатор конечной точки обслуживания. СТРОКА
served_entity_name Имя обслуживаемой сущности. СТРОКА
entity_type Тип обслуживаемой сущности. Может бытьFEATURE_SPEC, , EXTERNAL_MODELFOUNDATION_MODELилиCUSTOM_MODEL СТРОКА
entity_name Базовое имя сущности. Отличается от served_entity_name, которое является именем, указанным пользователем. Например, entity_name — это имя модели каталога Unity. СТРОКА
entity_version Версия обслуживаемой сущности. СТРОКА
endpoint_config_version Версия конфигурации конечной точки. ИНТ
task Тип задачи. Возможные значения: llm/v1/chat, llm/v1/completions или llm/v1/embeddings. СТРОКА
external_model_config Конфигурации для внешних моделей. Например: {Provider: OpenAI} структура
foundation_model_config Конфигурации для базовых моделей. Например: {min_provisioned_throughput: 2200, max_provisioned_throughput: 4400}. структура
custom_model_config Конфигурации для пользовательских моделей. Например: { min_concurrency: 0, max_concurrency: 4, compute_type: CPU }. структура
feature_spec_config Конфигурации для спецификаций функций. Например: { min_concurrency: 0, max_concurrency: 4, compute_type: CPU } структура
change_time Временная метка изменения для обслуживаемой единицы. TIMESTAMP
endpoint_delete_time Метка времени удаления сущности. Конечная точка — это контейнер для обслуживаемой сущности. После удаления конечной точки также удаляется обслуживаемая сущность. TIMESTAMP

схема таблицы отслеживания использования system.serving.endpoint_usage

Системная таблица отслеживания использования system.serving.endpoint_usage имеет следующую схему:

Имя столбца Описание Тип
account_id Идентификатор учетной записи клиента. СТРОКА
workspace_id Идентификатор рабочей области клиента для точки обслуживания. СТРОКА
client_request_id Пользователь предоставил идентификатор запроса, который можно указать в тексте запроса на обслуживание модели. Для конечных точек пользовательской модели это не поддерживается для запросов размером более 4MiB. СТРОКА
databricks_request_id Идентификатор запроса, созданный Azure Databricks, прикреплён ко всем запросам на обслуживание модели. СТРОКА
requester Идентификатор пользователя или субъекта-службы, разрешения которого используются для запроса вызова конечной точки обслуживания. СТРОКА
status_code Код состояния HTTP, возвращенный из модели. ЦЕЛОЕ ЧИСЛО
request_time Отметка времени, когда запрос был получен. TIMESTAMP
input_token_count Количество токенов входных данных. ДЛИННЫЙ
output_token_count Количество токенов выходных данных. ДЛИННЫЙ
input_character_count Число символов входной строки или запроса. ДЛИННЫЙ
output_character_count Число символов выходной строки ответа. ДЛИННЫЙ
usage_context Пользователь предоставил карту, содержащую идентификаторы конечного пользователя или клиентского приложения, которое вызывает конечную точку. Определите более точно использование с помощью usage_context. Для конечных точек пользовательской модели это не поддерживается для запросов размером более 4MiB. Карта
request_streaming Указывает, находится ли запрос в режиме потоковой передачи. Булевый
served_entity_id Уникальный идентификатор, используемый для соединения с таблицей измерений system.serving.served_entities для поиска сведений о конечной точке и обслуживаемой сущности. СТРОКА

Дальнейшее определение использования с помощью usage_context

При запросе внешней модели с включенным отслеживанием использования, вы можете указать параметр usage_context с типом Map[String, String]. Сопоставление контекста использования отображается в таблице отслеживания использования в столбце usage_context. Размер usage_context карты не может превышать 10 КИБ.

{
  "messages": [
    {
      "role": "user",
      "content": "What is Databricks?"
    }
  ],
  "max_tokens": 128,
  "usage_context":
    {
      "use_case": "external",
      "project": "project1",
      "priority": "high",
      "end_user_to_charge": "abcde12345",
      "a_b_test_group": "group_a"
    }
}

Если вы используете клиент OpenAI Python, можно указать usage_context, включив его в параметр extra_body.

from openai import OpenAI

client = OpenAI(
    api_key="dapi-your-databricks-token",
    base_url="https://example.staging.cloud.databricks.com/serving-endpoints"
)

response = client.chat.completions.create(
    model="databricks-claude-3-7-sonnet",
    messages=[{"role": "user", "content": "What is Databricks?"}],
    temperature=0,
    extra_body={"usage_context": {"project": "project1"}},
)
answer = response.choices[0].message.content
print("Answer:", answer)

Администраторы учетных записей могут агрегировать различные строки в зависимости от контекста использования, чтобы получить аналитические сведения и присоединить эти сведения к данным в таблице ведения журнала полезных данных. Например, можно добавить end_user_to_charge в usage_context для отслеживания распределения затрат для конечных пользователей.

Мониторинг использования конечных точек

Чтобы отслеживать использование конечной точки, можно объединить системные таблицы и таблицы инференса для вашей конечной точки.

Объединение системных таблиц

Этот пример относится только к внешней модели и подготовленным конечным точкам пропускной способности. Системная served_entities таблица не поддерживается в конечных точках с оплатой за токен, но вы можете присоединиться к таблицам вывода и использования , чтобы получить аналогичные сведения.

Чтобы соединить системные таблицы endpoint_usage и served_entities, используйте следующий SQL:

SELECT * FROM system.serving.endpoint_usage as eu
JOIN system.serving.served_entities as se
ON eu.served_entity_id = se.served_entity_id
WHERE created_by = "\<user_email\>";

Объединение таблиц вывода и использования

Ниже объединяются системная таблица endpoint_usage и таблица вывода результатов для конечной точки с оплатой за токен. Таблицы вывода данных и отслеживание использования должны быть активированы на конечной точке для подключения к этим таблицам.

SELECT * FROM system.serving.endpoint_usage AS endpoint_usage
JOIN
  (SELECT DISTINCT(served_entity_id) AS fmapi_served_entity_id
  FROM <inference table name>) fmapi_id
ON fmapi_id.fmapi_served_entity_id = endpoint_usage.served_entity_id;

Обновление функций шлюза искусственного интеллекта в конечных точках

Вы можете обновить функции шлюза ИИ на конечных точках обслуживания моделей как для тех, где они были ранее включены, так и для тех, где не были. Обновления конфигураций шлюза искусственного интеллекта занимают около 20–40 секунд, однако ограничение скорости обновлений может занять до 60 секунд.

Ниже показано, как обновить функции шлюза искусственного интеллекта в конечной точке обслуживания модели с помощью пользовательского интерфейса обслуживания.

В разделе шлюза на странице конечной точки можно увидеть, какие функции включены. Чтобы обновить эти функции, щелкните , чтобы изменить шлюз ИИ.

обновление функций шлюза ИИ

Пример записной книжки

В следующей записной книжке показано, как программно включить и использовать функции шлюза Databricks Mosaic AI для управления моделями от поставщиков. Дополнительные сведения об REST API см. в PUT /api/2.0/services-endpoints/{name}/ai-gateway.

Включение функций записной книжки Databricks Mosaic AI Gateway

Получите записную книжку

Дополнительные ресурсы