Bristol startup GraphCore has revealed some of its technology with a stunning look into the operation of machine learning algorithms.

It has developed a software framework called Poplar that can visualise these algorithms in operation. Recent machine learning frameworks such as TensorFlow or MxNet use the concept of a computational graph, made up of vertices (the equivalent of neurons in the brain) for the compute elements, connected by edges (the synapses), which describe the communication paths between vertices.

The company is developing a chip, the Intelligent Processing Unit (IPU), to manipulate and process these graphs using Poplar. It is written in the standard C++ programming language but separates the graph-based machine learning development process from the underlying graph processing IPU hardware.

Open source support

GraphCore is building a set of open source libraries for Poplar so that applications written in standard machine learning frameworks, like TensorFlow and MXNet, will work out of the box on an IPU. Poplar has a full set of debugging and analysis tools to help tune performance and a C++ and Python interface for application development to help developers to dig a bit deeper.

“The knowledge models that we are trying to build and manipulate in machine intelligence systems are most naturally expressed as graphs,” said Nigel Toon, CEO of GraphCore. “These graphs expose huge parallelism in both data and computation that can be exploited by a highly parallel, graph focussed processor.”

Poplar also includes a graph compiler to translate the standard operations used by machine learning frameworks into highly optimised application code for the IPU. The graph compiler builds a representation of the computational graph to be scheduled and deployed across one or many IPU devices. The compiler can also display this computational graph, creating the equivalent of an MRI image of a brain.

For example, Resnet is a Deep Neural Network (DNN) developed by Microsoft in 2015 for image classification that has been implemented in Poplar. The image above shows a ResNet with 50 layers that would be used to classify images after the network has been trained, converted into a computational graph of 3.22 million vertices and 6.21 million edges. The vertices of the graph represent computation processes and the edges represent communication between processes. The layers in the graph are labelled with the corresponding layers from the original technical paper. The clearly visible clustering is the result of intensive communication between processes in each layer of the network, with lighter communication between layers.

There are more examples of other algorithms on this GraphCore blog.