Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описывается создание конечных точек обслуживания моделей, которые служат пользовательским моделям с помощью Службы моделей Databricks.
Служба моделей предоставляет следующие параметры для создания конечной точки:
- Интерфейс предоставления услуг
- REST API
- Пакет SDK для развертываний MLflow
Сведения о создании конечных точек, обслуживающих созданные модели ИИ, см. в разделе Создание базовой модели обслуживания конечных точек.
Требования
- Рабочая область должна находиться в поддерживаемом регионе.
- Если вы используете пользовательские библиотеки или библиотеки с частного зеркального сервера вместе с моделью, см. Использование пользовательских библиотек Python с Model Serving перед созданием конечной точки модели.
- Для создания конечных точек с помощью пакета SDK для развертываний MLflow необходимо установить клиент развертывания MLflow. Чтобы установить его, выполните следующую команду:
import mlflow.deployments
client = mlflow.deployments.get_deploy_client("databricks")
Управление доступом
Сведения о параметрах управления доступом для конечных точек обслуживания моделей для управления конечными точками см. в статье "Управление разрешениями для конечной точки обслуживания модели".
Идентичность, под которой выполняется конечная точка обслуживания модели, привязана к первоначальному создателю конечной точки. После создания конечной точки связанный идентификатор нельзя изменить или обновить в конечной точке. Это удостоверение и связанные с ним разрешения используются для доступа к ресурсам каталога Unity для развертываний. Если идентификатор не имеет соответствующих разрешений для доступа к требуемым ресурсам каталога Unity, необходимо удалить конечную точку и повторно создать ее под пользователем или объектом-службы, который может получить доступ к этим ресурсам каталога Unity.
Можно также добавить переменные среды для хранения учетных данных для обслуживания модели. См. раздел "Настройка доступа к ресурсам из конечных точек обслуживания модели"
Создание конечной точки
Предоставление пользовательского интерфейса
Вы можете создать конечную точку для обслуживания модели с помощью интерфейса Serving.
Нажмите Сервис на боковой панели, чтобы отобразить интерфейс сервиса.
Нажмите кнопку "Создать конечную точку обслуживания".
Для моделей, зарегистрированных в реестре моделей рабочей области или моделях в каталоге Unity:
В поле "Имя" укажите имя конечной точки.
- Имена конечных точек не могут использовать
databricks-префикс. Этот префикс зарезервирован для предварительно настроенных конечных точек Databricks.
- Имена конечных точек не могут использовать
В разделе "Обслуживаемые сущности "
- Щелкните поле сущности , чтобы открыть форму выбора обслуживаемой сущности .
- Выберите "Мои модели " Каталог Unity " или " Мои модели- Реестр моделей" в зависимости от того, где зарегистрирована ваша модель. Форма обновляется динамически в зависимости от вашего выбора.
- Не все модели являются пользовательскими моделями. Модели могут быть базовыми моделями или функциями для обслуживания компонентов.
- Выберите модель и версию модели, которые вы хотите использовать для обслуживания.
- Выберите процент трафика для маршрутизации в обслуживаемую модель.
- Выберите используемый размер вычислительных ресурсов. Вы можете использовать вычислительные ресурсы ЦП или GPU для рабочих нагрузок. Дополнительные сведения о доступных вычислительных ресурсах GPU см. в разделе "Типы рабочих нагрузок GPU".
- В разделе Горизонтальное масштабированиевыберите размер вычислительного ресурса, который соответствует количеству запросов, которые данная обслуживаемая модель может обрабатывать одновременно. Это число должно быть примерно равно времени выполнения модели QPS x. Сведения о параметрах вычислений, определенных клиентом, см. в разделе об ограничениях обслуживания модели.
- Доступные размеры: небольшие для 0-4 запросов, средних 8-16 запросов и больших для 16-64 запросов.
- Укажите, следует ли масштабировать конечную точку до нуля, если она не используется. Масштабирование до нуля не рекомендуется для рабочих конечных точек, так как емкость не гарантируется при масштабировании до нуля. Когда конечная точка масштабируется до нуля, возникает дополнительная задержка, также называемая холодным запуском, когда конечная точка снова увеличивает масштаб для обслуживания запросов.
- В разделе "Расширенная конфигурация" можно:
- Переименуйте обслуживаемую сущность, чтобы настроить способ его отображения в конечной точке.
- Добавьте переменные среды для подключения к ресурсам из конечной точки или регистрируйте DataFrame сопоставления признаков в таблицу вывода инференции конечной точки. Для ведения журнала DataFrame функции поиска требуется MLflow 2.14.0 или более поздняя версия.
- (Необязательно) Чтобы добавить дополнительные обслуживаемые сущности в конечную точку, нажмите кнопку "Добавить обслуживаемую сущность " и повторите описанные выше действия по настройке. Можно обслуживать несколько моделей или версий моделей из одной конечной точки и управлять разделением трафика между ними. Дополнительные сведения см. в разделе "Обслуживание нескольких моделей ".
В разделе оптимизации маршрутов можно включить оптимизацию маршрутов для конечной точки. Оптимизация маршрутов рекомендуется для конечных точек с высокими требованиями к QPS и пропускной способности. См. статью "Оптимизация маршрутов" для конечных точек обслуживания.
В разделе шлюза искусственного интеллекта можно выбрать функции управления для включения в конечной точке. См. шлюз ИИ Unity.
Нажмите кнопку Создать. Появится страница конечных точек обслуживания, на которой состояние конечной точки обслуживания отображается как "Не готово".
REST API
Конечные точки можно создать с помощью REST API. Сведения о параметрах конфигурации конечной точки см. в POST /api/2.0/service-endpoints.
В следующем примере создается конечная точка, которая служит третьей версией модели my-ads-model, зарегистрированной в реестре моделей каталога Unity. Чтобы указать модель из каталога Unity, укажите полное имя модели, включая родительский каталог и схему, например catalog.schema.example-model. В этом примере используется настраиваемый параллелизм с использованием min_provisioned_concurrency и max_provisioned_concurrency. Значения параллелизма должны быть кратными 4.
POST /api/2.0/serving-endpoints
{
"name": "uc-model-endpoint",
"config":
{
"served_entities": [
{
"name": "ads-entity",
"entity_name": "catalog.schema.my-ads-model",
"entity_version": "3",
"min_provisioned_concurrency": 4,
"max_provisioned_concurrency": 12,
"scale_to_zero_enabled": false
}
]
}
}
Далее представлен пример ответа. Состояние конечной точки config_update — это NOT_UPDATING, и обслуживаемая модель READY находится в состоянии READY.
{
"name": "uc-model-endpoint",
"creator": "user@email.com",
"creation_timestamp": 1700089637000,
"last_updated_timestamp": 1700089760000,
"state": {
"ready": "READY",
"config_update": "NOT_UPDATING"
},
"config": {
"served_entities": [
{
"name": "ads-entity",
"entity_name": "catalog.schema.my-ads-model",
"entity_version": "3",
"min_provisioned_concurrency": 4,
"max_provisioned_concurrency": 12,
"scale_to_zero_enabled": false,
"workload_type": "CPU",
"state": {
"deployment": "DEPLOYMENT_READY",
"deployment_state_message": ""
},
"creator": "user@email.com",
"creation_timestamp": 1700089760000
}
],
"config_version": 1
},
"tags": [
{
"key": "team",
"value": "data science"
}
],
"id": "e3bd3e471d6045d6b75f384279e4b6ab",
"permission_level": "CAN_MANAGE",
"route_optimized": false
}
Пакет SDK для развертываний MLflow
MLflow Deployments предоставляет API для создания, обновления и удаления. API для этих задач принимают те же параметры, что и REST API для обслуживания конечных точек. Сведения о параметрах конфигурации конечной точки см. в POST /api/2.0/service-endpoints.
В следующем примере создается конечная точка, которая служит третьей версией модели my-ads-model, зарегистрированной в реестре моделей каталога Unity. Необходимо указать полное имя модели, включая родительский каталог и схему, например, catalog.schema.example-model. В этом примере используется настраиваемый параллелизм с использованием min_provisioned_concurrency и max_provisioned_concurrency. Значения параллелизма должны быть кратными 4.
import mlflow
from mlflow.deployments import get_deploy_client
mlflow.set_registry_uri("databricks-uc")
client = get_deploy_client("databricks")
endpoint = client.create_endpoint(
name="unity-catalog-model-endpoint",
config={
"served_entities": [
{
"name": "ads-entity",
"entity_name": "catalog.schema.my-ads-model",
"entity_version": "3",
"min_provisioned_concurrency": 4,
"max_provisioned_concurrency": 12,
"scale_to_zero_enabled": False
}
]
}
)
Клиент рабочего пространства
В следующем примере показано, как создать конечную точку с помощью пакета SDK клиента рабочей области Databricks.
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.serving import EndpointCoreConfigInput, ServedEntityInput
w = WorkspaceClient()
w.serving_endpoints.create(
name="uc-model-endpoint",
config=EndpointCoreConfigInput(
served_entities=[
ServedEntityInput(
name="ads-entity",
entity_name="catalog.schema.my-ads-model",
entity_version="3",
workload_size="Small",
scale_to_zero_enabled=False
)
]
)
)
Кроме того, вы можете сделать следующее:
- Включить таблицы вывода для автоматического записи входящих запросов и исходящих ответов на конечные точки обслуживания модели.
- Если у вас на конечной точке включены таблицы вывода, вы можете записать ваш DataFrame с подстановкой признаков в таблицу вывода.
Типы рабочих нагрузок GPU
Развертывание GPU совместимо со следующими версиями пакетов:
- PyTorch 1.13.0 - 2.0.1
- TensorFlow 2.5.0 - 2.13.0
- MLflow 2.4.0 и выше
В следующих примерах показано, как создавать конечные точки GPU с помощью различных методов.
Предоставление пользовательского интерфейса
Чтобы настроить конечную точку для рабочих нагрузок GPU с пользовательским интерфейсом обслуживания , выберите нужный тип GPU в раскрывающемся списке "Тип вычислений " при создании конечной точки. Выполните те же действия, как создать конечную точку, но выберите тип рабочей нагрузки GPU вместо ЦП.
REST API
Чтобы развернуть модели с помощью GPU, включите workload_type поле в конфигурацию конечной точки.
POST /api/2.0/serving-endpoints
{
"name": "gpu-model-endpoint",
"config": {
"served_entities": [{
"entity_name": "catalog.schema.my-gpu-model",
"entity_version": "1",
"workload_type": "GPU_SMALL",
"workload_size": "Small",
"scale_to_zero_enabled": false
}]
}
}
Пакет SDK для развертываний MLflow
В следующем примере показано, как создать конечную точку GPU с помощью пакета SDK для развертываний MLflow.
import mlflow
from mlflow.deployments import get_deploy_client
mlflow.set_registry_uri("databricks-uc")
client = get_deploy_client("databricks")
endpoint = client.create_endpoint(
name="gpu-model-endpoint",
config={
"served_entities": [{
"entity_name": "catalog.schema.my-gpu-model",
"entity_version": "1",
"workload_type": "GPU_SMALL",
"workload_size": "Small",
"scale_to_zero_enabled": False
}]
}
)
Клиент рабочего пространства
В следующем примере показано, как создать конечную точку GPU с помощью пакета SDK клиента рабочей области Databricks.
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.serving import EndpointCoreConfigInput, ServedEntityInput
w = WorkspaceClient()
w.serving_endpoints.create(
name="gpu-model-endpoint",
config=EndpointCoreConfigInput(
served_entities=[
ServedEntityInput(
entity_name="catalog.schema.my-gpu-model",
entity_version="1",
workload_type="GPU_SMALL",
workload_size="Small",
scale_to_zero_enabled=False
)
]
)
)
В следующей таблице перечислены поддерживаемые типы рабочих нагрузок GPU.
| Тип рабочей нагрузки GPU | Экземпляр GPU | Память GPU |
|---|---|---|
GPU_SMALL |
1xT4 | 16 ГБ |
GPU_LARGE |
1xA100 | 80ГБ |
GPU_LARGE_2 |
2xA100 | 160ГБ |
Изменение конечной точки пользовательской модели
После включения пользовательской конечной точки модели можно обновить конфигурацию вычислений по мере необходимости. Эта конфигурация особенно полезна, если требуются дополнительные ресурсы для модели. Размер рабочей нагрузки и конфигурация вычислений играют ключевую роль в выборе ресурсов, выделяемых для обслуживания модели.
Замечание
Конфигурация конечной точки может не обновиться из-за сбоя. При сбоях существующая активная конфигурация остается эффективной, как если бы обновление не произошло.
Убедитесь, что обновление успешно применено, просмотрив состояние конечной точки.
Пока новая конфигурация не будет готова, старая конфигурация будет обслуживать трафик прогнозирования. Пока выполняется обновление, еще одно обновление невозможно сделать. Однако вы можете отменить обновление в ходе выполнения из пользовательского интерфейса обслуживания.
Предоставление пользовательского интерфейса
После включения конечной точки модели выберите Изменить конфигурацию, чтобы изменить параметры вычислений для вашей конечной точки.
Можно изменить большинство аспектов конфигурации конечной точки, за исключением имени конечной точки и определенных неизменяемых свойств.
Вы можете отменить обновление конфигурации, находящееся в процессе, выбрав "Отменить обновление" на странице сведений о конечной точке.
REST API
Ниже приведен пример обновления конфигурации конечной точки с помощью REST API. См. PUT /api/2.0/serving-endpoints/{name}/config.
PUT /api/2.0/serving-endpoints/{name}/config
{
"name": "unity-catalog-model-endpoint",
"config":
{
"served_entities": [
{
"entity_name": "catalog.schema.my-ads-model",
"entity_version": "5",
"workload_size": "Small",
"scale_to_zero_enabled": true
}
],
"traffic_config":
{
"routes": [
{
"served_model_name": "my-ads-model-5",
"traffic_percentage": 100
}
]
}
}
}
Пакет SDK для развертываний MLflow
Пакет SDK для развертываний MLflow использует те же параметры, что и REST API, см. в разделе PUT /api/2.0/service-endpoints/{name}/config для сведений о схеме запроса и ответа.
В следующем примере кода используется модель из реестра моделей каталога Unity:
import mlflow
from mlflow.deployments import get_deploy_client
mlflow.set_registry_uri("databricks-uc")
client = get_deploy_client("databricks")
endpoint = client.create_endpoint(
name=f"{endpointname}",
config={
"served_entities": [
{
"entity_name": f"{catalog}.{schema}.{model_name}",
"entity_version": "1",
"workload_size": "Small",
"scale_to_zero_enabled": True
}
],
"traffic_config": {
"routes": [
{
"served_model_name": f"{model_name}-1",
"traffic_percentage": 100
}
]
}
}
)
Оценка конечной точки модели
Чтобы оценить модель, отправьте запросы в конечную точку обслуживания модели.
- См. сведения о конечных точках обслуживания запросов для пользовательских моделей.
- См. статью "Использование базовых моделей".
Дополнительные ресурсы
- Управление конечными точками обслуживания моделей.
- Внешние модели в системе обслуживания моделей.
- Если вы предпочитаете использовать Python, можно использовать Databricks SDK для обслуживания в реальном времени на Python.
Примеры записных книжек
Следующие записные книжки содержат различные зарегистрированные модели Databricks, которые можно использовать для начала работы с конечными точками обслуживания моделей. Дополнительные примеры см. в руководстве по . Развертывание и запрос пользовательской модели.
Примеры модели можно импортировать в рабочую область, следуя указаниям в разделе Импорт записной книжки. После выбора и создания модели из одного из примеров зарегистрируйте ее в каталоге Unity, а затем следуйте инструкциям рабочего процесса пользовательского интерфейса для обслуживания моделей.