[mlpack] MLPack bindings

Ryan Curtin ryan at ratml.org
Tue Feb 27 14:21:57 EST 2018


On Tue, Feb 27, 2018 at 06:17:54PM +0000, Kevin Avignon wrote:
> Hi,
> 
> I'm a GSOC alumni and I've been looking into the available organizations
> this year. I've been more interested by AI & ML lately.
> 
> In order to know more about this, I got into the AI Nanodegree (short 6
> months program) given by Udacity. Here's a link:
> https://www.udacity.com/course/artificial-intelligence-nanodegree--nd889
> 
> I took a look at one of the projects your organization is proposing for the
> students. What I'd like to propose is a binding to C#. At my workplace, I'm
> considered as the C# Gunslinger. I love working with .NET and I've been
> loving working with it for the past 3 years. What I'm proposing is to be
> given the chance to work on it. And to have potentially someone to help me
> out from time to time if I have questions about using bindings for MLpack.
> 
> I won't be a GSOC student, I'm a full-time developer who's willing to work
> on it so we can make the project available to new developers and I'd love
> to get a crack at this thing.

Hey Kevin,

Thanks for getting in touch.  I think it would be really exciting to
provide mlpack bindings to C#, but, I don't know much of anything about
how C++ code can be called from C#.  If you are a gunslinger, maybe you
can provide some good insight on that. :)

Currently we have an automatic bindings system that basically aims to
provide the same interface to any language that we bind to.  Right now
the only bindings we produce are for the command-line and for Python.
For the command line bindings, we simply compile directly to an
executable, but for Python it's a little bit weirder.  We have to
compile a program which, when run, produces a Cython binding .pyx file,
and then there is some CMake magic which in turns takes all the
generated .pyx files and compiles them into a usable Python package.

When I built the system I wrote some (hopefully) comprehensive
documentation here:

http://mlpack.org/docs/mlpack-git/doxygen/bindings.html

The primary advantage is that this means we don't have individually
maintained bindings for every language, so when we update a machine
learning algorithm it stays in sync across all languages.  This reduces
the maintenance burden significantly.

So I would imagine, for C#, we could do something roughly similar.  I
think what we could provide through this system are a number of
standalone functions (or similar) that the user can call that have the
same functionality as the command-line programs or the Python bindings.

Let me know what you have in mind as far as how you want to proceed and
contribute.  I am sure we can figure something out. :)

Thanks,

Ryan

-- 
Ryan Curtin    | "Moo."
ryan at ratml.org |   - Eugene Belford


More information about the mlpack mailing list