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


Совместное использование таблиц функций между рабочими областями (устаревшая версия)

Внимание

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

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

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

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

Несколько рабочих областей хранилища признаков

Доступом к централизованному хранилищу признаков управляют токены (маркеры). Каждый пользователь или скрипт, которым требуется доступ , создает личный маркер доступа в централизованном хранилище компонентов и копирует этот маркер в диспетчер секретов своей локальной рабочей области. Каждый запрос API, отправляемый в централизованное хранилище признаков, должен содержать маркер доступа. Клиент хранилища признаков поддерживает простой механизм для передачи секретов, которые будут использоваться при выполнении операций в нескольких рабочих областях.

Примечание.

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

Требования

Для использования хранилища признаков в рабочих областях требуется:

Настройте маркер API для удаленного реестра

В этом разделе "Рабочая область B" относится к рабочей области централизованного или удаленного хранилища компонентов.

  1. В рабочей области B создайте маркер доступа.
  2. В локальной рабочей области создайте секреты для хранения маркера доступа и сведений о рабочей области B:
    1. Создайте область секрета: databricks secrets create-scope --scope <scope>.
    2. Выберите уникальный идентификатор для рабочей области B, как показано здесь <prefix>. Затем создайте три секрета с указанными именами ключей:
      • databricks secrets put --scope <scope> --key <prefix>-host: введите имя узла рабочей области B. Используйте следующие команды Python, чтобы получить имя узла рабочей области:

        import mlflow
        
        host_url = mlflow.utils.databricks_utils.get_webapp_url()
        host_url
        
      • databricks secrets put --scope <scope> --key <prefix>-token: введите маркер доступа из рабочей области B.

      • databricks secrets put --scope <scope> --key <prefix>-workspace-id: введите идентификатор рабочей области хранилища признаков, который можно найти в URL-адресе любой страницы.

Указание удаленного хранилища признаков

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

feature_store_uri = f'databricks://<scope>:<prefix>'

Затем укажите URI явным образом при создании экземпляра FeatureStoreClient:

fs = FeatureStoreClient(feature_store_uri=feature_store_uri)

Создание базы данных для таблиц признаков в общем расположении DBFS

Перед созданием таблиц признаков в удаленном хранилище признаков необходимо создать базу данных для их хранения. База данных должна находиться в общем расположении DBFS.

Например, чтобы создать базу данных recommender в общем расположении /mnt/shared, используйте следующую команду:

%sql CREATE DATABASE IF NOT EXISTS recommender LOCATION '/mnt/shared'

Создание таблицы признаков в удаленном хранилище признаков

Подходящий API для создания таблицы признаков в удаленном хранилище признаков зависит от версии среды выполнения Databricks.

Версия 0.3.6 и выше

Используйте API FeatureStoreClient.create_table:

fs = FeatureStoreClient(feature_store_uri=f'databricks://<scope>:<prefix>')
fs.create_table(
  name='recommender.customer_features',
  primary_keys='customer_id',
  schema=customer_features_df.schema,
  description='Customer-keyed features'
)

Версия 0.3.5 и выше

Используйте API FeatureStoreClient.create_feature_table:

fs = FeatureStoreClient(feature_store_uri=f'databricks://<scope>:<prefix>')
fs.create_feature_table(
  name='recommender.customer_features',
  keys='customer_id',
  schema=customer_features_df.schema,
  description='Customer-keyed features'
)

Примеры других методов Хранилища компонентов см . в примере записной книжки: совместное использование таблиц функций в рабочих областях.

Использование таблицы признаков из удаленного хранилища признаков

Чтобы прочитать таблицу признаков в удаленном хранилище признаков с помощью метода FeatureStoreClient.read_table, сначала установите feature_store_uri:

fs = FeatureStoreClient(feature_store_uri=f'databricks://<scope>:<prefix>')
customer_features_df = fs.read_table(
  name='recommender.customer_features',
)

Также поддерживаются и другие вспомогательные методы доступа к таблице признаков:

fs.read_table()
fs.get_feature_table() # in v0.3.5 and below
fs.get_table() # in v0.3.6 and above
fs.write_table()
fs.publish_table()
fs.create_training_set()

Использование удаленного реестра моделей

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

Чтобы указать удаленный реестр моделей для ведения журнала или оценки модели, можно с помощью URI реестра моделей создать экземпляр FeatureStoreClient.

fs = FeatureStoreClient(model_registry_uri=f'databricks://<scope>:<prefix>')
customer_features_df = fs.log_model(
    model,
    "recommendation_model",
    flavor=mlflow.sklearn,
    training_set=training_set,
    registered_model_name="recommendation_model"
)

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

fs = FeatureStoreClient(
    feature_store_uri=f'databricks://<scope>:<prefix>',
    model_registry_uri=f'databricks://<scope>:<prefix>'
)

Пример записной книжки: предоставление общего доступа к таблицам компонентов в рабочих областях

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

Пример записной книжки централизованного хранилища признаков

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