XNOR.ai frees AI from the prison of the supercomputer
techcrunch.com
techcrunch.com
Example: https://www.tensorflow.org/mobile/
Cursory look suggests they quantize both the weights and functions during classification on the smart phone and during the forwards and backwards pass during training. But you still have to use a continuous version of your logic gate to get an error gradient during training, so I'm guessing they still do the training on "supercomputers" (a desktop with a gpu really).
The main difference is that XNOR-Net uses 1 bit quantized weights and XNOR+popcount to approximate the dot product of convolution, which can be implemented very efficiently by using 64-bit arithmetic instructions on a CPU to operate over 64 1-bit components in parallel. [1]
TensorFlow's optimization is also using discretized weights, but AFAIK targeted at 8-bit quantized weights. [2]
[0] https://github.com/tensorflow/tensorflow/issues/1592
[1] https://arxiv.org/pdf/1603.05279v4.pdf
[2] https://petewarden.com/2015/05/23/why-are-eight-bits-enough-...
That's a goodbye for anyone wanting to build anything interesting in the future with it. Such a pity. I couldn't find anywhere any kind of "commercial license".
I do a lot of Open Source, so I know the troubles associated with GPL and the like. This is a lot more extreme than that.
If you were to make a tool based on this a lot of your potential userbase dissapears. Like most of the people.
Why? For using it, while I mostly use Open Source, learning/mastering a tool only to discard it and then learn/master a different tool that does the same for a commercial application is a HUGE waste of time.
If there was a way (2 licenses) to use this as commercial software then it'd be a different story.
PS: I'm the author of legally and I made it for this reason: https://npmjs.com/package/legally
This is a good writeup on mobile/low power devices, lower precision arithmetic, compression, sparsity, hogwild type "naive" assumptions etc https://arxiv.org/abs/1612.07625
Unless you're talking about privacy, there I agree, I would much rather my phone do voice recognition locally than send it to google servers (where it'll be stored [0] so they can train better models later). That's a bit of a catch-22 though, if people don't need to send you their data to use your model then you won't get data for training your model.
They have real speed improvements by using 1-bit quantitzed weights and then running operations using 32-bit or 64-bit bitfields which happen to use very few instructions/cycles on modern CPUS: https://github.com/allenai/XNOR-Net