GSOC 2020 Idea Discussion

classic Classic list List threaded Threaded
12 messages Options
Reply | Threaded
Open this post in threaded view
|

GSOC 2020 Idea Discussion

Atharva Dubey
Hello All,
I am Atharva Dubey, currently in my 3rd year of engineering from BITS PILANI PILANI
I have been an avid user of octave for the past 2 years mainly for image processing, pattern recognition, and signal processing. I ventured into the field of machine and deep learning and quickly grasped it with python and sometimes with c++ with all my robotics projects. I recently had to use Matlab for deep learning research and it really hurt octave not having any DL/ML any offial package. 
I propose to develop a  Deep Learning package using a c++ backend for octave with cuda support for accelerated computing. The API operating on the user part will be user quite easy to use, using array like declarations build layers of the model just like matlab. 

I wanted feedback and wanted to discuss about this project for GSoC 2020
 Thanks and Regards
Reply | Threaded
Open this post in threaded view
|

Re: GSOC 2020 Idea Discussion

Benson Muite
Hi Athrava,

There is a Matlab (https://github.com/apache/incubator-mxnet/tree/master/matlab) integration for Mxnet (https://mxnet.incubator.apache.org), perhaps an Octave integration can be made for Mxnet. MLpack (https://mlpack.org/doc/mlpack-3.2.2/doxygen/bindings.html ) and Dlib (http://dlib.net ) might also be worth looking into .

Benson

On Sun, Feb 23, 2020, at 12:49 PM, Atharva Dubey wrote:
Hello All,
I am Atharva Dubey, currently in my 3rd year of engineering from BITS PILANI PILANI
I have been an avid user of octave for the past 2 years mainly for image processing, pattern recognition, and signal processing. I ventured into the field of machine and deep learning and quickly grasped it with python and sometimes with c++ with all my robotics projects. I recently had to use Matlab for deep learning research and it really hurt octave not having any DL/ML any offial package. 
I propose to develop a  Deep Learning package using a c++ backend for octave with cuda support for accelerated computing. The API operating on the user part will be user quite easy to use, using array like declarations build layers of the model just like matlab. 

I wanted feedback and wanted to discuss about this project for GSoC 2020
 Thanks and Regards

Reply | Threaded
Open this post in threaded view
|

Re: GSOC 2020 Idea Discussion

Carlo de Falco-2
In reply to this post by Atharva Dubey


> Il giorno 23 feb 2020, alle ore 10:49, Atharva Dubey <[hidden email]> ha scritto:
>
> Hello All,
> I am Atharva Dubey, currently in my 3rd year of engineering from BITS PILANI PILANI
> I have been an avid user of octave for the past 2 years mainly for image processing, pattern recognition, and signal processing. I ventured into the field of machine and deep learning and quickly grasped it with python and sometimes with c++ with all my robotics projects. I recently had to use Matlab for deep learning research and it really hurt octave not having any DL/ML any offial package.
> I propose to develop a  Deep Learning package using a c++ backend for octave with cuda support for accelerated computing. The API operating on the user part will be user quite easy to use, using array like declarations build layers of the model just like matlab.
>
> I wanted feedback and wanted to discuss about this project for GSoC 2020
>  Thanks and Regards

Hi,
There has been a previous project trying to build an Octave interface to TensorFlow via Pytave [1].
As Pytave has since evolved to become Pythonic [2], one approach worth considering would be to pick-up
where that project had left and complete it using Pythonic.
c.

[1] https://gsocnnet.blogspot.com/
[2] https://gitlab.com/mtmiller/octave-pythonic
Reply | Threaded
Open this post in threaded view
|

Re: GSOC 2020 Idea Discussion

Carlo de Falco-2


Il giorno 23 feb 2020, alle ore 17:38, Atharva Dubey <[hidden email]> ha scritto:

On Sun, Feb 23, 2020 at 9:46 PM Carlo De Falco <[hidden email]> wrote:


> Il giorno 23 feb 2020, alle ore 10:49, Atharva Dubey <[hidden email]> ha scritto:
>
> Hello All,
> I am Atharva Dubey, currently in my 3rd year of engineering from BITS PILANI PILANI
> I have been an avid user of octave for the past 2 years mainly for image processing, pattern recognition, and signal processing. I ventured into the field of machine and deep learning and quickly grasped it with python and sometimes with c++ with all my robotics projects. I recently had to use Matlab for deep learning research and it really hurt octave not having any DL/ML any offial package.
> I propose to develop a  Deep Learning package using a c++ backend for octave with cuda support for accelerated computing. The API operating on the user part will be user quite easy to use, using array like declarations build layers of the model just like matlab.
>
> I wanted feedback and wanted to discuss about this project for GSoC 2020
>  Thanks and Regards

Hi,
There has been a previous project trying to build an Octave interface to TensorFlow via Pytave [1].
As Pytave has since evolved to become Pythonic [2], one approach worth considering would be to pick-up
where that project had left and complete it using Pythonic.
c.

[1] https://gsocnnet.blogspot.com/
[2] https://gitlab.com/mtmiller/octave-pythonic

Sure, 
I will check it out. Sorry I did not know about the previous attempts and try to get a hold of them. 
I have one more approach in mind, which would be using MLPack and integrate it with the octave framework. MLpack is completely written in C++, it will therefore give us more flexibility to integrate it with octave. 
I will check out pythonic and will discuss maybe how to go about it and continue the project. 
Thank and Regards
Atharva Dubey

Hi, 
Please avoid top posting and always include the maintainers list in CC for this discussion.
c.
Reply | Threaded
Open this post in threaded view
|

Re: GSOC 2020 Idea Discussion

Atharva Dubey
Hello Sir, 
Sorry for any inconvenience due to top-posting. As mentioned, I will look into pyTave. Also, I will look into integration with MLpack due to it giving more flexibility for integration and easier to integrate parallel computing and cuda support. I will study and come up with a plan to discuss as to how I could go ahead with this. 
Thanks and Regards
Atharva 
Reply | Threaded
Open this post in threaded view
|

Re: GSOC 2020 Idea Discussion

Atharva Dubey
Respected Sir, 
I did look into the pyTave implementation.  I am inclining more towards the integration of an existing framework like MLPack or C++ API of PyTorch with octave to provide a complete C++ backend for superior speed. Frameworks like Pytorch have superior resource management built into them which would become difficult to implement.  
I propose that I would take MLPack and one by one add the algorithms with giving them AVX and or Cuda support for Nvidia GPU alongside the existing OpenBlas. We could have 2 toolboxes one for machine learning and another for deep learning. These packages could be then used with existing visualization tools making it a whole Data Science/ ML package. 
Thanks and Regards
Atharva 
Reply | Threaded
Open this post in threaded view
|

Re: GSOC 2020 Idea Discussion

Benson Muite
Backends may change and are architecture specific, some backends are:
Maybe challenging to support all of these.

Might it be possible to import and export models in ONNX (https://onnx.ai/) format? In cases where one needs very high performance in the training phase, one can use an optimized library. Are developers of the libraries you are considering to integrate supportive?
Reply | Threaded
Open this post in threaded view
|

Re: GSOC 2020 Idea Discussion

Carlo de Falco-2


Il giorno 25 feb 2020, alle ore 08:56, Benson Muite <[hidden email]> ha scritto:

Backends may change and are architecture specific, some backends are:
Maybe challenging to support all of these.

Might it be possible to import and export models in ONNX (https://onnx.ai/) format? In cases where one needs very high performance in the training phase, one can use an optimized library. Are developers of the libraries you are considering to integrate supportive?

When considering building an interface between Octave and an external library please also take into account possible license incompatibility issues.
I am for example not sure whether it is legally possible to distribute software that links together Octave and CUDA.
When preparing a project proposal a student should carefully look into this sort of issues, we have had in the past GSoC students that produced good 
looking code that we were never able to actually use because of licensing and copyright issues.
c.



Reply | Threaded
Open this post in threaded view
|

Re: GSOC 2020 Idea Discussion

Benson Muite




On Tue, Feb 25, 2020, at 12:25 PM, Carlo De Falco wrote:


Il giorno 25 feb 2020, alle ore 08:56, Benson Muite <[hidden email]> ha scritto:

Backends may change and are architecture specific, some backends are:
Maybe challenging to support all of these.

Might it be possible to import and export models in ONNX (https://onnx.ai/) format? In cases where one needs very high performance in the training phase, one can use an optimized library. Are developers of the libraries you are considering to integrate supportive?

When considering building an interface between Octave and an external library please also take into account possible license incompatibility issues.
I am for example not sure whether it is legally possible to distribute software that links together Octave and CUDA.
When preparing a project proposal a student should carefully look into this sort of issues, we have had in the past GSoC students that produced good 
looking code that we were never able to actually use because of licensing and copyright issues.
c.




Good point. However, there are some workarounds, for example one can use Cublas in Octave by linking an installed library:
There should of course be a default possibly less performant and portable option that does not need a separate installation due to licensing issues.
Reply | Threaded
Open this post in threaded view
|

Re: GSOC 2020 Idea Discussion

Carlo de Falco-2


Il giorno 25 feb 2020, alle ore 10:30, Benson Muite <[hidden email]> ha scritto:

Good point. However, there are some workarounds, for example one can use Cublas in Octave by linking an installed library:
There should of course be a default possibly less performant and portable option that does not need a separate installation due to licensing issues.

Octave developers are mostly not very fond of "workarounds" meant to defy the provisions of the GPL.
It might be hard to find support for the project idea and therefore a dev willing to mentor if that is the approach.
c.


Reply | Threaded
Open this post in threaded view
|

Re: GSOC 2020 Idea Discussion

Benson Muite


Octave developers are mostly not very fond of "workarounds" meant to defy the provisions of the GPL.
It might be hard to find support for the project idea and therefore a dev willing to mentor if that is the approach.
c.



GNU Octave is GPL (https://www.gnu.org/software/octave/license.html ), but may be helpful to add version number on the website. MLPack is BSD (https://github.com/mlpack/mlpack/blob/master/LICENSE.txt ), which seems compatible with Octave. Dependencies Armadillo (http://arma.sourceforge.net/), Ensmallen (https://ensmallen.org/) and Boost (https://www.boost.org/) seem to have compatible licenses. Pytorch seems to give code writers copyright and require no liability (https://github.com/pytorch/pytorch/blob/master/LICENSE ). Many of the speedups in Pytorch and other large machine learning libraries do come from proprietary architecture specific libraries though.


Reply | Threaded
Open this post in threaded view
|

Re: GSOC 2020 Idea Discussion

John W. Eaton
Administrator
I am not a lawyer and I don't plan to engage in an endless argument
about licensing.  However, I will state the following as my
understanding of the situation with CUDA (and other) libraries that are
distributed under terms that are incompatible with the GPL.

To comply with the GPL, the license of anything combined with code
covered by the GPL must also be compatible with the GPL or covered by
one of the exceptions to the GPL.

Interface code that is covered by a permissive license doesn't act as an
"insulator" between code covered by the GPL and some proprietary license
that is incompatible with the GPL.

GPLv3 defines System Libraries and makes an exception for them, but I
don't think that NVIDIA's CUDA libraries would be in that category.

jwe