onnx_extended.tools#
onnx_extended.tools.ort_debug#
enumerate_ort_run#
- onnx_extended.tools.ort_debug.enumerate_ort_run(onx: str | ModelProto, feeds: Dict[str, Any], verbose: int = 0, providers: List[str] | None = None, **kwargs: Dict[str, Any]) Iterator[Tuple[List[str], List[Any], NodeProto]] [source]#
Yields all the intermediate results produced by onnxruntime.
- Parameters:
onx – model
feeds – input tensors
verbose – prints out a summary of the results
providers – if not specified, default is [“CPUExecutionProvider”]
kwargs – additional parameter to give InferenceSession when it is initialized
- Returns:
intermediate results, names, and node
onnx_extended.tools.js_profile#
js_profile_to_dataframe#
- onnx_extended.tools.js_profile.js_profile_to_dataframe(filename: str, as_df: bool = True, first_it_out: bool = False, agg: bool = False, agg_op_name: bool = False, with_shape: bool = False) List | DataFrame [source]#
Profiles the execution of an onnx graph with onnxruntime.
- Parameters:
filename – filename holding the profiling stored in json format
as_df – returns the
first_it_out – if aggregated, leaves the first iteration out
agg – aggregate by event
agg_op_name – aggregate on operator name or operator index
with_shape – keep the shape before aggregating
- Returns:
DataFrame or dictionary
plot_ort_profile#
- onnx_extended.tools.js_profile.plot_ort_profile(df: DataFrame, ax0: matplotlib.axes.Axes | None = None, ax1: matplotlib.axes.Axes | None = None, title: str | None = None) matplotlib.axes.Axes [source]#
Plots time spend in computation based on dataframe produced by function
js_profile_to_dataframe()
.- Parameters:
df – dataframe
ax0 – first axis to draw time
ax1 – second axis to draw occurences
title – graph title
- Returns:
the graph
onnx_extended.tools.run_onnx#
save_for_benchmark_or_test#
- onnx_extended.tools.run_onnx.save_for_benchmark_or_test(folder: str, test_name: str, model: ModelProto, inputs: List[ndarray], outputs: List[ndarray] | None = None, data_set: int = 0) str [source]#
Saves input, outputs on disk to later uses it as a backend test or a benchmark.
- Parameters:
folder – folder to save
test_name – test name or subfolder
model – model to save
inputs – inputs of the node
outputs – outputs of the node, supposedly the expected outputs, if not speficied, they are computed with the reference evaluator
data_set – to have multiple tests with the same model
- Returns:
test folder
bench_virtual#
- onnx_extended.tools.run_onnx.bench_virtual(test_path: str, virtual_path: str, runtimes: List[str] | str = 'ReferenceEvaluator', index: int = 0, warmup: int = 5, repeat: int = 10, modules: List[Dict[str, str | None]] | None = None, verbose: int = 0, save_as_dataframe: str | None = None, filter_fct: Callable[[str, Dict[str, str | None]], bool] | None = None) List[Dict[str, float | Dict[str, Tuple[int, ...]]]] [source]#
Runs the same benchmark over different versions of the same packages in a virtual environment.
- Parameters:
test_path – test path
virtual_path – path to the virtual environment
runtimes – runtimes to measure (ReferenceEvaluation, CReferenceEvaluator, onnxruntime)
index – test index to measure
warmup – number of iterations to run before starting to measure the model
repeat – number of iterations to measure
modules – modules to install, example: modules=[{“onnxruntime”: “1.16.3”, “onnx”: “1.15.0”}]
filter_fct – to disable some of the configuration based on the runtime and the installed modules
verbose – verbosity
save_as_dataframe – saves as dataframe
- Returns:
list of statistics
TestRun#
- class onnx_extended.tools.run_onnx.TestRun(folder: str)[source]#
Loads a test saved by
save_for_benchmark_or_test()
.- Parameters:
folder – test folder
It has the following attributes:
folder: str
proto: ModelProto
datasets: Dict[int, List[Tuple[int, np.array]]]
- bench(f_build: Callable[[ModelProto], Any], f_run: Callable[[Any, Dict[str, array]], List[array]], index: int = 0, warmup: int = 5, repeat: int = 10) Dict[str, float | str | Any] [source]#
Runs the model on the given inputs.
- Parameters:
f_build – function to call to build the inference class
f_run – function to call to run the inference
index – test index to measure
warmup – number of iterations to run before starting to measure the model
repeat – number of iterations to measure
- Returns:
dictionary with many metrics, any metric endings with “_time” is a duration
- property input_names#
Returns the input names of the model.
- property output_names#
Returns the output names of the model.
- test(f_build: Callable[[ModelProto], Any], f_run: Callable[[Any, Dict[str, array]], List[array]], index: int = 0, exc: bool = True, atol: float = 1e-05, rtol: float = 1e-05) Dict[str, Tuple[float, float, str]] | None [source]#
Runs the tests.
- Parameters:
f_build – function to call to build the inference class
f_run – function to call to run the inference
index – test index
exc – raises an exception if the verification fails
atol – absolute tolerance
rtol – relative tolerance
- Returns:
list of results with discrepancies, the absolute error, the relative one and a reason for the failure