Logo
PyTorch for the IPU: User Guide
Version: 2.1.0
  • 1. Introduction
    • 1.1. Data batching
    • 1.2. Parallel and Distributed execution
    • 1.3. Constraints
    • 1.4. Other resources
  • 2. Installation
    • 2.1. Version compatibility
    • 2.2. Using a Python virtual environment
    • 2.3. Setting the environment variables
    • 2.4. Validating the setup
  • 3. From PyTorch to PopTorch
    • 3.1. Preparing your data
    • 3.2. Creating your model
      • 3.2.1. Training
      • 3.2.2. Inference
    • 3.3. The training loop
    • 3.4. Multiple/custom losses
    • 3.5. Optimizers
    • 3.6. Going further
  • 4. Features
    • 4.1. Options
      • 4.1.1. Setting options via config file
    • 4.2. Model wrapping functions
      • 4.2.1. poptorch.trainingModel
      • 4.2.2. poptorch.inferenceModel
      • 4.2.3. poptorch.PoplarExecutor
      • 4.2.4. poptorch.isRunningOnIpu
    • 4.3. Execution strategies
      • 4.3.1. Annotation tools
        • poptorch.Block, poptorch.BeginBlock and poptorch.BlockFunction
        • poptorch.Stage and poptorch.AutoStage
          • poptorch.Stage
          • poptorch.AutoStage
        • poptorch.Phase
        • Advanced annotation with strings
      • 4.3.2. Parallel execution strategies
        • poptorch.ShardedExecution
        • poptorch.PipelinedExecution
        • Phased execution
          • poptorch.SerialPhasedExecution
          • poptorch.ParallelPhasedExecution
          • poptorch.Liveness
    • 4.4. Optimizers
      • 4.4.1. Loss scaling
      • 4.4.2. Velocity scaling (SGD combined variant only)
      • 4.4.3. Accumulation types
      • 4.4.4. Constant attributes
    • 4.5. PopTorch ops
      • 4.5.1. poptorch.ctc_beam_search_decoder
      • 4.5.2. poptorch.ipu_print_tensor
      • 4.5.3. poptorch.identity_loss
      • 4.5.4. poptorch.MultiConv
      • 4.5.5. poptorch.nop
      • 4.5.6. poptorch.serializedMatMul
      • 4.5.7. poptorch.set_available_memory
      • 4.5.8. Miscellaneous functions
    • 4.6. Half / float16 support
    • 4.7. Automatic mixed-precision casting
      • 4.7.1. Custom casting policies
    • 4.8. Creating custom ops
      • 4.8.1. Implementing the custom op
      • 4.8.2. Make the op available to PyTorch
      • 4.8.3. Passing attributes to the custom op
    • 4.9. Profiling
    • 4.10. Precompilation and caching
      • 4.10.1. Caching
      • 4.10.2. Precompilation
    • 4.11. Environment variables
      • 4.11.1. Logging level
      • 4.11.2. Profiling
      • 4.11.3. IPU Model
      • 4.11.4. Wait for an IPU to become available
      • 4.11.5. Enable executable caching
  • 5. Efficient data batching
    • 5.1. poptorch.DataLoader
    • 5.2. poptorch.AsynchronousDataAccessor
      • 5.2.1. Rebatching iterable datasets
    • 5.3. poptorch.Options.deviceIterations
    • 5.4. poptorch.Options.replicationFactor
    • 5.5. poptorch.Options.Training.gradientAccumulation
    • 5.6. poptorch.Options.Training.anchorReturnType
  • 6. IPU supported operations
    • 6.1. Torch operations
      • 6.1.1. Tensor operations
        • Creation ops
        • Indexing, slicing, joining and mutating ops
        • Random samplers
      • 6.1.2. Math operations
        • Pointwise ops
        • Reduction ops
        • Comparison ops
        • Other ops
        • BLAS and LAPACK Operations
    • 6.2. Torch.nn operations
      • 6.2.1. Containers
      • 6.2.2. Convolution layers
      • 6.2.3. Pooling layers
      • 6.2.4. Padding layers
      • 6.2.5. Activations
      • 6.2.6. Normalization layers
      • 6.2.7. Recurrent layers
      • 6.2.8. Linear layers
      • 6.2.9. Dropout
      • 6.2.10. Sparse layers
      • 6.2.11. Loss functions
      • 6.2.12. Vision Layers
    • 6.3. Float 16 operations
      • 6.3.1. Casting
      • 6.3.2. Creation functions
      • 6.3.3. Normalization
  • 7. Debugging your model
    • 7.1. Inspecting tensors
    • 7.2. Anchoring tensors
    • 7.3. Retrieving tensors
  • 8. Examples
    • 8.1. MNIST example
  • 9. Experimental features
    • 9.1. Distributed execution without PopRun
    • 9.2. torch.nn.CTCLoss
  • 10. Reference
    • 10.1. Options
    • 10.2. Helpers
    • 10.3. PopTorch Ops
    • 10.4. Model wrapping functions
    • 10.5. Parallel execution
    • 10.6. Optimizers
    • 10.7. Data batching
    • 10.8. Enumerations
    • 10.9. Autocasting
  • 11. Index
  • 12. Trademarks & copyright
  • 13. Changelog
    • 13.1. v2.1 (Poplar SDK 2.1)
      • 13.1.1. New features
      • 13.1.2. API changes
      • 13.1.3. Known issues
    • 13.2. v2.0 (Poplar SDK 2.0)
      • 13.2.1. New features
      • 13.2.2. API changes
    • 13.3. v1.0 (Poplar SDK 1.4)
      • 13.3.1. New features
      • 13.3.2. Known issues
    • 13.4. v0.1 (Poplar SDK 1.3)
      • 13.4.1. New features
PyTorch for the IPU: User Guide

12. Trademarks & copyright

Graphcore® and Poplar® are registered trademarks of Graphcore Ltd.

AI-Float™, Colossus™, Exchange Memory™, Graphcloud™, In-Processor-Memory™, IPU-Core™, IPU-Exchange™, IPU-Fabric™, IPU-Link™, IPU-M2000™, IPU-Machine™, IPU-POD™, IPU-Tile™, PopART™, PopLibs™, PopVision™, PopTorch™, Streaming Memory™ and Virtual-IPU™ are trademarks of Graphcore Ltd.

All other trademarks are the property of their respective owners.

© Copyright 2016-2021, Graphcore Ltd.

This software is made available under the terms of the Graphcore End User License Agreement (EULA). Please ensure you have read and accept the terms of the license before using the software.

Previous Next

Revision f81dea1a.