Skip to content

GSoC_2018_project_wrapping

Viktor Gal edited this page Jan 29, 2018 · 4 revisions

Wrappers as plugins

Now that finally the Tags framework is getting into it's shape, it's time to implement the plugin framework using tags. Namely, the idea is to create a shared library (or DLL) based plugin framework, where developers can create and ship their models as a shared library and just dynamically load them to Shogun.

Mentors

Difficulty & Requirements

Difficult. You need to have:

  • Desirable: Experience with existing ML packages
  • advanced C++ and programming skills (deep understanding of shared libraries, linking, etc)
  • no fear of working with big legacy codebases

Description

Currently, Shogun is made of a monolithic structure of classes which is cumbersome to extend and maintain:

  • too many classes
  • too many dependencies
  • takes too long to add algorithms

We want to build a plugin architecture to solve these problems. Such an architecture would support dynamic behaviour of plugins: a user could download a new classifier and run it instantly without rebuilding Shogun. Using the Tags framework the whole object management got simplified and thus it allows us to specify a base set of interface classes of Shogun.

Using these base classes it would significantly simplify the extension of Shogun with new ML models, as it wouldn't require to actually merge to whole codebase into Shogun (see libqp, libocas, etc.), but only specify a simple set of wrapper classes that would be later compiled into dynamically loadable shared libraries.

Usual suspects for the initial set of models to get integrated:

  • XGBoost
  • Catboost
  • Tensorflow
  • Keras
Clone this wiki locally