Graphcore releases Poplar SDK 1.3 version

Graphcore releases new Poplar SDK 1.3

Written by Laurence Herbert

Posted Oct 05, 2020

Our Poplar software stack lets developers seamlessly integrate Graphcore IPUs into their machine intelligence workflow. As of last week, it has been one year since Poplar’s first production release in September 2019 and we’ve certainly come a long way in 12 months. We now have a community of over 1000 users working with Graphcore technology. Our software stack and IPU systems are being used by our customers for AI applications today and, crucially, enable innovators to explore the applications of tomorrow.

We have moved forward very rapidly with Poplar’s functionality and capability. Continuously iterating our SDK since Poplar 1.0, we’ve listened to customer requests and added in the features, optimisations and integrations that matter to them:

  • We’ve open sourced our Poplar Libraries (PopLibs), giving developers access to 50+ optimised functions for common machine learning models and 750 high performance compute elements to support new approaches to machine intelligence
  • We have also open sourced our TensorFlow and PopART APIs, giving developers insight into how frameworks integrate with IPU hardware platforms to inform model optimisation
  • We’ve increased the number of machine learning frameworks and high-level formats we support including TensorFlow 1 and 2, PyTorch, Keras and ONNX
  • We've introduced pre-built Docker containers with Poplar SDK, tools and frameworks images to get up and running fast
  • We're providing a growing set of benchmark code examples, demo code examples and tutorials on GitHub, enabling developers to get started quickly and easily with IPUs and to replicate our performance benchmarks
  • We’ve introduced our performance analysis and debugging tool, the PopVisionTM Graph Analyser, which allows all users of Graphcore technology to see how their application performs right down to the hardware instruction level

Along with this we have invested in bringing world class developer resources to our users to make the IPU more accessible via both the Graphcore website and our GitHub site.

Around 900 developers now visit our Developer Portal every month. This Developer resources hub provides all the information required to build next generation machine intelligence applications with the Poplar SDK along with tutorials, training videos, user guides and documentation. Our support channels continue to grow along with our community. Almost 800 developers have engaged with “IPU” tag questions on Stack Overflow and we continue to expand our public repositories on GitHub. 

At Graphcore we are committed to building the simplest and easiest to use platform for machine intelligence applications and will continue to enhance our developer resources.

Over the past year, we’ve also seen some impressive results and academic research conducted on IPUs. We’re lucky to have a strong community of innovators, researchers and engineers who have been working with IPU technology to accelerate their AI projects and explore new approaches to machine intelligence. A few highlights of their outstanding work with IPUs in 2020 include Qwant’s paper on image-based deep learning, Microsoft’s medical imaging accelerations, Imperial College London’s Spatial AI and robotics paper and, most recently, the University of Bristol’s paper on particle physics HPC challenges. With many more research papers and IPU projects in the works, we’re looking forward to seeing what else the community can achieve with IPU technology.

What’s New in Poplar SDK 1.3?

Our latest release, Poplar 1.3, includes new optimisations and improvements to help developers run their models faster and more efficiently. For this iteration, we’ve worked to unify machine learning frameworks and to enhance the performance of large models. Below is a selection of key features included in Poplar SDK 1.3.

PyTorch for IPU

As part of our program to introduce fully integrated IPU support for PyTorch we introduced the PyTorch for IPU preview with Poplar SDK 1.2 to actively seek feedback from customers. With the 1.3 Poplar SDK we have continued this development and introduce the second preview release. Working with customers and users, we have improved the functionality, model support and application performance as we lead up to a production release of PyTorch for IPU in Q4.

This update contains many functional and performance improvements:

  • Updates to support PyTorch version 1.6
  • Model and data parallel support including model replication
  • Support for 1D, 2D and 3D convolution operators
  • Support for comparison operators
  • Support for random sampling operators
  • Support for FP32.32, FP16.32 and FP16.16 precision
  • Support for Float32, Float16, Int32, Int64 and Bool data types
  • Optimised host data-loader support

We look forward to further engagement with our growing customer base to enable them to take advantage of PyTorch for IPU.

Improved Exchange Memory Support

Exchange MemoryTM allows the efficient use of large attached memory to store model state and stream the data into the IPU at execution time to complement the large amounts of In-Processor Memory on the IPU itself. This enables our machine learning frameworks to intelligently place data in the correct location for efficient execution even when running very large models on IPU platforms.

With this latest SDK release, we further extend the ability to keep optimiser state, weights and activations present in Exchange Memory and stream this data into the IPU when required. This smart placement of data is fully supported by the Poplar graph compiler which orchestrates the required data movement and optimises the transfers to allow overlapping of computation and communication where possible.

Exchange Memory support is available in TensorFlow and PopART in Poplar SDK 1.3 and fully supported on all of our hardware systems.

Enhanced Keras Support in TensorFlow 2

In the 1.2 Poplar SDK release, we introduced support for the Keras sequential API and extended its capabilities for IPU. With the 1.3 Poplar SDK we have enabled the Keras Functional API, further enhancing its ease of use for our customers, many of whom have requested this support when bringing their applications to target Graphcore platforms.

The Keras Functional API is designed to provide a more flexible model building capability in TensorFlow, making TensorFlow 2 for IPU even easier to use. 

PopVision Graph Analyser 2.1

Our PopVision Graph Analyser gives developers detailed insight into how their applications utilise and perform on the IPU. More contextual information has been added to each part of the program, including enhanced report comparison and new features including memory usage per IPU, a tile memory map view, and liveness per IPU and per tile. You can read more details about PopVision 2.1 in our latest blog.

Getting started with Poplar and the IPU

Poplar makes it easy to exploit maximum performance from the IPU, and accelerate new and advanced machine learning models. If you’re interested in accessing more resources about programming the IPU with Poplar, we recommend visiting our Developer Portal. It contains extensive Poplar SDK documentation, tutorials, video walkthroughs and examples of how to use IPUs in applications, as well as links to our Support channels and GitHub.

Learn more about the Poplar SDK

Written by Laurence Herbert

Posted Oct 05, 2020