News for hackers. Stuff that matters.
Re:Show HN: Eclipse Deeplearning4j by stolsvik on Wednesday October 04, 2017 @05:09PM (#15404689)
For anyone that hasn't checked out Deeplearning4j yet, and think that Python is the only place where the cool AI stuff happens, you really should check this project out!

Their Gitter channel is absolutely kicking, where lots of the actual devs, including CTO and co-founder Adam Gibson, hang out and /really/ answer /any/ question - I find their responsiveness stunning! (I discussed and reported a minor improvement to the config builder, and it was implemented - literally - the very next day!)

Just recently found the library myself, and I found it very refreshing to be able to utilize my decent Java competence in ML, instead of continuously having to hammer my way through limited Python experience to get things done. (Python also have limited multi-threading capabilities which I found annoying when wanting to do some larger ETL stuff "inline". Python also gives me a strong feeling of "this is a scripting language!": It is super fast and expressive when your needs are met by the vast set of (native) libraries - but when I just want to do something myself with raw code, things gets slower. I also love a properly typed language, which python obviously isn't!)

Do notice that with dl4j, you still get full-on GPU acceleration via Nd4j, which is a "NumPy-style" multi-dim array system.

Re:Show HN: Eclipse Deeplearning4j by agibsonccc on Wednesday October 04, 2017 @05:13PM (#15404741)
Thanks! Upcoming will be samediff which will allow a pytorch like api on the JVM as well as our python interface jumpy:

https://github.com/deeplearning4j/jumpy

The hope here is to be able to "meet" the python frameworks here and run side by side benchmarks that anyone who only knows TF could do.

For those that don't know: DL4j is somewhere in between keras and TF flexibility wise.

Samediff will be a bit "closer" to what people in python see/understand.

The goal there is to import models from different frameworks and run them in production.

Re:Show HN: Eclipse Deeplearning4j by sandGorgon on Thursday October 05, 2017 @05:12AM (#15407692)
I would like to chime in favor of python. The ecosystem is just too biased towards python to try and jump in anything else.

Also looking at https://deeplearning4j.org/keras

Could you have documentation which is helpful for the rest of us that use Linux ? Your choice of using docker is brilliant and hope that you make it significantly commandline driven and especially for GPU (nvidia-docker or something). Currently your documentation is extremly dependent on Kitematic and such.

Re:Show HN: Eclipse Deeplearning4j by agibsonccc on Thursday October 05, 2017 @02:23PM (#15411389)
I actually don't think you are my target audience. We aren't targeting end python users. You have to remember: there are 2 ecosystems. Production at big companies and data scientists here.

I am not target data scientists. Granted, we will have python bindings later, but there's a huge amount of data engineers that know java just fine and need it for production. That's who I'm going after here.

You could try again when we have our python bindings out there..for now just wait I guess?

Re:Show HN: Eclipse Deeplearning4j by mindcrime on Wednesday October 04, 2017 @05:19PM (#15404799)
Their Gitter channel is absolutely kicking, where lots of the actual devs, including CTO and co-founder Adam Gibson, hang out and /really/ answer /any/ question - I find their responsiveness stunning!

Same here. @agibson and crew are amazing and they've helped me numerous times over the past year or so.

Re:Show HN: Eclipse Deeplearning4j by albertzeyer on Thursday October 05, 2017 @03:20AM (#15407209)
If you prefer Java over Python, some of the other more popular frameworks also have Java bindings. E.g. TensorFlow or CNTK.
Re:Show HN: Eclipse Deeplearning4j by agibsonccc on Thursday October 05, 2017 @06:26PM (#15413030)
I'm not exactly sure I'd call those "bindings". If you want an actual compelling competitor to us because we're not a big name, at least look at mxnet. That's more credible.

It's incredible that folks insist on this still. Both those frameworks aren't even going to be aiming for any level of integration with the JVM.

At least take a look at what makes us different.

A big one being: https://github.com/bytedeco/javacpp

We own the whole stack here and integrate pretty deeply. This has lead to some great performance improvements.

We aren't just "java bindings" but offering a lot more in one place than the other frameworks.

Also: I highly doubt you've even looked at the numbers.

We're actually doing pretty well in the rankings: https://twitter.com/fchollet/status/915366704401719296

We're not #1 but we have an actual user base.

I think a lot of our upcoming things like our python bindings where people don't have to "see" java and integrations with spark will win over some folks at big companies..maybe not DL researchers which is also fine. Our upcoming api will be like pytorch though.

Regardless: I'm not sure the framework will matter long term given that model import and things like ONNX are becoming more common.

Finally, I'll just say this: It doesn't hurt the ecosystem to have more competition and different interests than research.

Every single person who says this usually dismisses us for 1 silly reason or another ranging from:

1. Not a "big name" (despite being put in production by a ton of them)

2. Not a lot of research papers (yeah no crap we're not a research framework, we do have publications though!)

3. They see java bindings and can't tell the difference between a full application suite

and a tensor lib with java bindings generated by SWIG

4. Usually a PHD student at a university who hasn't worked at a large company and doesn't understand my actual target audience

Re:Show HN: Eclipse Deeplearning4j by albertzeyer on Friday October 06, 2017 @03:43AM (#15415058)
It sounds like you got a bit angry because of my comment? Sorry, I didn't meant to mean it negative in any way, esp nothing negative about DL4J. I just thought that it might be a good contribution to the discussion to have a more complete overview of the DL options in Java, as it was not mentioned here. Of course, there are advantages and disadvantages for each. E.g. TensorFlow might be more well-known but its Java bindings are lacking a lot of the tools which you have in the Python bindings. Also, despite the programming language, each framework underlying design has its advantages and disadvantages.

I know some people / companies who do the research and training in Python with TensorFlow and in production for inference they use the Java bindings (or C++). That works quite well.

Also, competition never hurts.

Re:Show HN: Eclipse Deeplearning4j by agibsonccc on Friday October 06, 2017 @08:13AM (#15416151)
Oh no problem! I guess what I was getting at with my reply. We get dismissed all the time by the folks doing research (understandly, they wouldn't use us)

I guess what I was elaborating on (partially for clarity of other readers who really don't know the difference, partially as a response to your comment here) was the fact that they really are very different things.

My problem with these things being posted as "alternatives" is: deep learning is just 1 part of the suite.

When you want to do anything with these other frameworks, usually python is somewhere in your workflow.

That isn't my only complaint though: Dl4j "the deep learning framework" is 2 parts. Nd4j (the tensor library directly comparable to TF/mxnet,..) and dl4j the deep learning DSL which is higher level like keras.

As for your point about folks using C++/Java bindings: Even "production" ends up being nuanced there. TF has different deployment modes with almost no out of the box tooling for very common deployment scenarios. That includes things like kafka, spark,..

We take an angular js like approach to this. Rather than have deployment as an exercise left to the reader, you get imports from different frameworks, a clear way of doing everything from ETL to setting up a server, and a way of actually debugging/controlling things from the JVM rather than using some SWIG bindings with a black box.

For example, our tensor library has deep integrations with the java gc which allows reference collecting as well as in java memory management system for cpu and gpu all for handling management on the gpu.

You need to control those things if you say: run things on a tomcat server. You don't get that granularity when just deploying some c++ bindings. There's a reason I emphasize having the full runtime tooling available to you (not just integrations).

So yes: In general when I see someone just off hand pitching these things, I clarify it. As I said in my previous comment: A whole application suite is a very different approach than a "tensor lib with autodiff and some java bindings".

People have different use cases and different requirements. I'd at least like a fair comparison side by side though..

Re:Show HN: Eclipse Deeplearning4j by stolsvik on Thursday October 05, 2017 @10:09AM (#15409275)
The Java-TF binding is so shallow it is absurd, IMHO. Basically, you loose everything you have when coding TF in Python, but yes - you can import models and weights into your JVM and do inference there. If you want to create a graph, then you will have to code on a very low level - most of the abstractions and tools are gone.