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


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

На этой странице объясняется, как работает Хранилище компонентов 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 с первичным ключом в качестве таблицы признаков. См. статью Работа с таблицами функций в каталоге Unity. Таблицы компонентов, хранящиеся в локальном хранилище компонентов рабочей области, называются таблицами компонентов рабочей области. См. статью Работа с таблицами компонентов в хранилище компонентов рабочей области (устаревшая версия).

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

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

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. Ознакомьтесь с конечными точками обслуживания компонентов или развертыванием непосредственно с помощью пользовательского интерфейса обслуживания модели. Для высокопроизводительных приложений включите оптимизацию маршрутов.
  • Использование в обучении модели путем ссылки на in FeatureSpeccreate_training_set.

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

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

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

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

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

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

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

Автономное хранилище признаков используется для обнаружения признаков, обучения модели и пакетного вывода. Он содержит таблицы признаков, материализованные как 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 (для хранилища компонентов рабочей области).