Магазин функций - это набор упорядоченных и тщательно отобранных функций, используемых для обучения и обслуживания моделей машинного обучения. Поддержание их в актуальном состоянии, обслуживание векторов признаков и создание наборов обучающих данных требует сочетания транзакционной (OLTP) и аналитической (OLAP) обработки базы данных. Такая база данных со смешанной рабочей нагрузкой называется HTAP для гибридной аналитической обработки транзакций.

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

Хранилище функций в производственной среде, которое поддерживает значения функций в актуальном состоянии, позволяет быстро переносить модели машинного обучения в производство. Как правило, функции группируются на основе общего контекста (т. Е. Клиента, продукта, местоположения) и периодичности передачи данных. Конвейеры данных, которые снабжают каждую группу соответствующей частотой, поддерживают актуальность функций. Благодаря тому, что курируемые функции легко доступны, многие механизмы вывода могут получить к ним доступ без каких-либо дополнительных усилий.

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

Обработка пакетных данных выполняется периодически (обычно один раз в день или еженедельно). Они обрабатывают большие объемы исходных данных путем извлечения, загрузки, очистки, агрегирования и иного преобразования данных в полезные функции. Построение профилей клиентов RFM - типичный пример этого. Активность клиентов используется для расчета недавних, частотных и денежных показателей по нескольким категориям и нескольким движущимся временным окнам, которые могут включать последние 24 часа, последнюю неделю, последний месяц и прошлый год. Преобразование этих данных для большого количества клиентов и транзакций обычно требует параллельной обработки, которая может масштабироваться по мере того, как рост бизнеса приводит к увеличению объемов данных.

Наборы обучающих данных создаются путем сканирования и объединения больших наборов данных с историей интересующих функций и событий. Объединения охватывают несколько различных групп функций и точно связывают каждый обучающий пример со значениями функций, которые соответствуют времени каждого события. Это создает сложные условия соединения, которые лучше всего подходят для обработки MPP / OLAP.

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

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

Немногие базы данных поддерживают оба вида рабочих нагрузок, а также обеспечивают горизонтальную масштабируемость. Масштабируемые базы данных HTAP потребуются, поскольку магазины функций станут стандартными шаблонами реализации на платформах машинного обучения с решениями в реальном времени. Итак, рекламный ролик: Splice Machine - это такой механизм базы данных, который предоставляет ACID-совместимые механизмы OLTP и OLAP, которые могут масштабироваться независимо. Магазин функций Splice Machine и его развертывание модели в базе данных обеспечивают идеальную комбинацию для предоставления как в реальном времени, так и пакетного вывода непосредственно в магазине функций.