top | item 15519187

(no title)

aray | 8 years ago

Congrats! Is there a short summary about how your approach is different from existing stacks (like tensorflow, or nnvm)?

discuss

order

hedgehog|8 years ago

Thanks! Our functional goals are similar to NNVM (deep learning for all devices) but I don't know much about their technical approach. I think some of the developers are here in Seattle actually so hopefully we'll meet them at some point.

As far as differences vs TensorFlow, Keras, etc, we're not aiming to replace the developer-facing Python APIs. You can run Keras on top of PlaidML now and we're planning to add compatibility for TensorFlow and other frameworks as well. The portability (once we have Mac/Win) will help students get started quickly. It's much easier to write kernels in our Tile language than raw OpenCL or CUDA so we think this will help speed up research as well. On the throughput side we already outrun cuDNN in some cases and it's likely we can give Volta users a boost once we add support for its tensor unit.

b33pr|8 years ago

To expand on this a bit, NNVM is mostly a graph serialization format and graph optimizer with a cuda/cudnn (and now TVM) backend. In this NNVM is very similar to XLA. Our approach handles both full graph optimization (though we have a lot of work to do there) and kernel creation and optimization through an intermediate language called Tile. TVM seems somewhat derivative of our approach, though it lacks a reasonable mechanism for optimizing kernels.

PlaidML and Tile are able to create optimal kernels for just about any architecture. This approach reduces dependencies and ensure that new hardware will just work.

We intend to have NNVM and Tensorflow backends in the future. The keras backend is only 2000 lines of code (thanks to tile).