4 ms·
And also removing all of the overhead of the machine learning abstraction. Although I am skeptical that anyone would ever actually do that
by throwawayendy 9y ago
And also removing all of the overhead of the machine learning abstraction. Although I am skeptical that anyone would ever actually do that
- quadrature 9y agoNot exactly sure what you mean. After the model is trained there isn't much "machine learning abstraction". you can serve the model using tensorflow serving using exported parameters. Its exactly what you want for serving the model.
- danieldk 9y agoI used to train my parser (before switching to Tensorflow) using Caffe, dumped the parameters using a small program, and loaded them up in Go arrays slices and applied the network using simple C BLAS operations. This works fine, especially when you are using simpler networks. As a bonus, you don't have the overhead of Tensorflow session runs. It does become a bit of a drag when you are building more complex networks (e.g. with multiple RNN layers, batch normalization, etc.). In that case there are two straightforward options for Rust. There is a Tensorflow Rust binding against the tensorflow C API [1] with which you can just load and run a frozen Tensorflow graph. This is the approach that I am currently using, though I am running graphs on workstations/servers. Another option is compiling the graph with Tensorflow's XLA AOT compilation, which compiles the network to C++ classes (that you could bind from Rust). [1] https://github.com/tensorflow/rust https://github.com/tensorflow/rust
- albi_lander 9y agoThere seems to be a third option provided by someone, kali, working at Snips: https://github.com/kali/tensorflow-deploy-rust https://github.com/kali/tensorflow-deploy-rust
- danieldk 9y agoThis only supports a small subset of ops. It is pretty much corresponds to the first option that I mentioned - train with Tensorflow, extract the parameters and provide implemenations of ops in your native language.