Releases: graphcore/poptorch
sdk/poptorch/3.4.0
sdk/poptorch/3.3.0
sdk/poptorch/3.2.0
sdk/poptorch/3.1.0
New features
- Upgraded from PyTorch 1.10 to 1.13.
- Added support for variables being sharded across replicas.
poptorch.set_overlap_for_input
andpoptorch.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, allowingset_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 ofhalf
. - 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 theXLA
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 theLegacy tracing frontend <https://docs.graphcore.ai/projects/poptorch-user-guide/en/3.0.0/tracing.html>
__ section in the 3.0.0 version of thepoptorch-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
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
).
Usepoptorch.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
New features
- Improved performance of
torch.gather
in some cases where the index tensor has come from anexpand
orexpand_as
. - Improved error message when trying to apply bitwise ops to unsupported scalar types.
- Support for upsample bicubic mode.
- Support for
zero_infinity
intorch.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_
andtorch.distributions.Exponential
- Improved support for
torch.int16
tensors.
sdk/poptorch/2.5.1
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 inrepr(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
andtorch.nn.CosineSimilarity
-
Support for
torch.all
,torch.any
,torch.Tensor.all
andtorch.Tensor.any
-
Support for
torch.Tensor.exponential_
andtorch.distributions.Exponential
API changes
- Removed
poptorch.AnchorMode
,poptorch.Options.anchorMode
which were deprecated in favour ofpoptorch.OutputMode
andpoptorch.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
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()
andoptimizer.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 ofpoptorch.Options.outputMode
- Deprecated
poptorch.Options.defaultAnchorMode
in favour ofpoptorch.Options.defaultOutputMode
- Deprecated
poptorch.AnchorMode
in favour ofpoptorch.OutputMode
Bug Fixes
- Fixed incorrect gradient when using
torch.nn.Embedding
withpadding_idx
sdk/poptorch/2.3.0
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
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.