Rust ML with a side of yak shaving
A modular machine-learning stack that makes you earn every FLOP through manual dependency wrangling.

What it does
Juice is a Rust workspace bundling a machine-learning framework, a math abstraction layer called Coaster, data-preprocessing via Greenglas, and an MNIST example CLI. It targets hackers who want to train neural networks without leaving the Rust ecosystem.
The interesting bit
The project chases hardware agnosticism—CUDA, OpenCL, and native BLAS backends—through a single abstraction. That ambition is admirable; the reality is a build process that reads like a systems-integration exam. Cap’n’Proto for model serialization is a pragmatic, if unfashionable, choice.
Key highlights
- Modular architecture: juice, coaster, coaster-nn, coaster-blas, greenglas, and juice-examples as separate crates
- CUDA 11 support with cuDNN and CUBLAS (NVIDIA hardware required to run)
- OpenCL backend exists but is marked WIP with no documentation yet
- Native CPU backend via OpenBLAS or BLAS, with pkg-config or manual path overrides
- Model weights serialized through Cap’n’Proto
Caveats
- CUDA and cuDNN are required just to build the examples, not merely to use GPU acceleration
- OpenCL backend is undocumented and unfinished
- ArchLinux users hit a known OpenBLAS packaging snag requiring an AUR replacement
- Supported CUDA version (11) is several generations behind current
Verdict
Worth a look if you’re committed to Rust for ML and enjoy debugging linker paths. Everyone else should probably check where tch-rs or burn are these days.