
Sony open-sources NNabla – a simple, fast and lightweight NN library - snowryd88
https://github.com/sony/nnabla
======
patrickaljord
Could we modify the title to say Neural Network library? Not sure most people
can guess what NN library means but maybe it's just me.

~~~
lobster_johnson
I thought it was a library for doing nearest-neighbour search. Most neural
network literature tends to use "ANN" (artificial neural network), not "NN", I
think.

------
thinxer
Some basic analysis:

1\. Kernels (Functions in NNabla) are mostly implemented in Eigen.

2\. Network Forward is implemented as sequential run of functions. No multi-
threaded scheduling. No multi-GPU or distributed support.

3\. Python binding is implemented in Cython.

4\. Have some basic dynamic graph support: run functions as soon as you add
them to the graph, and run backward afterwards. Somewhat similar to PyTorch.

5\. No support for checkpointing and graph serialization, or I'm missing
something.

I'm not sure why Sony is releasing this (yet another) deep learning framework.
I don't see any new problems the project is trying to solve, compared to other
frameworks like TensorFlow and PyTorch. The code is simple and clear, but
nowadays people need high-performance, distributed, production-ready
frameworks, not another toy-ish framework. Someone please shed some light on
me?

BTW, for newcomers to deep learning systems, [CSE
599G1]([http://dlsys.cs.washington.edu/](http://dlsys.cs.washington.edu/)) is
a good start.

~~~
antirez
The problem is that this library is not just a C easy-to-bind project,
otherwise an high quality embeddable library that can work reasonably well
with CPUs and can also benefit from commonly used GPUs in small systems, could
be useful for a number of projects. Not all the problems need to have a huge
dataset of complex entries (like million of images), there are many IoT
problems that instead need a self contained library supporting different kinds
of NNs.

~~~
dimatura
Seems like out of the major libraries (TF/Caffe/Theano/pytorch), pytorch is
the only one to have a core that is C (the TH*). It's not exactly a small
library, though. One small library that is in C and has some state-of-the-art
features is Darknet
([https://pjreddie.com/darknet](https://pjreddie.com/darknet)).

That said, seems like directly using the C++ API was a major use case here,
and it looks fairly clean to me.

~~~
albertzeyer
TensorFlow and Caffe are also implemented in C++.

~~~
kgwgk
Being implemented in C++ doesn't ensure that a C++ interface exists. A C++ API
is available for TensorFlow, though, and also a C API.

------
albertzeyer
Looks interesting. Maybe some more context here:

[https://nnabla.org/](https://nnabla.org/)
[https://nnabla.readthedocs.io](https://nnabla.readthedocs.io)

It looks like it's from Sony.

I think every new Deep Learning / NN library should put itself into more
context. How does it compare to all the existing frameworks, like TensorFlow,
(Py)Torch, CNTK, MXNet, Theano? It actually looks pretty similar, which makes
this question even more important. From the examples, it might be most similar
to PyTorch with autograd but I'm not sure. So, what are the differences?

~~~
cyphar
This one implements DRM as a NN rather then a rootkit.

[Only half joking.]

~~~
kronos29296
Which half? One half is bad for the future and the other is worse now.

~~~
cyphar
I'm not sure what you mean, but I was referencing Sony's illegal and unethical
usage of a rootkit on every CD they manufactured to hack user's computers so
that they could implement DRM (in)effectively[1].

[1]:
[https://en.wikipedia.org/wiki/Sony_BMG_copy_protection_rootk...](https://en.wikipedia.org/wiki/Sony_BMG_copy_protection_rootkit_scandal)

~~~
kronos29296
I didn't know this happened but I thought you were implying the NN was a
rootkit. Well I guess I misinterpreted.

------
positivecomment
Related question: Is there a framework which lets us do very basic tasks
without getting deep into NN and ML? For example an image classifier, which
takes images under different groups and when trained, can tell which group a
picture more likely belongs to?

I'm not a data scientist, just a potential end-user who doesn't know what
input_shape is.

~~~
cromulen
Tensorflow has the solution to all problems :)

[https://github.com/tensorflow/models/tree/master/slim](https://github.com/tensorflow/models/tree/master/slim)

This is a flexible image recognition framework written in Tensorflow and
TFslim

It allows you to train/fine-tune a NN from the command line by specifying only
the few details necessary... which NN architecture to use, path to custom
data, etc.

~~~
reality_hacker
And maybe there are is such thing for text processing?..

------
habitue
Probably just me but NNabla seems unfortunately close to NAMBLA.

~~~
iamthad
It's alluding to the nabla symbol
([https://en.wikipedia.org/wiki/Nabla_symbol](https://en.wikipedia.org/wiki/Nabla_symbol))
used in mathematics, and the similarity in sound between the two does not go
unnoticed by many students of calculus.

~~~
habitue
TIL!

------
alcedok
I created a docker image that allows you to play with their tutorials,
currently not supporting the GPU extension but plan on using nvidia-docker
later this week and have an image ready to play with. Here's a link to whoever
is interested
[https://github.com/alcedok/nnabla_notebook_docker](https://github.com/alcedok/nnabla_notebook_docker)

------
seesomesense
''NN Used as a substitute for an unknown name or one that the writer wishes
not to reveal.

Etymology Latin nōmen nesciō ''

------
pavlakoos
What exactly does this library do?

