Обзор и глоссарий магазина функций

На этой странице объясняется, как работает Хранилище компонентов Databricks и определяет важные термины.

Как работает Хранилище компонентов Databricks?

Типичный рабочий процесс машинного обучения с помощью инженерии функций в Databricks следует этому пути:

  1. Напишите код для преобразования необработанных данных в функции и создайте кадр данных Spark, содержащий нужные функции.

  2. Создайте таблицу Delta в каталоге Unity с первичным ключом.

  3. Обучите модель и ведите её журнал, используя таблицу признаков. При этом модель сохраняет спецификации функций, используемых для обучения. Если модель используется для вывода, она автоматически присоединяет функции из соответствующих таблиц компонентов.

  4. Регистрация модели в реестре моделей.

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

  5. Для вариантов использования в режиме реального времени опубликуйте функции в интернет-хранилище функций.

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

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

Глоссарий магазина функций

Хранилище компонентов

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

  • В рабочих областях, активированных для каталога Unity, можно использовать любую таблицу Delta в каталоге Unity, которая включает ограничение первичного ключа в качестве таблицы признаков.
  • Рабочие области, которые были созданы до 19 августа 2024 года 16:00 (UTC) и не имеют включенной Unity Catalog, имеют доступ к устаревшему хранилищу компонентов Workspace Feature Store.

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

Разработка признаков является сложной и трудоемкой задачей. Дополнительное осложнение заключается в том, что для машинного обучения необходимо выполнить вычисления признаков для обучения модели, а затем снова, когда модель используется для прогнозирования. Эти реализации могут не выполняться одной командой или с помощью той же среды кода, что может привести к задержкам и ошибкам. Кроме того, разные команды в организации часто имеют аналогичные потребности в функциях, но могут не знать о работе других команд. Хранилище данных создано для решения этих проблем.

Таблицы характеристик

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

При использовании Databricks Runtime 13.3 LTS и более поздних версий, если рабочая область поддерживает Unity Catalog, можно использовать любую таблицу Delta в Unity Catalog с первичным ключом в качестве таблицы признаков. См. таблицы компонентов. Таблицы компонентов, хранящиеся в локальном хранилище компонентов рабочей области, называются таблицами компонентов рабочей области. См. статью Работа с таблицами компонентов в хранилище компонентов рабочей области (устаревшая версия).

Функции в таблице компонентов обычно вычисляются и обновляются с помощью общей вычислительной функции.

Вы можете опубликовать таблицу функций в интернет-магазине для вывода модели в режиме реального времени.

FeatureLookup

Множество различных моделей может использовать признаки из определенной таблицы признаков, и не всем моделям будут нужны все признаки. Чтобы обучить модель с помощью функций, создайте FeatureLookup для каждой таблицы компонентов. FeatureLookup указывает, какие функции следует использовать из таблицы, а также определяет ключи, используемые для объединения таблицы признаков с данными меток, передаваемыми в create_training_set.

На схеме показано, как FeatureLookup работает. В этом примере необходимо обучить модель с помощью функций из двух таблиц компонентов, customer_features и product_features. Вы создаете FeatureLookup для каждой таблицы признаков, указывая имя таблицы, признаки (столбцы), которые нужно выбрать из таблицы, и ключ поиска, используемый при объединении признаков для создания обучающего набора данных.

Затем вы вызываете create_training_set, как показано на схеме. Этот вызов API задает DataFrame, содержащий необработанные данные обучения (label_df), FeatureLookups для использования и label, столбец, содержащий истинные значения. Данные обучения должны содержать столбцы, соответствующие каждому из первичных ключей таблиц компонентов. Данные в таблицах признаков соединяются с входным кадром данных в соответствии с этими ключами. Результат показан на схеме как «набор данных для обучения».

Схема FeatureLookup

FeatureFunction

Функция может зависеть от информации, доступной только во время вывода. Можно указать FeatureFunction, который объединяет входные данные в режиме реального времени с актуальными значениями признаков для их вычисления. Пример показан на схеме. Дополнительные сведения см. в разделе вычислений функций по запросу.

Схема FeatureFunction

Тренировочный набор

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

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

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

FeatureSpec

Это FeatureSpec сущность каталога Unity, которая определяет многократно используемый набор признаков и функций для использования. FeatureSpecs объединяет FeatureLookups из таблиц компонентов и FeatureFunctions в одну логическую единицу, которая может использоваться в обучении модели или обслуживаться с помощью конечных точек обслуживания компонентов.

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

Вы можете использовать FeatureSpec следующим образом:

  • Создайте конечную точку обслуживания компонентов с помощью API Python или REST API. Ознакомьтесь с конечными точками развертывания функций или развертывайте непосредственно через интерфейс для развертывания модели. Для высокопроизводительных приложений включите оптимизацию маршрутов.
  • Используйте в обучении модели, ссылаясь на FeatureSpec в create_training_set.

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

Таблицы признаков временных рядов (поиск по временному срезу)

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

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

При создании таблицы признаков временных рядов указывайте столбцы, связанные с временем, в ваших первичных ключах как столбцы временных рядов, используя аргумент timeseries_columns (для создания признаков в Unity Catalog) или аргумент timestamp_keys (для Feature Store рабочей области). Это позволяет выполнять поиск на определенный момент времени при использовании create_training_set или score_batch. Система выполняет соединение с меткой времени as-of, используя указанный вами timestamp_lookup_key.

Если вы не используете аргумент timeseries_columns или аргумент timestamp_keys, и только назначаете столбец временных рядов в качестве столбца первичного ключа, Feature Store не применяет логику состояния на определенный момент времени к столбцу временных рядов во время соединений. Вместо этого он соответствует только тем строкам, в которых имеется точное совпадение времени, а не всем строкам до метки времени.

Оффлайн магазин

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

Интернет-магазин функций

Хранилище функций Databricks Online — это высокопроизводительное масштабируемое решение для обслуживания данных функций в онлайн-приложениях и моделях машинного обучения в режиме реального времени.

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

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

Стриминг

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

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

Упаковка модели

При обучении модели машинного обучения с помощью инженерии признаков в Unity Catalog или хранилище признаков рабочей области и регистрации ее с помощью метода клиента log_model(), модель сохраняет ссылки на эти признаки. Во время вывода модель имеет возможность автоматически получать значения признаков. Вызывающий объект должен предоставить только первичный ключ функций, используемых в модели (например, user_id), а модель получает все необходимые значения признаков.

В пакетной инференции значения признаков извлекаются из автономного хранилища и присоединяются к новым данным перед оценкой. В режиме реального времени значения признаков извлекаются из интернет-магазина.

Чтобы упаковать модель с метаданными компонентов, используйте FeatureEngineeringClient.log_model (для проектирования компонентов в каталоге Unity) или FeatureStoreClient.log_model (для хранилища компонентов рабочей области).