Poptorch Versions Save

PyTorch interface for the IPU

sdk/poptorch/3.1.0

1 year ago

New features

  • Upgraded from PyTorch 1.10 to 1.13.
  • Added support for variables being sharded across replicas.
  • poptorch.set_overlap_for_input and poptorch.set_overlap_for_output can now be applied to tuples, lists, and dicts of tensors.
  • PopTorch now catches aten::lstm directly when compiling with dispatch for PopART, allowing set_available_memory to work with it.
  • Added support for aten::index_fill_.int_Scalar.
  • Added support for dict inputs.
  • Added support for torch.count_nonzero.
  • Support the tanh approximate for GELU.
  • Added support for torch.scatter_reduce operation.

Bug Fixes

  • Fixed clamp_max in cases where the max is large.
  • Fixed shape inference failing on PopART for argsort, GRU and norm ops.
  • Fixed shape inference for strided slices.
  • Fixed casting of groupnorm.
  • Fixed an issue where the alpha and beta arguments were flipped for torch.addmm.
  • Fixed a "not representable" error when using BCEWithLogitsLoss with a dtype of half.
  • Fixed intermittent compilation hang caused by tqdm (progress bar).

Other improvements

  • Fixed in-place modification of slice regions.
  • Documentation typo fixes and clarifications.
  • Improved error message when encountering CPU tensors.
  • Use the IPU DispatchKey instead of the XLA DispatchKey, which means that error messages will now mention IPU rather XLA.

Known issues

None

Compatibility changes

  • Dropped support for Python 3.6 (in order to upgrade to PyTorch 1.13).
  • Removed support for torch.jit.trace(). For help on migration issues when using the dispatcher frontend, see the Legacy tracing frontend <https://docs.graphcore.ai/projects/poptorch-user-guide/en/3.0.0/tracing.html>__ section in the 3.0.0 version of the poptorch-user-guide:index.
  • Removed support for building on CentOS 7.x.
  • Removed the Autocast API (this was only available when using the tracing frontend).

sdk/poptorch/3.0.0

1 year ago

New features

  • Support for tensor.new_full
  • Improved performance of index_put when the indices are a one dimensional vector.

API changes

  • Use the dispatcher instead of torch.jit.trace() by default to capture the graph on supported platforms (see :numref:dispatcher-support). Use poptorch.Options.Jit.traceModel(True) to revert to previous behaviour.

Bug Fixes

  • Fixed BatchNorm running statistics, now using the unbiased estimator to update running_var at training time.
  • Fixed scalar tensor inputs to the graph not working.
  • Fixed expand, when the desired shape contains both added dimensions and -1.

sdk/poptorch/2.6.0

1 year ago

New features

  • Improved performance of torch.gather in some cases where the index tensor has come from an expand or expand_as.
  • Improved error message when trying to apply bitwise ops to unsupported scalar types.
  • Support for upsample bicubic mode.
  • Support for zero_infinity in torch.nn.CTCLoss.
  • Experimental support for Torch's dispatcher as an alternative to torch.jit.trace().
  • Improved performance by compiling built-in custom ops at install time.

API changes

  • Data loader: default process creation strategy for worker process changed from "spawn" to "forkserver".

Bug Fixes

  • Fixed remaining in-place operations on slices
  • Fixed einsum transpose error
  • Fixed floating point exception in torch.Tensor.exponential_ and torch.distributions.Exponential
  • Improved support for torch.int16 tensors.

sdk/poptorch/2.5.1

2 years ago

New features

  • Ignore missing values when reloading an Optimizer state.

  • Support saving Optimizer states when compiling offline.

  • Support for the following functions:

    • torch.var
    • torch.std
    • torch.var_mean
    • torch.std_mean
  • Also save the random number generator's state and the seed when saving a model.

  • Support for col2im (used by torch.nn.Fold).

  • Improve error message of aten::index, aten::index_put_ when indexing with boolean tensor masks.

  • Support for torch.argsort.

  • Support for torch.nn.RNN.

  • Add support for __repr__ in PoplarExecutor.

  • For models annotated with BeginBlock, show the IPU blocks in repr(model).

  • Improve implementation of torch.scatter_add

  • Support for torch.nn.utils.weight_norm

  • Support for torch.randperm

  • Support for torch.nn.functional.cosine_similarity and torch.nn.CosineSimilarity

  • Support for torch.all, torch.any, torch.Tensor.all and torch.Tensor.any

  • Support for torch.Tensor.exponential_ and torch.distributions.Exponential

API changes

  • Removed poptorch.AnchorMode, poptorch.Options.anchorMode which were deprecated in favour of poptorch.OutputMode and poptorch.Options.outputMode respectively.

Bug Fixes

  • Fix thread safety issue in LogContext.
  • Fix torch.clamp with integer tensors
  • Fix in-place modification of slices
  • Fix torch.index_put_ when operating on slices
  • Fix torch.chunk when dim size is indivisible by the specified number of chunks
  • Fix cases where tensor.half() was in-place
  • Fix tracing with half buffers
  • Fix for loops with in-place ops
  • Fix torch.flip with negative indices
  • Fix masked assign when using tensor indexing syntax
  • Fix some cases where use of serializedMatMul was ignored or resulted in errors.

sdk/poptorch/2.4.0

2 years ago

New features

  • Support for deepcopy functionality in poptorch.Options class
  • Added functionality to add a name scope for each operator present in the module. This function is enabled by default. It can be disabled using poptorch.Options.disableModuleNamescope.
  • Support for a greater number of convolution and transpose convolution parameters including those which result in input/kernel/output truncation, either for inference (transpose) or gradient calculation.
  • Migrated to PyTorch version 1.10.0
  • Support for gradient clipping by norm in poptorch.optim optimizers
  • Support saving and restoring internal optimiser state with PopTorch optimisers via optimizer.state_dict() and optimizer.load_state_dict()
  • Add removeBlocks function to remove block annotations from a Model / Layer.
  • Support for CPU ops using poptorch.CPU.
  • Support for im2col.
  • Make optimizers work with LR schedulers.
  • Switched to gold linker by default.

API changes

  • Deprecated poptorch.Options.anchorMode in favour of poptorch.Options.outputMode
  • Deprecated poptorch.Options.defaultAnchorMode in favour of poptorch.Options.defaultOutputMode
  • Deprecated poptorch.AnchorMode in favour of poptorch.OutputMode

Bug Fixes

  • Fixed incorrect gradient when using torch.nn.Embedding with padding_idx

sdk/poptorch/2.3.0

2 years ago

New features

  • Support for torch.bitwise_and, torch.bitwise_or, torch.bitwise_xor
  • Support for torch.logical_and, torch.logical_or,
  • Support K-dimensional NLLLoss, K-dimensional CrossEntropyLoss
  • Support for non-default affine parameter flags in normalisation ops
  • Support for torch.Tensor.T
  • Support for torch.bool in torch.zeros, torch.zeros_like, torch.ones, torch.ones_like
  • Support for torch.scatter and its in-place variant
  • Support for in-place modification to buffers on IPU
  • Support for taking slices of scalars
  • Support version of bilinear upsampling specifying intended output size instead of scale factors
  • Add support for overlapping host IO on inputs via poptorch.set_overlap_for_input().
  • Add option for setting number of IO tiles via numIOTiles in poptorch.Options (required for useIOTilesToLoad() and - poptorch.set_overlap_for_input().)
  • Improve PopTorch’s parity with PyTorch’s Softplus
  • Improve implementation of torch.SiLU by using Poplar’s Swish operator
  • Additional support for operation overloads
  • Fix issue where PopTorch recalculated upsampling scales in fp16
  • Fix issue where the last use of poptorch.set_available_memory would be pruned
  • Add documentation on available memory proportion to incorporate embeddings and indexing operations
  • Add documentation on how users can generate debug information
  • Support replicated tensor sharding when running on multiple processes
  • Allow selection for a non-constant x input.
  • Support for enableConvDithering convolution option

API changes

  • Default mean reduction strategies have changed from the deprecated PostAndLoss strategy to Post or Running based on optimiser accumulation type
  • Mean reduction strategy can now be set via poptorch.Options.Training.setMeanAccumulationAndReplicationReductionStrategy.
  • Add warning that IPU-specific optimiser states cannot be read from the host, when calling get_state() on poptorch.optim optimisers

sdk/poptorch/2.2.0

2 years ago

New features

  • Migrated to PyTorch version 1.9.0
  • Support for torch.roll
  • Support for torch.clone
  • Add modelName session option that can be passed to PopART
  • Support List inputs to a model
  • Tuples/Lists of constants can now be returned by a model
  • Add enableProfiling convenience method in poptorch.Options to enable profile report generation
  • Fix bug with torch.Tensor.repeat when applied to an input during training
  • Fix bug with aten::to when applied to a constant used as an input to another node
  • Improved error message when encountering untraceable types during compilation
  • Support for torch.gather. Please note: this operator is known to cause long compilation times. Consider using a onehot-based solution instead or torch.index_select if appropriate.
  • Using a convolution layer op with the value of padding greater than or equal to kernel_size` is now supported.
  • Support for Poplar recoverable and unrecoverable errors.
  • Support for torch.flip.
  • Support for torch.Tensor.new_ones and torch.Tensor.new_zeros

API changes

  • Removed accumulationReductionType which was deprecated in 2.1 in favour of accumulationAndReplicationReductionType in poptorch.Options.Training
  • Removed runningVarianceAlwaysFloat which was deprecated in 2.1 and replaced by runningStatisticsAlwaysFloat in poptorch.Options.Precision.