Мы сталкивались с подобной настройкой в некоторых из наших проектов ML: инженеры-разработчики имеют базовый стек Java, который предоставляет серию API RESTful для данных, хранящихся в NoSQL (MongoDB), и инженеров данных / ученых данных Автор сценариев ML на Python для обучения и разработки функций. Вот некоторые вещи, которые нам помогли:
- Команда разработчиков Java-продуктов создает API-интерфейсы RESTful, позволяющие инженерам данных извлекать данные (в формате JSON / CSV) из MongoDB на регулярной основе, которую мы используем для разработки моделей / обучения / разработки функций.
- Мы используем Quilt для простого управления нашими наборами данных, такими как код (версии, многоразовые пакеты данных ) и Git для версий маринованные ML модели. Вы можете вернуться / перейти к любому сохраненному состоянию или эпохе модели (например, для нейронных сетей), используя этот подход, используя
versions
и / или tags
и / или hashes
.
- Ученые по данным используют записные книжки Jupyter для просмотра / работы с данными и моделями. Вы можете легко вставить данные (лениво загрузить) в фрейм данных Pandas, используя Quilt - это всего лишь пакет Python :
from quilt.data.username import my_data_package
- Команда разработчиков Java использует метод
exec()
в классе Java Runtime
для обработки новых / свежих данных в пакетном режиме с использованием сценариев Python командной строки (созданных инженерами данных Python - это исполняемые файлы с аргументами командной строки для используя правильную обученную модель и ввод данных), которые загружают маринованные модели для генерации прогнозов. Смотрите этот SO ответ .
Я не думаю, что это каноническое решение или лучшая практика как таковое , но это помогло нам сбалансировать потребности команды разработчиков Java и Python DE / DS.
Некоторые из преимуществ Quilt:
- Воспроизводимость - Представьте исходный код без версий. Уч. Зачем жить с не версированными данными? Версионные данные делают анализ воспроизводимым путем создания однозначных ссылок на потенциально сложные зависимости данных.
- Сотрудничество и прозрачность - Данные любят делиться. Quilt предлагает единый каталог для поиска и обмена данными.
- Аудит - реестр отслеживает все операции чтения и записи, чтобы администраторы знали, когда к данным обращаются или изменяют.
- Меньше подготовки данных - реестр абстрагируется от сети, хранилища и формата файлов, чтобы пользователи могли сосредоточиться на том, что они хотят делать с данными.
- Дедупликация - Данные идентифицируются по их хэшу SHA-256. Дублирующиеся данные записываются на диск один раз для каждого пользователя. В результате большие повторяющиеся фрагменты данных потребляют меньше пропускной способности диска и сети.
- Ускоренный анализ - Сериализованные данные загружаются в 5-20 раз быстрее, чем файлы. Более того, специализированные форматы хранения, такие как Apache Parquet, сводят к минимуму узкие места ввода-вывода, так что такие инструменты, как Presto DB и Hive, работают быстрее.
Источник
Надеюсь, это поможет! Удачи и хотелось бы услышать, как все идет.