Skip to content

Releases: Quantco/spox

0.9.1 (2023-10-05)

05 Oct 16:10
f4aef40
Compare
Choose a tag to compare

Bug fixes

  • The node-adaption no longer fails if faced with a node that has repeating inputs.
  • Forego version adaption of inlined models if no nodes are from the default domain.

0.9.0 (2023-06-12)

12 Jul 18:43
233dd34
Compare
Choose a tag to compare

New features

  • The opset ai.onnx@19 (ONNX 1.14) is now shipped with Spox.

Bug fixes

  • The constructor for ai.onnx@18::Split is no longer generated incorrectly. No extraneous attribute is generated anymore, and the num_outputs attribute is marked as required (so that Spox can infer the number of outputs).
  • Fix an issue where op.const handled numbers in the range(INT64MAX, UINT64MAX) incorrectly

Other changes

  • Inlining now no longer adds redundant Identity nodes and supports subgraphs, thanks to reimplementing the ONNX renaming routine.

0.8.0 (2023-05-11)

11 May 10:37
d3b1279
Compare
Choose a tag to compare

This version is intended as a release candidate for 1.0.0.

New feature

  • Spox now explicitly sets a model's IR version (currently to version 8) rather than defaulting to the latest IR version supported by the installed onnx package. Increasing the IR version is not considered a breaking change going forward. The IR version will be increase once the ecosystem has adopted it more broadly.

Bug fixes

  • Fix an issue with resolving scopes during the build process. They manifested with a KeyError in accessing variables in scope on graphs in complex dependencies between subgraphs.
  • inline now removes all symbolic dimensions from input/output shapes (i.e. N x 2 becomes ? x 2) before inferring types to avoid inconsistent interactions. This is only a visual change of the output in some cases, as they are not compared strictly in ONNX.
  • inline now explicitly does not accept model with subgraphs and local functions. Attempting to use these would usually result in invalid models. Support for them will be added in the future.

0.7.0 (2023-04-04)

04 Apr 08:10
0ca5281
Compare
Choose a tag to compare

This version is intended as a release candidate for 1.0.0.

New features

  • The opset ai.onnx@18 is now shipped with Spox (version 18 of the default domain, as introduced in ONNX 1.13). To avoid code duplication, unchanged implementations are "inherited" from the previous version.

Breaking changes

  • The typing rules of the (previously partially documented) extra constructor const have changed. Its signature is now const(npt.ArrayLike, npt.DTypeLike = None) -> Var. In particular, const of a Python float no longer becomes float32, but float64 like numpy. The operator is redefined to be equivalent to constant(numpy.array(value), dtype), instead of a complex set of cases like before.
  • The spox.Type <= spox.Type (spox.Type.__le__) overload is now removed.
  • Deprecated operator constructors are now no longer generated after the version their schema was deprecated. Effectively, this means ai.onnx@17::Scatter and ai.onnx@17::Upsample (available as op.scatter and op.upsample) are no longer available in spox.opset.ai.onnx.v17. They likely were not used in practice as attempting to build deprecated operators has always failed.

Bug fixes

  • The operator constructor cum_sum now also has an alias cumsum, to mirror numpy. This alias should be preferred.

New unstable features

  • spox._future.initializer(ArrayLike, DTypeLike = None) -> Var is a new function for creating variables from a constant value. The created value is constructed with numpy.array and follows the same rules. This function is opset-independent and is implemented using initializers.

0.6.2 (2023-03-29)

29 Mar 14:10
3f215a3
Compare
Choose a tag to compare

Pending breaking changes

  • The previously available Type <= Type (Type.__le__) overload is deprecated and will be removed in Spox 0.7.0, as it was unintentionally public.
  • Constructors for deprecated ONNX operators (currently Scatter and Upsample) now raise a warning when they are called. They will be removed entirely in 0.7.0.

Bug fixes

  • spox.inline now correctly renames unused model inputs when building. This could previously cause invalid models to be built.
  • Array attributes are now copied when they are passed to an operator. This avoids accidentally mutating them after the operator is constructed.
  • The Loop operator now has patched type inference, so that the loop-carries in its results preserve shapes if the subgraph had them inferred.

0.6.1 (2023-03-07)

14 Mar 10:17
d6f627c
Compare
Choose a tag to compare

Deprecation warnings

  • An undocumented extra operator constructor (const) now raises a DeprecationWarning on float, as its behaviour will change in Spox 0.7.0 to follow that of numpy.

0.6.0 (2023-02-27)

27 Feb 16:49
63a455b
Compare
Choose a tag to compare

Notable change

  • Models now have a minimum opset version of 14 for the ai.onnx domain to avoid issues with low-versioned models in onnxruntime and other tooling.

0.5.0 (2023-01-20)

24 Feb 17:05
Compare
Choose a tag to compare

New Feature

  • The spox.build and spox.argument functions were added enabling the building of graphs through a stable interface.

Notable change

  • The documentation formatting inside the (auto-generated) spox.opset module was greatly improved.

0.4.0 (2023-01-16)

24 Feb 17:03
Compare
Choose a tag to compare

Breaking change

  • Removed the Var.dtype and Var.shape properties in favor of the more explicit Var.unwrap_tensor().dtype and Var.unwrap_tensor().shape ones.

Bug fixes

  • Non-ASCII characters in constant tensors are now handled correctly.
  • The Compress operator has gained an explicit type and shape inference implementation

0.3.0 (2022-12-20)

24 Feb 16:59
Compare
Choose a tag to compare

Notable changes

  • Renamed the library to Spox
  • Reduced the public API surface to a bare minimum to offer a usable and stable user experience with spox-based converters. This release is intended as a WIP release candidate. Breaking changes may still occur if necessary.