Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описывается, как управлять конечными точками обслуживания модели с помощью пользовательского интерфейса обслуживания и REST API. Ознакомьтесь со статьей "Обслуживание конечных точек" в справочнике по REST API.
Чтобы создать конечные точки обслуживания моделей, используйте одно из следующих действий:
- Создайте пользовательские конечные точки обслуживания моделей.
- Создание базовой модели обслуживания конечных точек.
Получение состояния конечной точки модели
Вы можете проверить состояние конечной точки с помощью пользовательского интерфейса обслуживания или программно с помощью REST API, клиента рабочей области Databricks или пакета SDK для развертываний MLflow.
Состояния конечной точки могут быть Ready, Ready (Update failed), Not ready (Updating), Not ready (Update failed) или Not ready (Stopped). Готовность указывает, доступна ли конечная точка для отправки запросов. Ошибка обновления указывает на то, что последнее изменение конечной точки завершилось неудачно. Остановлено означает, что конечная точка остановлена.
Время обновления конфигурации конечных точек зависит от деталей обновления и может занять 10-25 минут. Чтобы проверить статус обновления, вы можете попросить Genie Code предоставить вам данные о статусе, включая оставшееся время обновления.
Пользовательский интерфейс
Индикатор состояния конечной точки обслуживания в верхней части страницы сведений о конечной точке:
REST API
GET /api/2.0/serving-endpoints/{name}
В следующем примере ответа поле "READY" означает, state.ready что конечная точка готова к получению трафика. Поле state.update_state — NOT_UPDATING, и pending_config больше не возвращается, так как обновление успешно завершено.
{
"name": "unity-model-endpoint",
"creator": "customer@example.com",
"creation_timestamp": 1666829055000,
"last_updated_timestamp": 1666829055000,
"state": {
"ready": "READY",
"update_state": "NOT_UPDATING"
},
"config": {
"served_entities": [
{
"name": "my-ads-model",
"entity_name": "myCatalog.mySchema.my-ads-model",
"entity_version": "1",
"workload_size": "Small",
"scale_to_zero_enabled": false,
"state": {
"deployment": "DEPLOYMENT_READY",
"deployment_state_message": ""
},
"creator": "customer@example.com",
"creation_timestamp": 1666829055000
}
],
"traffic_config": {
"routes": [
{
"served_model_name": "my-ads-model",
"traffic_percentage": 100
}
]
},
"config_version": 1
},
"id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"permission_level": "CAN_MANAGE"
}
Клиент рабочей области Databricks
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
endpoint = w.serving_endpoints.get(name="my-endpoint")
print(f"Endpoint state: {endpoint.state.ready}")
print(f"Update state: {endpoint.state.config_update}")
Пакет SDK для развертываний MLflow
from mlflow.deployments import get_deploy_client
client = get_deploy_client("databricks")
endpoint = client.get_endpoint(endpoint="my-endpoint")
print(f"Endpoint state: {endpoint['state']}")
print(f"Endpoint config: {endpoint['config']}")
Остановка модельного сервисного конечного пункта
Вы можете временно остановить конечную точку обслуживания модели и запустить ее позже. Когда конечная точка остановлена:
- Ресурсы, подготовленные для него, отключаются.
- Конечная точка не может обслуживать запросы, пока не будет запущена снова.
- Можно остановить только те конечные точки, которые обслуживают пользовательские модели и не имеют обновлений в процессе.
- Остановленные конечные точки не учитываются в квоте ресурса.
- Запросы, отправленные в остановленную конечную точку, возвращают ошибку 400.
Остановка конечной точки
Пользовательский интерфейс
Нажмите кнопку " Остановить " в правом верхнем углу.
REST API
POST /api/2.0/serving-endpoints/{name}/config:stop
Запуск конечной точки
Запуск конечной точки создает новую версию конфигурации с теми же свойствами, что и существующая остановленная конфигурация.
Когда вы будете готовы запустить остановленную конечную точку обслуживания модели:
Пользовательский интерфейс
Нажмите кнопку " Пуск" в правом верхнем углу.
REST API
POST /api/2.0/serving-endpoints/{name}/config:start
Удаление конечной точки обслуживания модели
Удаление конечной точки отключает использование и удаляет все данные, связанные с конечной точкой. Отменить удаление невозможно.
Пользовательский интерфейс
Щелкните меню кебаб в верхней части и выберите Удалить.
REST API
DELETE /api/2.0/serving-endpoints/{name}
Пакет SDK для развертываний MLflow
from mlflow.deployments import get_deploy_client
client = get_deploy_client("databricks")
client.delete_endpoint(endpoint="chat")
Отладка конечной точки обслуживания модели
Доступны два типа журналов для отладки проблем с конечными точками:
- Журналы сборки контейнеров сервера модели: генерируются во время инициализации конечной точки, при создании контейнера. Эти журналы фиксируют этап установки, включая скачивание модели, установку зависимостей и настройку среды выполнения. Используйте эти журналы для отладки того, почему конечная точка не удалось запустить или зависла во время развертывания.
- Журналы сервера модели: создаются во время работы, когда конечный узел активно выполняет предсказания. Эти журналы записывают входящие запросы, выполнение вывода модели, ошибки среды выполнения и ведение журнала на уровне приложения из кода модели. Используйте эти журналы для отладки проблем с прогнозированием или исследования сбоев запросов.
Оба типа журналов также доступны из интерфейса Endpoints на вкладке Журналы.
Получение журналов сборки контейнера
Для журналов сборки для обслуживаемой модели можно использовать следующий запрос. Для получения дополнительной информации см. руководство по отладке использования моделей.
GET /api/2.0/serving-endpoints/{name}/served-models/{served-model-name}/build-logs
{
"config_version": 1 // optional
}
Получение журналов сервера модели
Для журналов сервера модели для модели обслуживания можно использовать следующий запрос:
GET /api/2.0/serving-endpoints/{name}/served-models/{served-model-name}/logs
{
"config_version": 1 // optional
}
Управление разрешениями для конечной точки обслуживания модели
Для изменения разрешений необходимо иметь по крайней мере разрешение CAN MANAGE на конечной точке обслуживания. Для получения дополнительной информации об уровнях разрешений см. раздел Списки контроля доступа конечных точек.
Заметка
При обновлении эндпоинта Databricks повторно проверяет членство в рабочем пространстве пользователя, указанного как создатель, а также разрешения на обслуживаемую сущность. Дополнительные сведения см. в разделе "Удостоверение и доступ".
Получите список разрешений в конечной точке обслуживания.
Пользовательский интерфейс
Нажмите кнопку "Разрешения" в правом верхнем углу пользовательского интерфейса.
Databricks CLI (интерфейс командной строки)
databricks permissions get serving-endpoints <endpoint-id>
Предоставьте пользователю jsmith@example.com разрешение CAN QUERY на конечной точке обслуживания.
databricks permissions update serving-endpoints <endpoint-id> --json '{
"access_control_list": [
{
"user_name": "jsmith@example.com",
"permission_level": "CAN_QUERY"
}
]
}'
Вы также можете изменить разрешения для конечной точки обслуживания с помощью API разрешений.
Добавление бессерверной политики использования для конечной точки обслуживания модели
Внимание
Эта функция доступна в общедоступной предварительной версии и недоступна для конечных точек, которые обслуживают внешние модели.
Политики бессерверного использования позволяют организации применять пользовательские теги к бессерверному использованию для детализации выставления счетов. Если в рабочей области используются бессерверные политики использования для атрибута бессерверного использования, можно добавить политику бессерверного использования в конечные точки обслуживания модели. См. раздел "Использование атрибутов с бессерверными политиками".
Во время создания конечной точки обслуживания модели можно выбрать бессерверную политику использования конечной точки в меню политики использования в пользовательском интерфейсе обслуживания. Если у вас назначена политика бессерверного использования, все создаваемые конечные точки назначаются этой бессерверной политике использования, даже если вы не выбираете политику в меню политики использования .
Если у вас есть MANAGE разрешения для существующей конечной точки, вы можете изменить и добавить политику бессерверного использования в эту конечную точку на странице сведений о конечной точке в пользовательском интерфейсе.
Заметка
Если вам назначили бессерверную политику использования, существующие конечные точки не будут автоматически помечены вашей политикой. Если вы хотите подключить к ним политику бессерверного использования, необходимо вручную обновить существующие конечные точки.
Получите схему сервисной конечной точки модели
Внимание
Поддержка схем запросов конечных точек доступна в общедоступной предварительной версии. Эта функция доступна в регионах обслуживания моделей.
Схема запроса конечной точки обслуживания — это формальное описание конечной точки обслуживания с помощью стандартной спецификации OpenAPI в формате JSON. Он содержит сведения о конечной точке, включая путь к конечной точке, сведения о запросе конечной точки, например формате текста запроса и ответа, а также типе данных для каждого поля. Эта информация может быть полезной для сценариев воспроизведения или при необходимости информации о конечной точке, но вы не являетесь создателем исходной конечной точки или владельцем.
Чтобы получить схему конечной точки обслуживания модели, обслуживаемая модель должна иметь сигнатуру модели, зарегистрированную в журнале, и конечная точка должна находиться в состоянии READY.
В следующих примерах показано, как программно получить схему конечной точки обслуживания модели с помощью REST API. Чтобы узнать о схемах конечных точек обслуживания функций, см. в разделе "Конечные точки обслуживания функций".
Схема, возвращаемая API, находится в формате объекта JSON, следующего за спецификацией OpenAPI.
ACCESS_TOKEN="<endpoint-token>"
ENDPOINT_NAME="<endpoint name>"
curl "https://example.databricks.com/api/2.0/serving-endpoints/$ENDPOINT_NAME/openapi" -H "Authorization: Bearer $ACCESS_TOKEN" -H "Content-Type: application/json"
Сведения о ответе схемы
Ответ — это спецификация OpenAPI в формате JSON, включая такие поля, как openapi, infoservers и paths. Так как ответ схемы является объектом JSON, его можно проанализировать с помощью общих языков программирования и создать клиентский код из спецификации с помощью сторонних средств.
Вы также можете визуализировать спецификацию OpenAPI с помощью сторонних инструментов, таких как Редактор Swagger.
К основным полям ответа относятся:
- В
info.titleполе отображается имя конечной точки обслуживания. - Поле
serversвсегда содержит один объект, обычно это поле, являющееся базовым URL-адресом конечной точки. - Объект
pathsв ответе содержит все поддерживаемые пути для конечной точки. Ключи в объекте — ЭТО URL-адрес пути. Каждыйpathможет поддерживать несколько форматов входных данных. Эти входные данные перечислены вoneOfполе.
Ниже приведен пример ответа схемы конечной точки:
{
"openapi": "3.1.0",
"info": {
"title": "example-endpoint",
"version": "2"
},
"servers": [{ "url": "https://example.databricks.com/serving-endpoints/example-endpoint" }],
"paths": {
"/served-models/vanilla_simple_model-2/invocations": {
"post": {
"requestBody": {
"content": {
"application/json": {
"schema": {
"oneOf": [
{
"type": "object",
"properties": {
"dataframe_split": {
"type": "object",
"properties": {
"columns": {
"description": "required fields: int_col",
"type": "array",
"items": {
"type": "string",
"enum": ["int_col", "float_col", "string_col"]
}
},
"data": {
"type": "array",
"items": {
"type": "array",
"prefixItems": [
{
"type": "integer",
"format": "int64"
},
{
"type": "number",
"format": "double"
},
{
"type": "string"
}
]
}
}
}
},
"params": {
"type": "object",
"properties": {
"sentiment": {
"type": "number",
"format": "double",
"default": "0.5"
}
}
}
},
"examples": [
{
"columns": ["int_col", "float_col", "string_col"],
"data": [
[3, 10.4, "abc"],
[2, 20.4, "xyz"]
]
}
]
},
{
"type": "object",
"properties": {
"dataframe_records": {
"type": "array",
"items": {
"required": ["int_col", "float_col", "string_col"],
"type": "object",
"properties": {
"int_col": {
"type": "integer",
"format": "int64"
},
"float_col": {
"type": "number",
"format": "double"
},
"string_col": {
"type": "string"
},
"becx_col": {
"type": "object",
"format": "unknown"
}
}
}
},
"params": {
"type": "object",
"properties": {
"sentiment": {
"type": "number",
"format": "double",
"default": "0.5"
}
}
}
}
}
]
}
}
}
},
"responses": {
"200": {
"description": "Successful operation",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"predictions": {
"type": "array",
"items": {
"type": "number",
"format": "double"
}
}
}
}
}
}
}
}
}
}
}
}