Paper review: TensorFlow, Machine Learning on Heterogeneous Distributed Systems
muratbuffalo.blogspot.com
muratbuffalo.blogspot.com
Maui is a system for offloading of smartphone code execution onto backend servers at method-granularity. The system relies on the ability of managed code environment (.NET CLR) to be run on different platforms. By introducing this automatic offloading framework, Maui enables applications that exceed memory/computation limits to run on smartphones in a battery- & bandwidth-efficient manner.
TensorFlow enables cloud backend support for machine learning to the private/device-level machine learning going on in your smartphone. It doesn't make sense for a power-hungry entire TensorFlow program to run on your wimpy smartphone. Your smartphone will be running only certain TensorFlow nodes and modules, the rest of the TensorFlow graph will be running on the Google cloud backend. Such a setup is also great for preserving privacy of your phone while still enabling machine learned insights on your Android.
I don't see any real evidence of this in the paper, code or examples. Certainly running it it doesn't feel like it is designed to operate over high-latency connections like that.
Instead, I think TensorFlow is deigned to work on mobile so that it is comparatively easy for a pre-trained model to be deployed and run on a constrained mobile environment.
That's what Google did for the Android voice recognition model (although that was pre-TensorFlow), and they have released a pre-trained image classification model that runs on TensorFlow.
It runs the network locally on the device. It's fast enough.
Phones are increasingly powerful, prevalent, and for a lot of people, their primary computer. Being able to use the same code, data, and test cases for every platform you want to train or run your model on is good from a software engineering perspective. Don't underestimate the challenges of software eng. when ML is involved -- see, for example, http://icml.cc/2015/invited/LeonBottouICML2015.pdf
The flow graphs look very similar to a talk given by Dick Sites [2, 3], where he talks about performance monitoring across the Google fleet. Highly recommend watching this if you are at all interested in performance monitoring (he has a clear passion and deep understanding in this area). What's really interesting about this talk, is that it appears Google engineers do not need to bake this into their distributed applications, it works at the OS level, along with supporting tracing systems (tagging, log collections, aggregation into a central tool, analytics, etc [4 - Dapper]). So, you get it for free basically if you are running in the Google environment. Compare this with something you want to debug outside of Google, you need to add all types of debug bits into your code, and then do the analysis in your own little silo. Very thought provoking idea. I think this is why they are not releasing it. This is a guess based off a few things I've read though. So, I could be wrong.
ps - if you want to get really crazy about this, you might read into this that they "would like to" or "have built" their own CPUs, to address some of the limitations they see from the talk.
[1] https://en.wikipedia.org/wiki/Electroencephalography
[2] http://www.pdl.cmu.edu/SDI/2015/slides/DatacenterComputers.p...
[3] https://vimeo.com/121396406
[4] http://static.googleusercontent.com/media/research.google.co...
1. Their stated reason.
2. Branding. Google likes to show off advanced products that aren't fully developed in order to elevate their brand and recruit engineers (even though most do not work on such products). Project Soli is the best example of this: the product video shows off a small radar and some range-doppler video, but it does not show complicated gesture recognition capabilities, which is the hardest part.
3. Free labor. Deep learning algorithms require a ton of data in order to not overfit to the training data. Google has tons of data while academic researchers do not. If Google gets researchers to develop new algorithms that work well on smaller amounts of data and the researchers develop their algorithms in TensorFlow, then Google can easily incorporate the work into their own products and make it better.
There are many more important thing holding up wider adoption before the lack of distributed support becomes a issue: Windows support, how hard it is to get working on ARM, etc etc.
TensorFlow is it's own thing.
Project Soli doesn't seem remotely analogous. One project is an open source library that is being run as an open source library and works today, but (so far) holds back a killer feature. The other is a product concept video.
Even when code is published, it's a few hours work to copy a (say) Torch based architecture to TensorFlow - indeed most platforms import (and export?) Caffe-style (ProtoBuf based) model descriptions.
[1] http://fossbytes.com/iphone-6s-is-more-powerful-than-the-new...