TL; DR; Магазины функций стали ключевой частью инфраструктуры данных для платформ машинного обучения. Они управляют всем жизненным циклом функций: от обучения различных моделей до предоставления онлайн-приложений доступа к функциям с малой задержкой для вывода моделей. В этой статье рассказывается о магазине функций Hopsworks для Databricks и о том, как он может ускорить и управлять разработкой вашей модели и операциями на Databricks.

Что такое магазин функций?

Хранилище функций для машинного обучения - это служба вычисления и хранения функций, которая позволяет регистрировать, обнаруживать и использовать функции как в составе конвейеров машинного обучения, так и в онлайн-приложениях для вывода моделей. Хранилища функций обычно требуются как для хранения больших объемов данных функций, так и для обеспечения доступа к функциям с низкой задержкой для онлайн-приложений. Таким образом, они обычно реализуются как система с двумя базами данных: онлайн-хранилище функций с малой задержкой (обычно хранилище значений ключей или база данных в реальном времени) и масштабируемая база данных SQL для хранения больших объемов данных функций для обучения и пакетные приложения. Интернет-магазин функций позволяет онлайн-приложениям дополнять векторы функций данными функций почти в реальном времени перед выполнением запросов на вывод. Автономное хранилище функций может хранить большие объемы данных функций, которые используются для создания обучающих / тестовых данных для разработки модели или пакетными приложениями для оценки модели. Магазин функций решает следующие проблемы в конвейерах машинного обучения:

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

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

Функции инженера в Databricks, опубликуйте в магазине функций

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

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

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

На практике конвейеры функций - это конвейеры данных, в которых на выходе очищаются, проверяются данные с характеристиками. Поскольку обычно нет никаких гарантий относительно правильности входящих данных, входные данные должны быть проверены, а любые пропущенные значения должны обрабатываться (часто путем их вменения или игнорирования). Одной из популярных платформ для проверки данных с помощью Spark является AWS Deequ, поскольку они позволяют расширить традиционную поддержку на основе схемы для проверки данных (например, этот столбец должен содержать целые числа) с помощью правил проверки данных для числовых или категориальных значений. Например, хотя схема гарантирует, что числовой признак имеет тип float, необходимы дополнительные правила проверки, чтобы гарантировать, что эти числа с плавающей точкой находятся в ожидаемом диапазоне. Вы также можете проверить, являются ли значения столбцов уникальными, а не нулевыми, что его описательная статистика находится в определенных диапазонах. Проверенные данные затем преобразуются в числовые и категориальные функции, которые затем кэшируются в хранилище функций и впоследствии используются как для обучения моделей, так и для пакетного / онлайн-вывода моделей.

import hsfs
# “prod” is the production feature store
conn = hsfs.connection(host=”ea2.aws.hopsworks.ai”, project=”prod”)
featurestore = conn.get_feature_store()
# read raw data and use Spark to engineer features 
raw_data_df = spark.read.parquet(‘/parquet_partitioned’)
polynomial_features = raw_data_df.map(lambda x: x²)
# Features computed together in a DataFrames are in the same feature group 
fg = featurestore.create_feature_group(name=’fg_revenue’,
 version=1, 
 type=’offline’)
fg.create(polynomial_features)
g.compute_statistics()

В этом фрагменте кода мы подключаемся к Hopsworks Feature Store, считываем необработанные данные в DataFrame из файла parquet и преобразуем данные в полиномиальные функции. Затем мы создаем группу функций, ее версия - «1», и она должна храниться только в «автономном» магазине функций. Наконец, мы добавляем наш новый polynomial_dataframe в группу функций и вычисляем статистику по группе функций, которая также хранится в магазине функций Hopsworks. Обратите внимание, что Pandas DataFrames поддерживаются так же, как Spark DataFrames, и существуют как Python, так и Scala / Java API.

Когда доступно хранилище функций, выходными данными конвейеров функций являются кэшированные данные функций, которые хранятся в хранилище функций. В идеале целевой приемник данных должен поддерживать версионные данные, например, в Apache Hudi в Hopsworks Feature Store. В Hopsworks конвейеры функций вставляют (вставляют или обновляют) данные в существующие группы функций, где группа функций представляет собой набор функций, вычисляемых вместе (обычно потому, что они происходят из одной и той же серверной системы и связаны некоторой сущностью или ключом). Каждый раз, когда конвейер функций запускается для группы функций, он создает новую фиксацию в наборе данных приемника Hudi. Таким образом, мы можем отслеживать и запрашивать различные коммиты для групп функций в магазине функций, а также отслеживать изменения статистики полученных данных с течением времени.

Вы можете найти пример блокнота для разработки функций с помощью PySpark в Databricks и регистрации функций с помощью Hopsworks здесь.

Конвейеры обучения модели в Databricks начинаются в магазине функций

Конвейеры обучения моделей в Databricks могут считывать данные обучения / тестирования либо непосредственно как фреймы данных Spark из Hopsworks Feature Store, либо как файлы обучения / тестирования в S3 (в формате файла, таком как .tfrecords, .npy, .csv или .petastorm). Ноутбуки / рабочие места в Databricks могут использовать Hopsworks Feature Store для объединения функций вместе для создания таких наборов данных для обучения / тестирования на S3.

Обучение модели с помощью магазина функций обычно включает как минимум три этапа:

  1. выберите объекты из групп объектов и объедините их вместе, чтобы создать набор данных для обучения / тестирования. Вы также можете здесь отфильтровать данные и включить дополнительную метку времени, чтобы получить функции точно такими, какими они были в определенный момент времени в прошлом;
  2. обучить модель, используя набор обучающих данных, созданный на шаге 1 (обучение может быть далее разложено на следующие шаги: оптимизация гиперпараметров, исследование абляции и обучение модели);
  3. проверить модель с помощью автоматических тестов и развернуть ее в реестре моделей для пакетных приложений и / или на сервере онлайн-моделей для онлайн-приложений.
import hsfs
conn = hsfs.connection(host=”ea2.aws.hopsworks.ai”, project=”prod”)
featurestore = conn.get_feature_store()
# get feature groups from which you want to create a training dataset 
fg1 = featurestore.get_feature_group(‘fg_revenue’, version=1)
fg2 = featurestore.get_feature_group(‘fg_users’, version=2)
# lazily join features 
joined_features = fg1.select_all() \
 .join(fg2.select([‘user_id’, ‘age’]), on=’user_id’)
sink = featurestore.get_storage_connector(‘S3-training-dataset-bucket’)
td = featurestore.create_training_dataset(name=’revenue_prediction’,
 version=1,
 data_format=’tfrecords’,
 storage_connector=sink,
 split={‘train’: 0.8, ‘test’: 0.2})
td.seed = 1234
td.create(joined_features)

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

Вы можете найти пример записной книжки для начала создания наборов данных для поездов / тестов из Hopsworks в Databricks здесь.

Развертывание магазина функций Hopsworks для Databricks

Магазин функций Hopsworks доступен как управляемая платформа для AWS (Hopsworks.ai) и как корпоративная платформа для Azure.

Hopsworks.ai для AWS

Hopsworks.ai - это наша новая управляемая платформа для магазина функций Hopsworks на AWS. В своей текущей версии он развернет Hopsworks Feature Store в вашей учетной записи AWS. На сайте Hopsworks.ai вы можете остановить / запустить / создать резервную копию магазина функций Hopsworks.

‍ Подробные сведения о том, как запустить магазин функций Hopsworks внутри существующей VPC / подсети, используемой Databricks можно найти в нашей документации. На следующих рисунках с сайта Hopsworks.ai показано, как выбрать тот же регион / VPC / зону, которые используются в кластере Databricks при запуске Hopsworks.

Вам также необходимо предоставить сервис Feature Store для использования Databricks, см. Рисунок ниже.

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

Enterprise Hopsworks для Databricks Azure

В Azure по умолчанию Databricks развертывается в заблокированной группе ресурсов со всеми ресурсами плоскости данных, включая виртуальную сеть (VNet), с которой будут связаны все кластеры. Однако с помощью внедрения в виртуальную сеть вы можете развернуть Azure Databricks в той же виртуальной сети, где развернуто хранилище компонентов Hopsworks. Свяжитесь с нами, чтобы получить дополнительные сведения о том, как установить и настроить внедрение виртуальной сети для Azure с помощью Hopsworks Feature Store. Альтернативой внедрению в виртуальную сеть является VPC, и вы можете связаться с нами для получения помощи в пиринге VPC.

Резюме

Для пользователей Databricks появилась новая ключевая часть инфраструктуры машинного обучения - Hopsworks Feature Store. Он позволяет централизовать ваши функции для машинного обучения для более легкого обнаружения и управления, он позволяет повторно использовать функции в различных проектах машинного обучения и предоставляет единый конвейер или инженерные функции как для обучения, так и для вывода. Магазин функций Hopsworks доступен сегодня либо как управляемая платформа, либо как AWS, поэтому вы можете развернуть кластер всего за несколько минут, или как корпоративную платформу для AWS или Azure.

Выучить больше

использованная литература

"Следуйте за нами на Twitter"

Пометьте нас на Github