Part of Graphcore’s ethos is about putting power in the hands of AI developers and allowing them to innovate. That’s true of the hardware we make, and also of our software. When we first started building the Poplar software stack, we always planned to open source our Poplar Graph Libraries (PopLibs™) to allow the entire developer community to modify and enhance these powerful tools. We’re delighted to announce that PopLibs™, PopART and TensorFlow for IPU are now fully open source and available on GitHub.
For a long time, developers have been telling us that the closed source approach taken by other AI hardware makers hampers their work. We have responded by making PopLibs, PopART and our TensorFlow for IPU source code available to Graphcore customers to help build a strong community around Poplar.
Open sourcing is part of a wider goal for our software: we want users to understand how and why Poplar works. We use our own Poplar tools internally to build our libraries, so there are no hidden intermediate layers between a user and the hardware as in black box proprietary software systems. Developers should be able to easily see and explore how everything functions.
Graphcore PopLibs libraries were designed from the outset to make it simple to build and execute applications on the IPU. PopLibs are standard libraries that support application library interfaces used in common machine intelligence framework operations. Each of the 50+ highly optimised functions in PopLibs works by combining building blocks from an extensive library of over 750 high performance compute elements, which are ready to use out of the box. In PopLibs, it is straightforward to modify existing functions or write custom vertices, which enables faster research and algorithmic exploration.
The AI community is built on openness and knowledge exchange. As code is publicly shared, iterated upon and improved quickly by commercial and academic AI research teams, breakthroughs can happen much faster. Poplar has been designed to let users achieve things that are either extremely difficult or impossible to do on other processors. A fundamental feature of the software stack is that developers can easily extend and prototype new solutions. PopLibs library building blocks can be used to create new models, allowing innovators to realise their ideas and research.
In addition to new breakthroughs, improving the performance of existing models is also key to forwarding research in machine intelligence. Open-source solutions give researchers the option to customise their machine intelligence development without needing to replace their current workflows with an end-to-end system. With PopLibs, high-level frameworks can be used to execute application-level functions such as populating tensors with random numbers, building graphs on IPU and performing elementwise operations on tensor data. There is much more flexibility for adding new machine learning layer types into existing models with the IPU than with alternative platforms. New layer types can be built from scratch right down to the individual parallel vertex operation, incorporated into new library functions, built with our graph compiler and then included in models designed in TensorFlow, PyTorch or PopART. The Poplar SDK supports adding custom layers to these high-level frameworks. In fact, this is what we use ourselves at Graphcore to optimise model performance. The ability to augment code written in machine learning frameworks allows innovation even within a single layer of a model.
Whether you prefer to program close to the metal or using a standard framework, we look forward to hearing about your experiences with our newly open sourced libraries and thoughts on future improvements. With input from an engaged community, our open source Poplar libraries will increase efficiency and collaboration among academic and industry researchers to advance state of the art machine intelligence across multiple fields.
Learn more about Poplar and PopLibs
All of the software and documentation for PopLibs, PopART and TensorFlow for IPU are now open source on GitHub. Our code is public and open for code contributions in accordance with our new contributors license agreement (CLA) and the open source license for each repository.
Our Developer Portal provides a deeper introduction to Poplar and PopLibs, including a user guide, detailed tutorials, documentation and how-to videos. Details on our latest new features and optimisations can be found in our Poplar SDK 1.2 blog.