Julia for deep learning

I’m a big fan of the Julia language for scientific programming, and especially of the JuMP.jl and Convex.jl libraries for optimisation and HPAT.jl for parallel programming, which are best of breed. A key advantage of Julia is speed - it can be an order of magnitude faster than Python for some tasks. That said, it’s a very new language (version 0.5) with a relatively tiny support base, which can be extremely challenging. On the bright side, it has really nice Python and C interoperability, which makes it easy to spin out wrappers for python libraries in Julia.

Because I use Julia a lot, I’m interested in finding out whether it would be possible to do deep learning in Julia by wrapping libraries (Theano, Tensorflow, Keras) from Python.

As a feasibility study in whether this is a good idea or not, I’m thinking of trying to replicate the part 1 notebooks in Julia (and making some libraries along the way).

I’m keen to get feedback on whether anyone else finds this interesting and what approaches they would try. I’ll share my experiences here for those who may find it useful in future.

9 Likes

That sounds great! I know some of the Julia authors and main contributors, so if you make good progress on this I can help you get it noticed, if needed.

You may want to look at the existing MXnet Julia interface. MXnet is a fantastic library, with the benefits of both pytorch (‘minpy’) and tensorflow (mxnet symbolic).

1 Like

Thanks @jeremy, MXNet looks really cool :slight_smile: I’ve also found Knet to be quite interesting. I’ll post here in the next few days with my first pass code comparing a few frameworks.

@Dario, I had exactly the same thoughts watching the first lecture. We’re you able to make any progress on this?

I know Julia has been a fast moving target, but now that 0.7 is in beta it might be a good time to start! I’m not sure if I’ll be able to work on it in much in the near future, but I’m considering it.

Can mxnet support be added to fastaiv3 library since mxnet can now help us switch between dynamic graph(gluon api) and static graph(symbolic graph) using HybridBlocks. Which makes it easy to launch the models in production, and perhaps speed things. I’m ready to contribute.