Логотип Зефирнет

Выпущена платформа машинного обучения Datumbox 0.7.0

Дата:

Я очень рад объявить, что после нескольких месяцев разработки вышла новая версия Datumbox! В версии 0.7.0 реализована поддержка многопоточности, быстрое обучение на дисках для наборов данных, которые не помещаются в памяти, несколько алгоритмических улучшений и улучшенная архитектура. Загрузите его сейчас с Github or Maven Центральный репозиторий.

В центре внимания версия 0.7.0 наконец-то привнести поддержку многопоточности в фреймворк и сделать обучение на основе дисков очень быстрым Более того, он обеспечивает несколько алгоритмических улучшений во всех алгоритмах на основе регрессии, модель совместной фильтрации и экстрактор N-граммов, который используется в приложениях НЛП. Архитектура фреймворка была переработана для разделения проекта на несколько модулей (обратите внимание, что artifactId основной библиотеки теперь datumbox-рамки Пб) и упростить его структуру. Наконец, новая версия содержит несколько улучшений кода, улучшенную документацию в форме javadocs и улучшенное покрытие тестами.

Версия платформы 0.7.0 не имеет обратной совместимости с веткой 0.6.x. Это связано с тем, что была необходима серьезная переработка, чтобы добавить новые функции, а также улучшить и упростить архитектуру фреймворка. Ниже я подробно расскажу о новых возможностях:

Поддержка многопоточности

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

Проект использует множество функций Java 8, чтобы уменьшить детализацию кода, улучшить читаемость и модернизировать кодовую базу. Обратите внимание, что, хотя среда интенсивно использует потоки, все задачи выполняются в своем собственном ForkJoinPool, чтобы гарантировать, что они не застрянут. Уровень параллелизма контролируется либо программным изменением объекта ConcurrencyConfiguration, либо путем настройки файла datumbox.config.properties.

Дисковое обучение

Несмотря на то, что обучение на основе диска (модели обучения без загрузки данных в память) было возможно с версии 0.6.0, оно было настолько медленным, что сделало эту функцию практически непригодной для использования. В версии 0.7.0 механизм Storage Engine был переработан, чтобы обеспечить гибридный подход к хранению горячих / регулярно используемых записей в памяти и в кэше LRU, а остальное - на диске. Такой подход делает обучение на основе диска очень быстрым, и его следует использовать даже в тех случаях, когда данные с трудом умещаются в памяти (очевидно, если данные легко помещаются в ОЗУ, предпочтительнее использовать обучение в памяти по умолчанию). Как и в предыдущей версии, конфигурацию хранилища памяти можно изменить программно, изменив соответствующие объекты DatabaseConfiguration или настроив файл datumbox.config.properties.

На данный момент я хотел бы отметить, что эта функция была бы невозможна без удивительной работы, проделанной Яном Котеком над MapDB, MapDB - это встроенное ядро ​​базы данных Java, которое предоставляет одновременные карты, поддерживаемые дисковым хранилищем и памятью вне кучи. Используя его библиотеку с открытым исходным кодом, я смог разработать Storage Engine, который позволяет Datumbox обрабатывать обучающие данные объемом несколько ГБ на моем ноутбуке, не загружая их в память.

Алгоритмические улучшения

В новой версии добавлена ​​поддержка регуляризации L1, L2 и ElasticNet в моделях SoftMaxRegression (Multinomial Logistic Regresion), OrdinalRegression и NLMS (Linear Regression). Это означает, что при использовании одних и тех же стандартных классов можно выполнять регрессию хребта, регрессию лассо или использовать эластичные сети. Более того, в новой версии алгоритм Collaborative Filtering был модифицирован для поддержки более общих моделей CF пользователя-пользователя. Наконец, алгоритм NgramsExtractor был переписан, чтобы он мог экспортировать больше ключевых слов и обеспечивать лучшие результаты.

Архитектура фреймворка и улучшения кода

Еще одним важным обновлением новой структуры является тот факт, что проект был разделен на несколько подмодулей. Ниже я перечисляю поддерживаемые в настоящее время модули, названные в честь их artifactIds:

  1. datumbox-каркасного общее: Он содержит наиболее важные интерфейсы, вспомогательные и служебные классы, структуры данных и механизмы инфраструктуры. Этот модуль не содержит никаких алгоритмов, но является основой фреймворка.
  2. datumbox-каркасное ядро: Он состоит из 3 основных уровней структуры (машинное обучение, статистика и математика) вместе со слоем утилит. Этот модуль содержит все алгоритмы, методы и статистические тесты фреймворка.
  3. datumbox-рамочные-приложения: Он содержит список классов, созданных для предоставления готовых решений для распространенных проблем машинного обучения, таких как классификация текста, моделирование данных и т. Д. Все классы модуля построены поверх основного модуля.
  4. datumbox-рамки Пб: Это структура машинного обучения Datumbox! Обратите внимание, что в результате реструктуризации artifactId библиотеки был изменен с «datumbox-framework» на «datumbox-framework-lib».

В дополнение к вышеупомянутым модулям у нас есть родительский модуль «datumbox-framework», который больше не является библиотекой Java, а просто группирует все подмодули в рамках одного проекта. Чтобы использовать новый фреймворк в проектах Maven, добавьте в ваш pom.xml следующие строки:

<Зависимости> ...зависимость>идентификатор_группы> com.datumbox </идентификатор_группы>артефакта> Датумбокс-фреймворк-lib</артефакта>версия> 0.7.0 </версия> </зависимость> ... </Зависимости>

Новая версия вносит серьезные изменения в структуру фреймворка, интерфейсы и наследование с основной целью упростить и улучшить его архитектуру. Одним из важных изменений, которые были введены в новой платформе, является устаревший класс Dataset (который использовался для хранения всех данных обучения и тестирования в платформе) и введение класса Dataframe. Класс Dataframe реализует интерфейс Collection, позволяет модифицировать и удалять записи и обеспечивает параллельную обработку записей. Другим важным изменением является тот факт, что BaseMLrecommender, который является базовым классом для всех алгоритмов Рекомендаторской системы, теперь наследуется от BaseMLmodel.

В дополнение к вышеупомянутым изменениям платформа включает в себя некоторые улучшения кода и исправления ошибок: serialVersionUID добавлен в каждый сериализуемый класс, улучшены исключения и сообщения об ошибках, а также документация по javadocs и покрытие тестами. Для получения дополнительной информации об обновлениях новой версии посмотрите на Список изменений:.

Datumbox 0.7.0 завершил несколько важных этапов изначально предложено дорожная карта. Разработка рамок будет продолжена в следующие месяцы для решения следующих задач:

  1. Доступ к Framework через консоль или Python: Фреймворк должен стать более доступным для не-Java разработчиков. Для достижения этого он должен обеспечить доступ к алгоритмам через командную строку или предлагая API на других языках, таких как Python.
  2. Новые алгоритмы машинного обучения: По мере того, как архитектура структуры становится более зрелой, будет легче увеличивать число поддерживаемых алгоритмов и включать такие модели, как смесь гауссианов, гауссовских процессов, k-NN, деревья решений, случайные леса, факторный анализ, SVD, машины факторизации Искусственные Нейронные Сети и т. Д.
  3. Больше двигателей хранения: Пользователям платформы следует предложить больше возможностей для хранения своих моделей и обучения их алгоритмам без загрузки всех данных в память. Более того, лучшие инструменты должны быть предоставлены тем, кто хочет переместить модель из одного механизма хранения в другой.
  4. Улучшение документации, тестового покрытия и примеров кода: Несмотря на то, что javadocs и тестовое покрытие улучшаются в каждом выпуске, документация фреймворка все еще оставляет желать лучшего. Следующие версии должны предоставить лучшую документацию, лучшее тестовое покрытие и больше примеров того, как использовать поддерживаемые алгоритмы.

Учитывая, что у меня есть работа на полную ставку, я ожидаю, что разработка фреймворка будет продолжаться с той же скоростью, выпуская новую версию каждые 4-6 месяцев. Если вы хотите предложить новый этап, не стесняйтесь открыть вопрос на официальном репозитории Github. И последнее, но не менее важное: если вы используете проект, рассмотрите возможность участия. Неважно, являетесь ли вы ниндзя-разработчиком Java, рок-звездой Data Scientist или опытным пользователем библиотеки; Я могу использовать всю помощь, которую могу получить, поэтому не стесняйтесь свяжитесь со мной.

Еще раз хочу поблагодарить моего друга и коллегу Элефтериос Бампалетакис за помощь в улучшении архитектуры фреймворка его отзывы были неоценимы. Также я хотел бы поблагодарить Яна Котека за бесплатную консультацию по эффективному использованию. MapDB и для открытого источника такой удивительный продукт. Кроме того, большое спасибо ej-technologies GmbH и JetBrains за предоставление лицензий на их удивительные инструменты JПрофилер и IntelliJ IDEA; они оба предлагают удивительные продукты, которые очень помогли в разработке фреймворка. И последнее, но не менее важное: я хотел бы поблагодарить любовь всей моей жизни, Кириаки, за поддержку и терпение ко мне при написании проекта.

Не забудьте клонировать код Datumbox v0.7.0 из Github, Библиотека доступна также на Maven Центральный репозиторий, Также посмотрите на Подробное руководство по установке и на Примеры кода узнать больше о том, как использовать фреймворк.

Я с нетерпением жду ваших комментариев и рекомендаций. Запросы на тягу всегда приветствуются! 🙂

О нас Василис Вриниотис

Меня зовут Василис Вриниотис. Я Data Scientist, инженер-программист, автор Datumbox Machine Learning Framework и гордый фанат. Узнать больше

Источник: http://blog.datumbox.com/datumbox-machine-learning-framework-0-7-0-released/

Spot_img

Последняя разведка

Spot_img

Чат с нами

Всем привет! Могу я чем-нибудь помочь?