4 ms·
Anyone who loves the Lisp concept of "code is data" will love TensorFlow. Instead of coding imperatively, you write code to build a computation graph. The grap
by rryan 9y ago
Anyone who loves the Lisp concept of "code is data" will love TensorFlow.
Instead of coding imperatively, you write code to build a computation graph. The graph is a data structure that fully describes the computation you want to perform (e.g. training or inference of a machine learning model).
* That graph can be executed immediately, or stored for later.
* Since it's a serializable data structure, you can version it quite easily.
* You can deploy it to production without production having to depend on ANY of the code that built the graph, only the runtime necessary to execute it.
* You can run a compiler on it (such as XLA or TensorFlow's built in graph rewriter) to produce a more efficient version of the graph.
* In some circumstances, you can even compile the runtime away, producing a single .h/.o that you can link directly into e.g. a mobile app.
It's a beautiful and highly useful abstraction that allows TensorFlow to have both a great development and production story in one framework. Most frameworks only have a good story for either development or production.
If you are a machine learning researcher who doesn't need or care about deploying your work (i.e. mostly publishing papers), you may not want the overhead of having to deal with building a graph, and may prefer something that computes imperatively like PyTorch. If you are building products / services that use ML and developing/training your own models (as opposed to taking pre-trained models and using them), there is really no credible competitor to TensorFlow.
Disclaimer: I work at Google. I spend all day writing TensorFlow models. I'm not on the TensorFlow team nor do I speak for them or Google.
- fnl 9y ago> If you are building products / services that use ML and developing/training your own models (as opposed to taking pre-trained models and using them), there is really no credible competitor to TensorFlow. MXNet has amalgamation http://mxnet.io/how_to/smart_device.html#amalgamation-making-the-whole-system-a-single-file http://mxnet.io/how_to/smart_device.html#amalgamation-making... CNTK provides a managed ("evaluation") library solution to deploy your models and embed them in C, C++, C#, Python, and even an experimental Java version. https://docs.microsoft.com/en-us/cognitive-toolkit/CNTK-Evaluation-Overview https://docs.microsoft.com/en-us/cognitive-toolkit/CNTK-Eval... How's that not competitive to TF? MXNet's approach is a bit unwieldy, yes, but seems easily streamlined. And CNTK's deployment method looks perfectly fine. Note I haven't checked other DL libs, but it seems unreasonable that Microsoft and Amazon have no "competitive" solution for deployment.
- fnl 9y agoI also completely forgot about Caffe(2), which I recall to always have been the most easily deployable library, and possibly DL4J. http://www.cio.com/article/3193689/artificial-intelligence/which-deep-learning-network-is-best-for-you.html http://www.cio.com/article/3193689/artificial-intelligence/w...
- agibsonccc 9y agoDisclaimer: I built dl4j and will be highly biased. A lot of what we see is deployment to production. We are embedded in a few apache projects now as well as other "enterprise" suites like knime. The reason for this is simplicity and integration with the JVM as well as supplemental addons for things like ETL (see: jdbc, hdfs, kafka,spark,..) as well as what I think is the easiest way to do both multi threaded model serving and data parallel training (parallelwrapper and parallelinfernece). We also made things tunable from the JVM (eg: You can configure cuda, native cpu variables, blas libraries,..) from the JVM. We import python models as well. We aren't heavily used in the research world but are used at scale (especially in china). Something we will have coming up is also the ability to import tensorflow models (right now we have keras 1 and need to add keras 2). The only thing we are missing and finishing out now (among other projects) is autodiff. We will have a lot of the same properties as the other "computation graph" frameworks like TF,theano,pytorch. I'd also note we have a chainer/pytorch like cmpgraph api built in to our neural net dsl already. Next release we will also have our new parameter server using aeron. Aeron is miles ahead of GRPC(https://github.com/benalexau/rpc-bench https://github.com/benalexau/rpc-bench) being used in the low latency/quant world as well as being the default transport for akka now.
- deleted 9y ago[deleted]
- deleted 9y ago[deleted]