* Add QuantizationBackend, QTensorOps and QTensor
* Refactor QTensorOps as part of Backend trait
* Add tensor dequantize, QFloat dtype and default affine/symmetric quant
* Add ndarray default quantization implementation
* Fix clippy
* Add rayon parallel iter
* Add quantization operations to book
* Add q_shape and q_device ops to avoid converting the tensor just to get attributes
* Implement autodiff grad ops
* Mark autodiff todo for QAT
* Remove note
* Add q_inner and q_from_inner
* Implement 3D and transposed 3D convolutions.
* Merge changes from onnx-ir #1921 pr
---------
Co-authored-by: Dilshod Tadjibaev <939125+antimora@users.noreply.github.com>
* Move distribution to module
* Add new TensorData with serialization support
* Implement display and from for TensorData
* Add missing Cargo.lock
* Add missing bytemuck feature
* Add zeros, ones, full and random TensorData methods
* Refactor Data -> TensorData usage
* Fix tests
Since TensorData is not generic over the element type anymore no type inference can be done by the compiler. We must explicitly cast the expected results to the expected backend type.
* Remove commented line
* Fix import
* Add record-backward-compat
* Remove dim const generic from TensorData
* Support NestedValue de/serialization with TensorData
* Fix burn-jit tests
* Remove eprinln
* Refactor onnx import to use TensorData
* Fix tch from_data
* Fix nested value serialization for u8
* Fix missing import
* Fix reduce min onnx test
* Fix deprecated attribute
* Remove shape getter
* Remove strict assert in tests
* Add tensor data as_bytes
* Add tensor check for rank mismatch
* Fix typo (dimensions plural)
* Fix error message
* Update book examples with from_data and fix Display impl for TensorData
* Add deprecation note
* #1747
Upgrade Rust dependencies
* Revert upgrade for tch
The update of tch on windows gives an error:
INTEL MKL ERROR: The specified module could not be found. mkl_vml_avx2.1.dll.
Intel MKL FATAL ERROR: cannot load mkl_vml_avx2.1.dll or mkl_vml_def.1.dll.
* Keep only .cargo/config.toml file which works with rust > 1.75
---------
Co-authored-by: Sylvain Benner <sylvain@benner.online>
* [backend-comparison] Remove tui
* [backend-comparison] Add nice and compact burnbench output
* [backend-comparison] Cargo check fixes
* Tweak bar style for consistency on different terminals
* [backend-comparison] Add uploading state to nice processor
Also simplified with only one processor for both stdout and stderr
since now we also need to process stdout to detect uploading.
* [backend-comparison] Add spinner to have feedback while compiling
* [backend-comparison] Fix Compiling status message on MacOS
* [backend-comparison] Remove prefix in progress bar message
* [backend-comparison] Refactor tracker to use tick and AtomicU64
* [backend-comparison] Set OutputProcessor bounds at the trait level
* [backend-comparison] Fix typos and remove dead code
* [backend-comparison] Create run_cargo function in for loops
* Make backend names in JSON reports match burnbench CLI
- add `config_name` to `Backend` trait
- add `backend_config_name` to `Benchmark` trait
- fix documentation for JSON reports to use correct unit of time
* Revert "Make backend names in JSON reports match burnbench CLI"
This reverts commit a09edb6389.
* [backend-comparison] Serialize the feature name passed to burnbench
---------
Co-authored-by: syl20bnr <sylvain.benner@gmail.com>
* Bump sysinfo crate to 0.30.7
* [backend-comparison] Add CPUs and GPUs system info to results
* [backend-comparison] Add integrated GPUs to gathered system info
* [backend-comparison] Use AutoGraphicsApi wgpu backend selection
* [backend-comparison] Serialize both auth tokens to cache file
We need to refresh token to be able to renew an expired access token.
* [backend-comparison] Refresh access token
* [backend-comparison] Display user name with auth command
* [backend-comparison] Update README
* [backend-comparison] Fix PR comments
* [backend-comparison] Fix hyphen consistency in benchmark names
* [backend-comparison] Fix release build error when refreshing token
The reqwest must have an explicit empty body otherwise the release
build returns a 411 when refreshing the tokens without even calling
the benchmark server endpoint.
Uploading is enabled with already implemented --share argument
of the burnbench command line tool.
The burnbench binary passes the URL of the server and the auth
token to the cargo bench process using the additional arguments
--sharing-url and --sharing-token respectively.
The persistence module then upload the results when a --sharing-url
is provided.
The URL is for now hardcoded. The endpoint is production when
compiling in release mode and it is localhost otherwise.
* [backend-comparison] Add auth command to burnbench CLI
* [backend-comparison] Add --share argument to Burnbench CLI
* Cargo clippy fixes
* Fix typos
* Add comment to explain the FIVE_SECONDS constant
* Use num_args to force at least one arg value and make args required
In the run command, makes the --benches and --backends required
The manual check is no longer necessary
* Use and_then instead of match
* Simplify token verification
* Use map_or instead of match
* Refactor serialization of benchmarks
* flatten benchmarks data to make it easier to save documents to a database and
query them
* split some information into their own fields like backend and device
* add new seralized info:
- computed values (mean, median, variance, min, max)
- number of samples
- operation name
- tensor shapes if any
* serialize to separate files, one file per benchmark run
* simplify persistence module to only a save method
* Update bench save file format to use name and uuid
* Compute serialized fields count automatically via a macro
* Rework naming of benchmarks, shapes and add options field
Remove operations field
Correctly create one file per ran benchmark
* Serialize benchmark num_repeats
* Fix expect message to follow the 'should' convention
* Cargo fmt :-)
* Make Clippy happy
* Save files in the burn subdirectory
* Change name of custom_gelu bench to just gelu
* Remove num_repeats from backend-comparison benchmarks
* Fix wrong variable name to compute the median
* Remove false positive possibility in test_mean_duration