Skip to content

Releases: barakugav/executorch-rs

v0.3.0

23 Aug 13:38
5efedff
Compare
Choose a tag to compare

A release that address some bugs around non-trivially moveable Cpp objects, causes a change in API.
For most structs it has no effect as most Cpp structs of executorch are trivially moveable. For those who are not, such as Tensor and EValue, the default constructor method, aka new, will allocate the underlying Cpp object on the heap using a Box. On systems were allocations are not available, a new Storage struct is introduced allowing pinned allocations on the stack.

What's Changed

  • Update ndarray requirement from 0.15.6 to 0.16.0
  • Enforce Cpp objects are not moved for non-trivially movable structs
  • Remove some deps for real no_std by, still not fully supported due to the Cpp lib requiring the Cpp standard library. See pytorch/executorch#4561
  • The library is now tested on both Ubuntu and MacOS. Windows is not supported.

v0.2.0

09 Aug 06:50
Compare
Choose a tag to compare

The crate will now compile with C++ ExecuTorch version 0.3.0, bumped from 0.2.1.

Added

  • f16 feature flag, support input/output Tensors of half precision floating points using the half crate. Note that if half precision floats are used in the inner calculations of your model, the feature is not required, only if they are used as input or output Tensors. In the future the crate may use the standard f16 once its stable, and the feature may be removed.
  • complex feature flag, support input/output Tensors of complex floating points (f32, f64, or half::f16 if f16 is enabled) using the num-complex crate. Note that if complex floats are used in the inner calculations of your model, the feature is not required, only if they are used as input or output Tensors.
  • std feature flag, enabled by default, that can be disabled to use the crate without the Rust standard library. Unfortunately, the C++ underlying library still require the C++ standard library, but hopefully that will change in the near future.
  • alloc feature flag, enabled by the std feature flag that is enabled by default. If the feature is disabled, all methods and structs requiring allocations will not be compiled. If std is enabled, allocations are performed regularly using the standard library. When disabling the std flag and enabling alloc, the crate will use the alloc API to allocate objects, requiring a global allocator to be set by the user beforehand.

v0.1.0

03 Aug 13:57
fe4b01b
Compare
Choose a tag to compare

First release of executorch-rs!

The crate provides a high-level Rust API for executing PyTorch models on mobile, embedded and edge devices using the ExecuTorch library, specifically the C++ API. PyTorch models are created and exported in Python, and then loaded and executed on-device using the ExecuTorch library.

The first release contains support for the core of ExecuTorch, allowing loading and executing models with either the Program or the Module APIs.
In addition all the necessary structs and classes such as TensorImpl, Tensor, EValue, DataLoader, ect, have a matching struct in Rust with zero additional memory overhead.

The supported C++ version is 0.2.1, and the user must build it manually, which is less convenient but allow for greater flexibility, matching the library use case: each compilation matches a specific hardware with specific constraints, allowing to run in embedded systems, while paying only for what you use.

The next release will come in the following weeks bumping the Cpp library to version 0.3.x.

v0.1.0-rc.2

03 Aug 13:38
e4377ed
Compare
Choose a tag to compare
v0.1.0-rc.2 Pre-release
Pre-release

What's Changed

  • Include cpp headers in repo, don't relay on the internet by @barakugav in #12

Full Changelog: v0.1.0-rc.1...v0.1.0-rc.2

0.1.0-rc.1

03 Aug 12:47
Compare
Choose a tag to compare
0.1.0-rc.1 Pre-release
Pre-release

What's Changed

Full Changelog: https://github.com/barakugav/executorch-rs/commits/v0.1.0-rc.1