Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описывается, как управлять конечными точками обслуживания модели с помощью пользовательского интерфейса обслуживания и REST API. Ознакомьтесь со статьей "Обслуживание конечных точек" в справочнике по REST API.
Чтобы создать конечные точки обслуживания моделей, используйте одно из следующих действий:
- Создайте пользовательские конечные точки обслуживания моделей.
- Создание базовой модели обслуживания конечных точек.
Получение состояния конечной точки модели
В пользовательском интерфейсе обслуживания можно проверить состояние конечной точки из индикатора состояния конечной точки обслуживания в верхней части страницы сведений о конечной точке.
Проверьте состояние и сведения конечной точки программным способом с помощью REST API или пакета SDK для развертываний MLflow:
REST API
GET /api/2.0/serving-endpoints/{name}
В следующем примере создается конечная точка, которая служит первой версией модели my-ads-model
, зарегистрированной в реестре моделей каталога Unity. Необходимо указать полное имя модели, включая родительский каталог и схему, например, catalog.schema.example-model
.
В следующем примере ответа поле "READY" означает, state.ready
что конечная точка готова к получению трафика. Поле state.update_state
— NOT_UPDATING
, и pending_config
больше не возвращается, так как обновление успешно завершено.
{
"name": "unity-model-endpoint",
"creator": "[email protected]",
"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": "[email protected]",
"creation_timestamp": 1666829055000
}
],
"traffic_config": {
"routes": [
{
"served_model_name": "my-ads-model",
"traffic_percentage": 100
}
]
},
"config_version": 1
},
"id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"permission_level": "CAN_MANAGE"
}
Пакет SDK для развертываний MLflow
from mlflow.deployments import get_deploy_client
client = get_deploy_client("databricks")
endpoint = client.get_endpoint(endpoint="chat")
assert endpoint == {
"name": "chat",
"creator": "[email protected]",
"creation_timestamp": 0,
"last_updated_timestamp": 0,
"state": {...},
"config": {...},
"tags": [...],
"id": "88fd3f75a0d24b0380ddc40484d7a31b",
}
Остановка модельного сервисного конечного пункта
Вы можете временно остановить конечную точку обслуживания модели и запустить ее позже. Когда конечная точка остановлена, ресурсы, подготовленные для него, завершаются, и конечная точка не может обслуживать запросы, пока не будет запущена снова. Только конечные точки, обслуживающие пользовательские модели, не оптимизированы по маршрутам и не имеют обновлений в процессе, могут быть остановлены. Остановленные конечные точки не учитываются в квоте ресурса. Запросы, отправленные в остановленную конечную точку, возвращают ошибку 400.
Вы можете остановить конечный объект на странице его сведений в пользовательском интерфейсе обслуживания.
- Щелкните конечную точку, которую вы хотите остановить.
- Нажмите кнопку " Остановить " в правом верхнем углу.
Кроме того, можно программно остановить конечную точку обслуживания с помощью REST API следующим образом:
POST /api/2.0/serving-endpoints/{name}/config:stop
Когда вы готовы начать остановленную конечную точку обслуживания модели, вы можете сделать это на странице сведений конечной точки в пользовательском интерфейсе обслуживания .
- Щелкните конечную точку, которую вы хотите запустить.
- Нажмите кнопку " Пуск" в правом верхнем углу.
Кроме того, можно запустить остановленную конечную точку обслуживания программным способом с помощью REST API следующим образом:
POST /api/2.0/serving-endpoints/{name}/config:start
Удаление конечной точки обслуживания модели
Чтобы отключить обслуживание модели, можно удалить конечную точку, на которой она обслуживается.
Вы можете удалить конечную точку на странице сведений о конечной точке в пользовательском интерфейсе Serving.
- Щелкните "Служить " на боковой панели.
- Щелкните конечную точку, которую нужно удалить.
- Щелкните меню кебаб в верхней части и выберите Удалить.
Кроме того, можно удалить конечную точку обслуживания программным способом с помощью REST API или пакета SDK для развертываний MLflow.
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")
Отладка конечной точки обслуживания модели
Для отладки любых проблем с конечной точкой можно получить следующее:
- Журналы сборки контейнера модельного сервера
- Журналы сервера модели
Эти журналы также доступны из интерфейса Конечные точки на вкладке «Журналы».
Для журналов сборки для обслуживаемой модели можно использовать следующий запрос. Для получения дополнительной информации см. руководство по отладке использования моделей.
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 permissions get servingendpoints <endpoint-id>
Предоставьте пользователю [email protected]
разрешение CAN QUERY на конечной точке обслуживания.
databricks permissions update servingendpoints <endpoint-id> --json '{
"access_control_list": [
{
"user_name": "[email protected]",
"permission_level": "CAN_QUERY"
}
]
}'
Вы также можете изменить разрешения для конечной точки обслуживания с помощью API разрешений.
Добавьте бессерверную политику бюджета для конечной точки развертывания модели
Внимание
Эта функция доступна в общедоступной предварительной версии и недоступна для конечных точек, которые обслуживают внешние модели.
Бессерверные бюджетные политики позволяют организации применять пользовательские теги к бессерверному использованию для более детализированного выставления счетов. Если в рабочей области применяются бессерверные бюджетные политики для учета бессерверного использования, можно добавить такую политику в конечные точки эксплуатации модели. См. применение атрибутов с бессерверными политиками бюджетирования.
Во время создания конечной точки обслуживания модели можно выбрать бессерверную политику бюджета конечной точки в меню "Политика бюджета " в пользовательском интерфейсе обслуживания. Если вам назначена бессерверная политика бюджета, все создаваемые конечные точки назначаются бессерверной бюджетной политике, даже если вы не выбираете политику в меню "Бюджет".
Если у вас есть MANAGE
разрешения для существующей конечной точки, вы можете изменить и добавить бессерверную политику бюджета в эту конечную точку на странице сведений о конечной точке в пользовательском интерфейсе.
Заметка
Если вам назначили политику бессерверного бюджета, ваши существующие конечные точки не будут автоматически помечены этой политикой. Если вы хотите подключить к ним бессерверную политику бюджета, необходимо вручную обновить существующие конечные точки.
Получите схему сервисной конечной точки модели
Внимание
Поддержка схем запросов конечных точек доступна в общедоступной предварительной версии. Эта функция доступна в регионах обслуживания моделей.
Схема запроса конечной точки обслуживания — это формальное описание конечной точки обслуживания с помощью стандартной спецификации OpenAPI в формате JSON. Он содержит сведения о конечной точке, включая путь к конечной точке, сведения о запросе конечной точки, например формате текста запроса и ответа, а также типе данных для каждого поля. Эта информация может быть полезной для сценариев воспроизведения или при необходимости информации о конечной точке, но вы не являетесь создателем исходной конечной точки или владельцем.
Чтобы получить схему конечной точки обслуживания модели, обслуживаемая модель должна иметь сигнатуру модели, зарегистрированную в журнале, и конечная точка должна находиться в состоянии READY
.
В следующих примерах показано, как программно получить схему конечной точки обслуживания модели с помощью REST API. Сведения о схемах конечных точек обслуживания функций см. в разделе "Что такое Служба компонентов Databricks?".
Схема, возвращаемая 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
, info
servers
и 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"
}
}
}
}
}
}
}
}
}
}
}
}