Skip to content

GSoC_2018_project_wrapping

Fernando J. Iglesias García edited this page Feb 2, 2020 · 4 revisions

Wrappers as plugins

Now that finally the Tags framework is getting into its 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

Moderate. You need to have:

  • Desirable: Experience with existing ML packages
  • cmake skills
  • 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 (see PR 4792 for initial steps). 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 the 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

There's a project defined for this effort, where you can track the progress as well see what and how needs to be done

Clone this wiki locally