This repository contains a catalogue of application examples that have been optimised to run on Graphcore IPUs for both training and inference. Access reproducible code for a wide range of popular models covering NLP, Computer Vision, Speech, Multimodal, GNNs, AI for Simulation, Recommender Systems, and more. This includes a selection of models that achieve state of the art performance on IPUs, as well as code examples for self-learning.
Run models out-the-box on IPUs integrated with popular ML frameworks and libraries:

To see what's new and easily filter applications by domain and framework, please check out our Model Garden 🌷.
For more detailed benchmark information, please visit our Performance Results page.
The code presented here requires using Poplar SDK 3.1.x, and has been tested using Ubuntu 20.04 and Python 3.8
Please install and enable the Poplar SDK following the instructions in the Getting Started guide for your IPU system.
If you require POD128/256 setup and configuration for our applications, please contact our engineering support.
| Model | Domain | Type | Links |
|---|---|---|---|
| ResNet | Image Classification | Training & Inference | TensorFlow 2, PyTorch, PyTorch Lightning |
| ResNeXt | Image Classification | Training & Inference | PopART (Inference), PyTorch (Inference) |
| EfficientNet | Image Classification | Training & Inference | PyTorch, PyTorch Lightning |
| MobileNetv3 | Image Classification | Training & Inference | PyTorch |
| ViT(Vision Transformer) | Image Classification | Training | PyTorch, Hugging Face Optimum |
| DINO | Image Classification | Training | PyTorch |
| Swin | Image Classification | Training | PyTorch |
| MAE (Masked AutoEncoder) | Image Classification | Training | PyTorch |
| Yolov4-P5 | Object Detection | Inference | PyTorch |
| Faster RCNN | Object Detection | Training & Inference | PopART |
| EfficientDet | Object Detection | Inference | TensorFlow 2 |
| UNet (Medical) | Image segmentation | Training & Inference | TensorFlow 2 |
| Neural Image Fields | Neural Radiance Fields | Training | TensorFlow 2 |
| Model | Domain | Type | Links |
|---|---|---|---|
| BERT | NLP | Training & Inference | PyTorch , PopART, TensorFlow 2, PopXL, PaddlePaddle, Hugging Face Optimum |
| Packed BERT | NLP | Training | PyTorch, PopART |
| GPT2 | NLP | Training | PyTorch , Hugging Face Optimum |
| GPTJ | NLP | Training | PopXL |
| GPT3-2.7B | NLP | Training | PopXL |
| RoBERTa | NLP | Training | Hugging Face Optimum |
| DeBERTa | NLP | Training | Hugging Face Optimum |
| HuBERT | NLP | Training | Hugging Face Optimum |
| BART | NLP | Training | Hugging Face Optimum |
| T5 | NLP | Training | Hugging Face Optimum |
| Model | Domain | Type | Links |
|---|---|---|---|
| DeepVoice3 | TTS (TextToSpeech) | Training & Inference | PopART |
| FastSpeech2 | TTS(TextToSpeech) | Training & Inference | TensorFlow 2 |
| Fastpitch | TTS (TextToSpeech) | Training | PyTorch |
| Conformer | STT(SpeechToText) | Training & Inference | PopART, PyTorch |
| Transfomer Transducer | STT(SpeechToText) | Training & Inference | PopART |
| Wav2Vec2 | STT(SpeechToText) | Training | Hugging Face Optimum |
| Model | Domain | Type | Links |
|---|---|---|---|
| miniDALL-E | multimodal | Training | PyTorch |
| CLIP | multimodal | Training | PyTorch |
| LXMERT | multimodal | Training | Hugging Face Optimum |
| Frozen in time | multimodal | Training & Inference | PyTorch |
| ruDalle (Preview) | multimodal | Inference | PopXL |
| Model | Domain | Type | Links |
|---|---|---|---|
| MPNN (Message Passing Neural Networks) | GNN | Training & Inference | TensorFlow 2 |
| Spektral GNN library with QM9 | GNN | Training | TensorFlow 2 |
| Cluster GCN | GNN | Training & Inference | TensorFlow 2 |
| TGN (Temporal Graph Networks) | GNN | Training | PyTorch |
| Model | Domain | Type | Links |
|---|---|---|---|
| DeepDriveMD | Biology (Protein folding) | Training | TensorFlow 2 |
| Approximate Bayesian Computation (ABC) COVID-19 | Medical | Inference | TensorFlow 2 |
| Model | Domain | Type | Links |
|---|---|---|---|
| Block-Sparse library | Sparsity | Training & Inference | PopART |
| Model | Domain | Type | Links |
|---|---|---|---|
| Monte Carlo Ray Tracing | Graphics | Inference | Poplar |
To easily run the examples with tested and optimised configurations and to reproduce the performance shown on our performance results page, you can use the examples-utils benchmarking module, which comes with every example when you install its requirements. To use this simple, shared interface for almost any of the examples provided here, locate and look through the example's benchmarks.yml file and run:
python3 -m examples_utils benchmark --spec <path to benchmarks.yml file> --benchmark <name of benchmark>
For more information on using the examples-utils benchmarking module, please refer to the README.
Visualise your code's inner workings with a user-friendly, graphical interface to optimise your machine learning models.
Download PopVision to analyse IPU performance and utilisation.
If you encounter a problem or want to suggest an improvement to our examples please raise a Github issue or contact us at [email protected].
The utils/ folder contains utilities libraries and scripts that are used across the other code examples. This includes:
Unless otherwise specified by a LICENSE file in a subdirectory, the LICENSE referenced at the top level applies to the files in this repository.
This repository contains a catalogue of application examples that have been optimised to run on Graphcore IPUs for both training and inference. Access reproducible code for a wide range of popular models covering NLP, Computer Vision, Speech, Multimodal, GNNs, AI for Simulation, Recommender Systems, and more. This includes a selection of models that achieve state of the art performance on IPUs, as well as code examples for self-learning.
Run models out-the-box on IPUs integrated with popular ML frameworks and libraries:

To see what's new and easily filter applications by domain and framework, please check out our Model Garden 🌷.
For more detailed benchmark information, please visit our Performance Results page.
The code presented here requires using Poplar SDK 3.1.x, and has been tested using Ubuntu 20.04 and Python 3.8
Please install and enable the Poplar SDK following the instructions in the Getting Started guide for your IPU system.
If you require POD128/256 setup and configuration for our applications, please contact our engineering support.
| Model | Domain | Type | Links |
|---|---|---|---|
| ResNet | Image Classification | Training & Inference | TensorFlow 2, PyTorch, PyTorch Lightning |
| ResNeXt | Image Classification | Training & Inference | PopART (Inference), PyTorch (Inference) |
| EfficientNet | Image Classification | Training & Inference | PyTorch, PyTorch Lightning |
| MobileNetv3 | Image Classification | Training & Inference | PyTorch |
| ViT(Vision Transformer) | Image Classification | Training | PyTorch, Hugging Face Optimum |
| DINO | Image Classification | Training | PyTorch |
| Swin | Image Classification | Training | PyTorch |
| MAE (Masked AutoEncoder) | Image Classification | Training | PyTorch |
| Yolov4-P5 | Object Detection | Inference | PyTorch |
| Faster RCNN | Object Detection | Training & Inference | PopART |
| EfficientDet | Object Detection | Inference | TensorFlow 2 |
| UNet (Medical) | Image segmentation | Training & Inference | TensorFlow 2 |
| Neural Image Fields | Neural Radiance Fields | Training | TensorFlow 2 |
| Model | Domain | Type | Links |
|---|---|---|---|
| BERT | NLP | Training & Inference | PyTorch , PopART, TensorFlow 2, PopXL, PaddlePaddle, Hugging Face Optimum |
| Packed BERT | NLP | Training | PyTorch, PopART |
| GPT2 | NLP | Training | PyTorch , Hugging Face Optimum |
| GPTJ | NLP | Training | PopXL |
| GPT3-2.7B | NLP | Training | PopXL |
| RoBERTa | NLP | Training | Hugging Face Optimum |
| DeBERTa | NLP | Training | Hugging Face Optimum |
| HuBERT | NLP | Training | Hugging Face Optimum |
| BART | NLP | Training | Hugging Face Optimum |
| T5 | NLP | Training | Hugging Face Optimum |
| Model | Domain | Type | Links |
|---|---|---|---|
| DeepVoice3 | TTS (TextToSpeech) | Training & Inference | PopART |
| FastSpeech2 | TTS(TextToSpeech) | Training & Inference | TensorFlow 2 |
| Fastpitch | TTS (TextToSpeech) | Training | PyTorch |
| Conformer | STT(SpeechToText) | Training & Inference | PopART, PyTorch |
| Transfomer Transducer | STT(SpeechToText) | Training & Inference | PopART |
| Wav2Vec2 | STT(SpeechToText) | Training | Hugging Face Optimum |
| Model | Domain | Type | Links |
|---|---|---|---|
| miniDALL-E | multimodal | Training | PyTorch |
| CLIP | multimodal | Training | PyTorch |
| LXMERT | multimodal | Training | Hugging Face Optimum |
| Frozen in time | multimodal | Training & Inference | PyTorch |
| ruDalle (Preview) | multimodal | Inference | PopXL |
| Model | Domain | Type | Links |
|---|---|---|---|
| MPNN (Message Passing Neural Networks) | GNN | Training & Inference | TensorFlow 2 |
| Spektral GNN library with QM9 | GNN | Training | TensorFlow 2 |
| Cluster GCN | GNN | Training & Inference | TensorFlow 2 |
| TGN (Temporal Graph Networks) | GNN | Training | PyTorch |
| Model | Domain | Type | Links |
|---|---|---|---|
| DeepDriveMD | Biology (Protein folding) | Training | TensorFlow 2 |
| Approximate Bayesian Computation (ABC) COVID-19 | Medical | Inference | TensorFlow 2 |
| Model | Domain | Type | Links |
|---|---|---|---|
| Block-Sparse library | Sparsity | Training & Inference | PopART |
| Model | Domain | Type | Links |
|---|---|---|---|
| Monte Carlo Ray Tracing | Graphics | Inference | Poplar |
To easily run the examples with tested and optimised configurations and to reproduce the performance shown on our performance results page, you can use the examples-utils benchmarking module, which comes with every example when you install its requirements. To use this simple, shared interface for almost any of the examples provided here, locate and look through the example's benchmarks.yml file and run:
python3 -m examples_utils benchmark --spec <path to benchmarks.yml file> --benchmark <name of benchmark>
For more information on using the examples-utils benchmarking module, please refer to the README.
Visualise your code's inner workings with a user-friendly, graphical interface to optimise your machine learning models.
Download PopVision to analyse IPU performance and utilisation.
If you encounter a problem or want to suggest an improvement to our examples please raise a Github issue or contact us at [email protected].
The utils/ folder contains utilities libraries and scripts that are used across the other code examples. This includes:
Unless otherwise specified by a LICENSE file in a subdirectory, the LICENSE referenced at the top level applies to the files in this repository.