NoFlo for deep neural networks (new project)

245 views
Skip to first unread message

Arjun Jain

unread,
Dec 27, 2014, 7:32:01 PM12/27/14
to flow-based-...@googlegroups.com
Hello all,

I am brand new to this group, great work you guys are good, congratulations!

I am here as I might like to use noflo for deep neural networks. A neural network can be fully defined using different kinds of components. I would like to be able to do this visually. Something like http://app.flowhub.io/ is perfect.  

I realise I need to create deep learning specific components such LCNLayer, ConvPoolLayer, etc, which is fine. However, I would also like these graphs to finally run on GPUs (this is how deep nets are currently trained). For this, there are a few libraries such as theano (pyhon), torch7(lua) and caffe(C++). Thus, I would ideally want my noflo components to be wrappers for some of these packages. When I run the noflo graph, the final program in python should be executed (which in turn generates efficient CUDA code). The best thing about noflo currently is that it already provides the wonderful UI and the flow based paradigm which is exactly what a deep neural networks essentially is.

Is it possible to do this in noflo? Do you have any suggestions?

Thanks a lot in advance,
Best,
Arjun

Arjun Jain

unread,
Dec 27, 2014, 7:40:02 PM12/27/14
to flow-based-...@googlegroups.com
To add: I want my neural networks to finally pick data from my sever and run on the server. However, I want the network data flow logic as in noflo, and the UI.

Thanks again.

Alfredo Sistema

unread,
Dec 27, 2014, 7:47:24 PM12/27/14
to flow-based-...@googlegroups.com
Hello and welcome Arjun, noflo is a flow based programming framework
for javascript, and noflo-ui is a tool for building graphs, they are
independent from each other and the idea is that you can create your
own runtime and connect to flowhub or host it yourself to use it.
Right now there more complete implementations are JavaFBP and C#FBP,
which provide concurrent execution of nodes and that might fit your
goal nicely.
In any case the effort depends on you, as there are no restrictions
other than the stack you use for it.
> --
> You received this message because you are subscribed to the Google Groups
> "Flow Based Programming" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to flow-based-progra...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.

Arjun Jain

unread,
Dec 27, 2014, 7:59:42 PM12/27/14
to flow-based-...@googlegroups.com
Cool, thank you so much for your prompt reply Alfredo!

I see Microflo/ImgFlow etc are other runtimes to be used with noflo-ui/http://app.flowhub.io? Am I correct?

What is the best way to start writing my own runtime? Look at source code of these existing ones?

Thanks a lot once again!
Best,
Arjun

Alfredo Sistema

unread,
Dec 27, 2014, 8:30:08 PM12/27/14
to flow-based-...@googlegroups.com
It's a complex task, so I'd suggest picking an existing library and
writing the required componets for it. Are you familiar with the
concepts of Flow Based Programming already? If you only need noflo-ui
for the graph you can just use the produced json.
You should refine your requirements a bit because there's too much going on.

Paul Morrison

unread,
Dec 27, 2014, 9:07:40 PM12/27/14
to flow-based-...@googlegroups.com

Hi Arjun,

Just wanted to mention that there is an implementation of "classical" FBP that is written in C++ and Boost (to support multithreading on multiple cores).  It also provides a simple Lua interface. So this might be of interest to you. No Python support yet though!

This implementation can be found at https://github.com/jpaulm/cppfbp .

Some of us are also using the DrawFBP diagramming tool - also on my Github repository - the diagrams drawn recently by Vlad and myself used this tool.

Feel free to contact me for specific questions about any of JavaFBP, C#FBP or CppFBP - or the Google group for more general correspondence.

Best regards,

Psul M.

Henri Bergius

unread,
Jan 7, 2015, 10:27:09 AM1/7/15
to flow-based-...@googlegroups.com
Hi,

On Sun Dec 28 2014 at 1:59:52 AM Arjun Jain <arju...@gmail.com> wrote:
I see Microflo/ImgFlow etc are other runtimes to be used with noflo-ui/http://app.flowhub.io? Am I correct?

Yes. Basically anything that can talk the FBP protocol can be programmed using Flowhub.

The ones I know about include:

* NoFlo (Node.js, browser, GNOME desktop)
* MicroFlo
* JavaFBP
* ImgFlo
* sndflo

However, since anybody can register and control their own custom runtimes there might be more out there. I know there are some proprietary ones, for instance.
 
What is the best way to start writing my own runtime? Look at source code of these existing ones?

Yes, that helps. https://github.com/jonnor/protoflo might be an especially easy place to start.

Then of course one should look at the protocol specs (http://noflojs.org/documentation/protocol/).

Since couple of days ago there is also a runtime-agnostic FBP protocol test suite available: https://github.com/flowbased/fbp-protocol
 
Arjun

/Henri 

Arjun Jain

unread,
Jan 7, 2015, 5:54:29 PM1/7/15
to flow-based-...@googlegroups.com
Thanks a lot Henri, super useful. I will keep you posted.

Best,
Arjun

Sebastian Schwank

unread,
Mar 21, 2015, 9:22:46 AM3/21/15
to flow-based-...@googlegroups.com
Hi there,

looks like VERY interesting stuff you're discussing about here.

I myselve wrote a ANN in C++ Qt running on the GPU in a shader:

So if there's a way to help you with this project.
Let me know !

I think there would be much to learn.

Sebastian Schwank

unread,
Mar 21, 2015, 10:09:30 AM3/21/15
to flow-based-...@googlegroups.com
My questions are:

Does  noflo support WEBGL and Webgl shaders (so you could use the GPU of the server/client, too)?
Is it possible to write a client so that anyone who wants to support the ANN-NoFlow-Project is able to calculate training-sessions for a certain task the Net should learn ?
Is it possible to connect NoFlow to a cloud storage server so that you can store the "Weight-Patterns" of the trained neuronal network.
Is it possible to customize the NoFlow-Nodes in a way that you could load different (already trained) "Weight-Patterns" as Nodes an connect them together ?

That's it for now.

Thanks for soon reply:
S.Schwank

Arjun Jain

unread,
Mar 23, 2015, 4:15:03 PM3/23/15
to flow-based-...@googlegroups.com
Hi Sebastian,

Your ANN in C++ Qt running on the GPU in a shader is fantastic! I use
libraries such as caffe, torch7, theano, which have run cuda kernels.
I would be curious to know the results of comparison against them in
terms of speed. Of course, yours using webgl will be way more general,
but in my field of research (computer vision), the networks which are
good enough to do something are usually huge (we use K40, Titan X)
which have 12GB global memory and are not for the common users yet. I
was mostly interested in only using flow based ui bit to write
various architectures of neural networks (to start with convnets)
easily using the flow based ui. Do you have any interest in that?
Also, If your shader based version can do convolutions faster than
cuda, it will be huge help to the computer vision community (as far as
i know no shader based library widely being used).

Best,
Arjun
>>> > email to flow-based-progra...@googlegroups.com.
>>> > For more options, visit https://groups.google.com/d/optout.
>
> --
> You received this message because you are subscribed to the Google Groups
> "Flow Based Programming" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to flow-based-progra...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages