С развитием ИИ и машинного обучения компании начинают использовать сложные конвейеры машинного обучения в различных приложениях, таких как системы рекомендаций, обнаружение мошенничества и многое другое. Эти сложные системы обычно требуют от сотен до тысяч функций для поддержки срочных бизнес-приложений, а конвейеры функций поддерживаются разными членами команды в разных бизнес-группах.
В этих системах машинного обучения мы видим множество проблем, которые потребляют много энергии инженеров по машинному обучению и специалистов по данным, в частности дублирование разработки функций, перекос онлайн-офлайн и обслуживание функций с низкой задержкой.
Разработка дублированных функций
В организации тысячи функций скрыты в разных скриптах и в разных форматах; они не захвачены, не организованы и не сохранены, и, следовательно, не могут быть повторно использованы и усилены другими командами, кроме тех, кто их создал.
Поскольку разработка функций так важна для моделей машинного обучения, а функции нельзя использовать совместно, специалисты по данным должны дублировать свои усилия по разработке функций в разных командах.
Перекос онлайн-офлайн
Что касается функций, автономное обучение и интерактивный вывод обычно требуют разных конвейеров обслуживания данных — обеспечение согласованности функций в разных средах обходится дорого.
Команды воздерживаются от использования данных в реальном времени для вывода из-за сложности предоставления правильных данных.
Предоставление удобного способа обеспечения правильности данных на определенный момент времени является ключом к предотвращению утечки этикеток.
Функции обслуживания с низкой задержкой
Для приложений реального времени поиск функций из базы данных для вывода в реальном времени без ущерба для задержки ответа и с высокой пропускной способностью может быть сложной задачей.
Легкий доступ к функциям с очень низкой задержкой является ключевым во многих сценариях машинного обучения, и необходимо выполнить оптимизацию, чтобы объединить различные вызовы API REST для функций.
Чтобы решить эти проблемы, была разработана концепция, называемая хранилищем функций , так что:
- Функции централизованы в организации и могут использоваться повторно
- Функции могут предоставляться синхронно между офлайн- и онлайн-средами.
- Функции могут предоставляться в режиме реального времени с малой задержкой.
- Представляем Feathr, проверенный в бою магазин функций
Разработка хранилища функций с нуля требует времени, и гораздо больше времени уходит на то, чтобы сделать его стабильным, масштабируемым и удобным для пользователя. Feathr — это хранилище функций, которое использовалось в производстве и тестировалось в LinkedIn более 6 лет, обслуживая всю платформу функций машинного обучения LinkedIn с тысячами функций в производстве.
В Microsoft команда LinkedIn и команда Azure тесно сотрудничали с Feathr с открытым исходным кодом, сделали его расширяемым и создали встроенную интеграцию с Azure. Он доступен в этом репозитории GitHub , и вы можете узнать больше о Feathr в инженерном блоге LinkedI.
Некоторые из основных моментов для Feather включают в себя:
- Масштабируемость со встроенными оптимизациями. Например, исходя из некоторых внутренних вариантов использования, Feathr может обрабатывать миллиарды строк и данные в масштабе PB с помощью встроенных оптимизаций, таких как фильтры Блума и объединения с солью.
- Широкая поддержка соединений и агрегаций на определенный момент времени Feathr имеет высокопроизводительные встроенные операторы, разработанные для Feature Store, включая агрегацию на основе времени, скользящие оконные соединения, функции поиска, все с точностью до момента времени.
- Широкие возможности настройки определяемых пользователем функций (UDF) с собственной поддержкой PySpark и Spark SQL для упрощения обучения специалистов по обработке и анализу данных.
- Pythonic API для доступа ко всему с низкой кривой обучения Интеграция с построением моделей, поэтому специалисты по данным могут работать продуктивно с первого дня.
- Богатая система типов, включая поддержку встраивания для расширенных сценариев машинного обучения/глубокого обучения. Одним из распространенных вариантов использования является создание вложений для профилей клиентов, и эти вложения можно повторно использовать в организации во всех приложениях машинного обучения.
- Нативная облачная интеграция с упрощенной и масштабируемой архитектурой, которая проиллюстрирована в следующем разделе.
- Совместное использование и повторное использование функций стало проще Feathr имеет встроенный реестр функций, поэтому функции можно легко использовать между разными командами и повышать производительность команды.
Инженер данных или машинного обучения создает функции, используя предпочитаемые ими инструменты (такие как pandas, Azure Machine Learning, Azure Databricks и другие).
Эти функции загружаются в офлайн-магазины, которые могут быть:
- База данных SQL Azure (в том числе бессерверная), выделенный пул SQL Azure Synapse (ранее SQL DW).
- Хранилище объектов , например хранилище BLOB-объектов Azure, Azure Data Lake Store и т. д. Формат может быть Паркет, Авро или Дельта-Лейк.