spcl / daceml

A Data-Centric Compiler for Machine Learning
https://daceml.readthedocs.io
BSD 3-Clause "New" or "Revised" License
81 stars 14 forks source link

Remove hard ORT dependency, set default implementation to pure #95

Closed orausch closed 2 years ago

orausch commented 2 years ago

This PR makes the ORT dependency soft. If ORT is not installed, ORT node expansion will fail. There is a new CI branch that runs tests without ORT.

Since our constant folding depends on ORT, we add more cleanup to the ONNX Importer. It now uses onnxsim to do some preliminary cleanup, doing a lot of the heavy lifting that our CF would do.

To keep tests from failing when ORT is missing, we also add some new pure op implementations. This includes improvements to the python_pure_op_implementation decorator to make these more compact. In a later PR, I will apply these improvements to other pure impls (I expect to be able to simplify at least 11 implementations).

codecov[bot] commented 2 years ago

Codecov Report

Merging #95 (a3488aa) into master (ddd1120) will increase coverage by 7.32%. The diff coverage is 93.55%.

@@            Coverage Diff             @@
##           master      #95      +/-   ##
==========================================
+ Coverage   60.07%   67.39%   +7.32%     
==========================================
  Files          58       58              
  Lines        6870     6955      +85     
==========================================
+ Hits         4127     4687     +560     
+ Misses       2743     2268     -475     
Impacted Files Coverage Δ
...ml/onnx/op_implementations/pure_implementations.py 69.60% <85.71%> (+4.39%) :arrow_up:
daceml/onnx/environments/onnxruntime.py 87.63% <93.10%> (+18.88%) :arrow_up:
daceml/onnx/onnx_importer.py 92.28% <96.88%> (-2.79%) :arrow_down:
daceml/onnx/__init__.py 100.00% <100.00%> (ø)
daceml/onnx/nodes/node_codegen.py 89.27% <100.00%> (+17.21%) :arrow_up:
.../onnx/op_implementations/img_op_implementations.py 66.79% <100.00%> (-0.37%) :arrow_down:
daceml/onnx/op_implementations/utils.py 100.00% <100.00%> (+4.76%) :arrow_up:
daceml/onnx/schema.py 95.62% <100.00%> (ø)
daceml/onnx/shape_inference/shape_inference.py 100.00% <100.00%> (ø)
daceml/ort_api/raw_api_bindings.py 95.58% <100.00%> (ø)
... and 24 more

Continue to review full report at Codecov.

Legend - Click here to learn more Δ = absolute <relative> (impact), ø = not affected, ? = missing data Powered by Codecov. Last update ddd1120...a3488aa. Read the comment docs.