I’m not an authority on ML, but I think I’m a proficient Julia user and decent Rust user, so take this with a grain of salt:
TL;DR: Rust had too much on its plate and couldn’t focus in linear algebra foundations - Julia could. There’s capable people on both sides but Julia seems more promising today, albeit nothing is certain.
I think Julia will win out because of the speed of development and mindshare capture, but it depends.
Other people have already talked about the Julia pros - I will mention Rust applications.
There’s the Are we learning yet site, which talks what specific needs in the Rust system aren’t met yet. You should research there and draw your own conclusions about what its promise and current state is.
As interesting asides, there’s some basic statistical applications which could count as ML and are great to do in Rust because of the ease of deployment, see for example Taking ML to production in Rust with a 25x speedup. I don’t think that link says anything more than “Python is not a good tool for this”, which we already know, but it will be very interesting to see how these small deployments can be combined with web assembly for blazing fast performance and minimal overhead.
It’s not that Julia can’t have that synergy, it’s that it hasn’t been a focus of the community yet.
On the flip side, the
ndarray crate in Rust is what offers the most complete linear algebra experience in Rust land. To be very blunt, it doesn’t look like math, and I don’t see armies of data scientists who are used to SciKitLearn or TensorFlow flock to learn Rust for a couple of months to get that sort of speedup.
ndarray does not have support yet for:
- sparse matrices
- block matrices
- diagonal matrices
- and many other types of structured matrices
If you’re a Julia lover, don’t read the next spoiler:
Haunting Rust internals detail
They don't even have matrices in the stdlib. Just vectors :frowning:
which I think is just a showstopper for many, let alone leveraging AD and GPUs atop that. Composing those features in Julia is just our bread and butter; in Rust that’s a hefty engineering effort.
That said, this was the best introduction tutorial I could find and found it quite challenging still just because of Rust - YMMV.
But let’s be clear - no one can predict the future, and I’ll be glad to be corrected. There’s amazing DL applications happening with Rust for sure.
Time will tell!
Maybe small statistical apps deployed with web assembly will rule the day. Maybe uber composable Julia pipelines will. Maybe neither, or both in different niches. I’m open to learning from them and seeing what the future holds.