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


Что такое Служба функций Databricks?

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

При использовании службы модели ИИ Для обработки модели Мозаики, созданной с помощью функций Databricks, модель автоматически ищет и преобразует функции для запросов вывода. С помощью Службы функций Databricks можно обслуживать структурированные данные для приложений расширенного создания (RAG), а также функции, необходимые для других приложений, таких как модели, обслуживаемые за пределами Databricks или любого другого приложения, для которых требуются функции на основе данных в каталоге Unity.

когда следует использовать обслуживание компонентов

Зачем использовать обслуживание компонентов?

Служба функций Databricks предоставляет единый интерфейс, который служит предварительно материализованным и по запросу функциями. Он также включает следующие преимущества:

  • Простота. Databricks обрабатывает инфраструктуру. При одном вызове API Databricks создает рабочую среду обслуживания.
  • Высокий уровень доступности и масштабируемость. Конечные точки обслуживания функций автоматически масштабируется вверх и вниз, чтобы настроить объем обслуживаемых запросов.
  • Безопасность. Конечные точки развертываются в защищенной сетевой границе и используют выделенные вычислительные ресурсы, завершающиеся при удалении или масштабировании конечной точки до нуля.

Требования

  • Databricks Runtime 14.2 ML или более поздней версии.
  • Для использования API Python для обслуживания компонентов требуется databricks-feature-engineering версия 0.1.2 или более поздней версии, встроенная в Databricks Runtime 14.2 ML. Для более ранних версий Машинного обучения среды выполнения Databricks вручную установите требуемую версию.%pip install databricks-feature-engineering>=0.1.2 Если вы используете записную книжку Databricks, необходимо перезапустить ядро Python, выполнив следующую команду в новой ячейке: dbutils.library.restartPython()
  • Чтобы использовать пакет SDK Databricks, для обслуживания компонентов требуется databricks-sdk версия 0.18.0 или более поздней. Чтобы вручную установить требуемую версию, используйте %pip install databricks-sdk>=0.18.0. Если вы используете записную книжку Databricks, необходимо перезапустить ядро Python, выполнив следующую команду в новой ячейке: dbutils.library.restartPython()

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

  • Пользовательский интерфейс Databricks
  • REST API
  • API Python
  • Databricks SDK

Чтобы использовать rest API или пакет SDK для развертываний MLflow, необходимо иметь маркер API Databricks.

Внимание

В качестве рекомендации по обеспечению безопасности для рабочих сценариев Databricks рекомендует использовать маркеры OAuth на компьютере для проверки подлинности во время рабочей среды.

Для тестирования и разработки Databricks рекомендует использовать личный маркер доступа, принадлежащий субъектам-службам , а не пользователям рабочей области. Сведения о создании маркеров для субъектов-служб см. в разделе "Управление маркерами" для субъекта-службы.

Проверка подлинности для обслуживания компонентов

Сведения о проверке подлинности см. в разделе "Проверка подлинности" к ресурсам Azure Databricks.

Создание класса FeatureSpec

A FeatureSpec — это определяемый пользователем набор функций и функций. Функции и функции можно объединить в FeatureSpec. FeatureSpecs хранятся и управляются каталогом Unity и отображаются в обозревателе каталогов.

Таблицы, указанные в ней FeatureSpec , должны быть опубликованы в онлайн-таблице или стороннем интернет-магазине. См. статью "Использование онлайн-таблиц" для обслуживания функций в режиме реального времени или сторонних интернет-магазинов.

Для создания FeatureSpecпакета необходимо использовать databricks-feature-engineering пакет.

from databricks.feature_engineering import (
  FeatureFunction,
  FeatureLookup,
  FeatureEngineeringClient,
)

fe = FeatureEngineeringClient()

features = [
  # Lookup column `average_yearly_spend` and `country` from a table in UC by the input `user_id`.
  FeatureLookup(
    table_name="main.default.customer_profile",
    lookup_key="user_id",
    feature_names=["average_yearly_spend", "country"]
  ),
  # Calculate a new feature called `spending_gap` - the difference between `ytd_spend` and `average_yearly_spend`.
  FeatureFunction(
    udf_name="main.default.difference",
    output_name="spending_gap",
    # Bind the function parameter with input from other features or from request.
    # The function calculates a - b.
    input_bindings={"a": "ytd_spend", "b": "average_yearly_spend"},
  ),
]

# Create a `FeatureSpec` with the features defined above.
# The `FeatureSpec` can be accessed in Unity Catalog as a function.
fe.create_feature_spec(
  name="main.default.customer_features",
  features=features,
)

Создание конечной точки

Определяет FeatureSpec конечную точку. Дополнительные сведения см. в статье "Создание конечных точек обслуживания пользовательских моделей", документации по API Python или документации по пакету SDK Databricks.

Примечание.

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

REST API

curl -X POST -u token:$DATABRICKS_API_TOKEN ${WORKSPACE_URL}/api/2.0/serving-endpoints \
    -H 'Content-Type: application/json' \
    -d '"name": "customer-features",
   "config": {
       "served_entities": [
           {
               "entity_name": "main.default.customer_features",
               "workload_size": "Small",
               "scale_to_zero_enabled": true
           }
       ]
   }'

Пакет SDK Databricks — Python

from databricks.sdk import WorkspaceClient
from databricks.sdk.service.serving import EndpointCoreConfigInput, ServedEntityInput

workspace = WorkspaceClient()

# Create endpoint
workspace.serving_endpoints.create(
  name="my-serving-endpoint",
  config = EndpointCoreConfigInput(
    served_entities=[
    ServedEntityInput(
        entity_name="main.default.customer_features",
        scale_to_zero_enabled=True,
        workload_size="Small"
      )
    ]
  )
)

API Python

from databricks.feature_engineering.entities.feature_serving_endpoint import (
  ServedEntity,
  EndpointCoreConfig,
)

fe.create_feature_serving_endpoint(
  name="customer-features",
    config=EndpointCoreConfig(
    served_entities=ServedEntity(
      feature_spec_name="main.default.customer_features",
             workload_size="Small",
             scale_to_zero_enabled=True,
             instance_profile_arn=None,
    )
  )
)

Чтобы просмотреть конечную точку, щелкните "Обслуживание " в левой боковой панели пользовательского интерфейса Databricks. Когда состояние готово, конечная точка готова реагировать на запросы. Дополнительные сведения о службе модели ИИ мозаики см. в статье "Мозаичная модель ИИ"

Получение конечной точки

Пакет SDK Databricks или API Python можно использовать для получения метаданных и состояния конечной точки.

Пакет SDK Databricks — Python

endpoint = workspace.serving_endpoints.get(name="customer-features")
# print(endpoint)

API Python

endpoint = fe.get_feature_serving_endpoint(name="customer-features")
# print(endpoint)

Получение схемы конечной точки

С помощью REST API можно получить схему конечной точки. Дополнительные сведения о схеме конечной точки см. в разделе "Получение схемы службы модели" конечной точки.

ACCESS_TOKEN=<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"

Запрос конечной точки

Для запроса конечной точки можно использовать REST API, пакет SDK для развертываний MLflow или пользовательский интерфейс обслуживания.

В следующем коде показано, как настроить учетные данные и создать клиент при использовании пакета SDK для развертываний MLflow.

  # Set up credentials
  export DATABRICKS_HOST=...
  export DATABRICKS_TOKEN=...
  # Set up the client
  import mlflow.deployments

  client = mlflow.deployments.get_deploy_client("databricks")

Примечание.

В качестве рекомендации по обеспечению безопасности при проверке подлинности с помощью автоматизированных средств, систем, сценариев и приложений Databricks рекомендуется использовать личные маркеры доступа, принадлежащие субъектам-службам, а не пользователям рабочей области. Сведения о создании маркеров для субъектов-служб см. в разделе "Управление маркерами" для субъекта-службы.

Запрос конечной точки с помощью API

В этом разделе приведены примеры запроса конечной точки с помощью REST API или пакета SDK для развертываний MLflow.

REST API

curl -X POST -u token:$DATABRICKS_API_TOKEN $ENDPOINT_INVOCATION_URL \
  -H 'Content-Type: application/json' \
  -d '{"dataframe_records": [
          {"user_id": 1, "ytd_spend": 598},
          {"user_id": 2, "ytd_spend": 280}
      ]}'

Пакет SDK для развертываний MLflow

Внимание

В следующем примере используется predict() API из пакета SDK для развертываний MLflow. Этот API является экспериментальным, а определение API может измениться.

import mlflow.deployments

client = mlflow.deployments.get_deploy_client("databricks")
response = client.predict(
    endpoint="test-feature-endpoint",
    inputs={
        "dataframe_records": [
            {"user_id": 1, "ytd_spend": 598},
            {"user_id": 2, "ytd_spend": 280},
        ]
    },
)

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

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

  1. В левой боковой панели рабочей области Azure Databricks щелкните "Обслуживание".

  2. Щелкните конечную точку, которую вы хотите запросить.

  3. В правом верхнем углу экрана щелкните конечную точку запроса.

    Кнопка конечной точки запроса

  4. В поле "Запрос" введите текст запроса в формате JSON.

  5. Щелкните Отправить запрос.

// Example of a request body.
{
  "dataframe_records": [
    {"user_id": 1, "ytd_spend": 598},
    {"user_id": 2, "ytd_spend": 280}
  ]
}

Диалоговое окно конечной точки запроса содержит созданный пример кода в curl, Python и SQL. Щелкните вкладки, чтобы просмотреть и скопировать пример кода.

Диалоговое окно конечной точки запроса

Чтобы скопировать код, щелкните значок копирования в правом верхнем углу текстового поля.

Кнопка копирования в диалоговом окне конечной точки запроса

Обновление конечной точки

Конечную точку можно обновить с помощью REST API, пакета SDK Databricks или пользовательского интерфейса обслуживания.

Обновление конечной точки с помощью API

REST API

curl -X PUT -u token:$DATABRICKS_API_TOKEN ${WORKSPACE_URL}/api/2.0/serving-endpoints/<endpoint_name>/config \
  -H 'Content-Type: application/json' \
  -d '"served_entities": [
        {
            "name": "customer-features",
            "entity_name": "main.default.customer_features_new",
            "workload_size": "Small",
            "scale_to_zero_enabled": True
        }
    ]'

Пакет SDK Databricks — Python

workspace.serving_endpoints.update_config(
  name="my-serving-endpoint",
  served_entities=[
    ServedEntityInput(
      entity_name="main.default.customer_features",
      scale_to_zero_enabled=True,
      workload_size="Small"
    )
  ]
)

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

Выполните следующие действия, чтобы использовать пользовательский интерфейс обслуживания:

  1. В левой боковой панели рабочей области Azure Databricks щелкните "Обслуживание".
  2. В таблице щелкните имя конечной точки, которую нужно обновить. Откроется экран конечной точки.
  3. В правом верхнем углу экрана нажмите кнопку "Изменить конечную точку".
  4. В диалоговом окне "Изменение обслуживания конечной точки" измените параметры конечной точки по мере необходимости.
  5. Нажмите кнопку "Обновить", чтобы сохранить изменения.

обновление конечной точки

Удаление конечной точки

Предупреждение

Это действие необратимо.

Конечную точку можно удалить с помощью REST API, пакета SDK Databricks, API Python или пользовательского интерфейса обслуживания.

Удаление конечной точки с помощью API

REST API

curl -X DELETE -u token:$DATABRICKS_API_TOKEN ${WORKSPACE_URL}/api/2.0/serving-endpoints/<endpoint_name>

Пакет SDK Databricks — Python

workspace.serving_endpoints.delete(name="customer-features")

API Python

fe.delete_feature_serving_endpoint(name="customer-features")

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

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

  1. В левой боковой панели рабочей области Azure Databricks щелкните "Обслуживание".
  2. В таблице щелкните имя конечной точки, которую вы хотите удалить. Откроется экран конечной точки.
  3. В правом верхнем углу экрана щелкните меню Меню Кебаб кебаб и выберите "Удалить".

Удаление конечной точки

Мониторинг работоспособности конечной точки

Сведения о журналах и метриках, доступных для конечных точек обслуживания компонентов, см. в разделе "Мониторинг качества модели" и работоспособности конечных точек.

Управление доступом

Сведения о разрешениях для конечных точек обслуживания компонентов см. в разделе "Управление разрешениями" в конечной точке обслуживания модели.

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

Эта записная книжка иллюстрирует использование пакета SDK Databricks для создания конечной точки обслуживания компонентов с помощью таблиц Databricks Online.

Примеры записной книжки компонента с онлайн-таблицами

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