In [1]:
from sklearn_benchmarks.reporting.hp_match import HpMatchReporting
from sklearn_benchmarks.utils import default_results_directory
from pathlib import Path
import pandas as pd
pd.set_option('display.max_colwidth', None)
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)

ONNX Runtime vs. scikit-learn¶

In [2]:
results_dir = default_results_directory()
In [3]:
# Parameters
results_dir = "./results/local/20220315T181132/"
In [4]:
results_dir = Path(results_dir)
In [5]:
reporting = HpMatchReporting(other_library="onnx", config="config.yml", log_scale=True, results_dir=results_dir)
reporting.make_report()

We assume here there is a perfect match between the hyperparameters of both librairies. For a given set of parameters and a given dataset, we compute the speed-up time scikit-learn / time onnx. For instance, a speed-up of 2 means that onnx is twice as fast as scikit-learn for a given set of parameters and a given dataset.

KNeighborsClassifier (brute force) ¶

onnx (1.11.0) vs. scikit-learn (1.0.2)

Speedup barplots ¶

All estimators share the following parameters: algorithm=brute.

Raw results ¶

predict

function n_samples_train n_samples n_features mean_duration_sklearn std_duration_sklearn iteration_throughput latency n_jobs n_neighbors accuracy_score_sklearn mean_duration_onnx std_duration_onnx accuracy_score_onnx speedup std_speedup sklearn_profiling onnx_profiling
0 predict 100000 1000 100 2.636 0.251 0.000 0.003 -1 1 0.676 18.062 0.055 0.676 0.146 0.146 Download Download
1 predict 100000 1 100 0.027 0.004 0.000 0.027 -1 1 0.000 0.346 0.002 0.000 0.077 0.077 Download Download
2 predict 100000 1000 100 3.210 0.071 0.000 0.003 -1 5 0.743 18.011 0.033 0.743 0.178 0.178 Download Download
3 predict 100000 1 100 0.026 0.003 0.000 0.026 -1 5 1.000 0.346 0.003 1.000 0.076 0.076 Download Download
4 predict 100000 1000 100 2.207 0.009 0.000 0.002 1 100 0.846 18.114 0.079 0.846 0.122 0.122 Download Download
5 predict 100000 1 100 0.023 0.001 0.000 0.023 1 100 1.000 0.344 0.002 1.000 0.065 0.065 Download Download
6 predict 100000 1000 100 3.128 0.046 0.000 0.003 -1 100 0.846 18.122 0.035 0.846 0.173 0.173 Download Download
7 predict 100000 1 100 0.025 0.003 0.000 0.025 -1 100 1.000 0.344 0.002 1.000 0.073 0.073 Download Download
8 predict 100000 1000 100 2.191 0.062 0.000 0.002 1 5 0.743 17.859 0.049 0.743 0.123 0.123 Download Download
9 predict 100000 1 100 0.023 0.000 0.000 0.023 1 5 1.000 0.343 0.003 1.000 0.066 0.066 Download Download
10 predict 100000 1000 100 1.330 0.006 0.001 0.001 1 1 0.676 18.069 0.065 0.676 0.074 0.074 Download Download
11 predict 100000 1 100 0.021 0.000 0.000 0.021 1 1 0.000 0.344 0.002 0.000 0.062 0.062 Download Download
12 predict 100000 1000 2 1.958 0.031 0.000 0.002 -1 1 0.845 4.354 0.013 0.845 0.450 0.450 Download Download
13 predict 100000 1 2 0.006 0.004 0.000 0.006 -1 1 1.000 0.264 0.003 1.000 0.023 0.023 Download Download
14 predict 100000 1000 2 2.899 0.085 0.000 0.003 -1 5 0.883 4.266 0.016 0.883 0.680 0.680 Download Download
15 predict 100000 1 2 0.006 0.002 0.000 0.006 -1 5 1.000 0.261 0.001 1.000 0.025 0.025 Download Download
16 predict 100000 1000 2 2.101 0.004 0.000 0.002 1 100 0.887 4.315 0.009 0.887 0.487 0.487 Download Download
17 predict 100000 1 2 0.003 0.000 0.000 0.003 1 100 1.000 0.262 0.001 1.000 0.012 0.012 Download Download
18 predict 100000 1000 2 2.928 0.053 0.000 0.003 -1 100 0.887 4.331 0.022 0.887 0.676 0.676 Download Download
19 predict 100000 1 2 0.007 0.002 0.000 0.007 -1 100 1.000 0.261 0.002 1.000 0.028 0.028 Download Download
20 predict 100000 1000 2 2.112 0.003 0.000 0.002 1 5 0.883 4.282 0.010 0.883 0.493 0.493 Download Download
21 predict 100000 1 2 0.003 0.000 0.000 0.003 1 5 1.000 0.263 0.003 1.000 0.013 0.013 Download Download
22 predict 100000 1000 2 1.194 0.004 0.000 0.001 1 1 0.845 4.334 0.007 0.845 0.275 0.275 Download Download
23 predict 100000 1 2 0.002 0.000 0.000 0.002 1 1 1.000 0.265 0.003 1.000 0.009 0.009 Download Download

Profiling traces can be visualized using Perfetto UI.

HistGradientBoostingClassifier ¶

onnx (1.11.0) vs. scikit-learn (1.0.2)

Speedup barplots ¶

All estimators share the following parameters: learning_rate=0.01, n_iter_no_change=10.0, max_leaf_nodes=100.0, max_bins=255.0, min_samples_leaf=100.0, max_iter=300.0.

Raw results ¶

predict

function n_samples_train n_samples n_features mean_duration_sklearn std_duration_sklearn iteration_throughput latency accuracy_score_sklearn mean_duration_onnx std_duration_onnx accuracy_score_onnx speedup std_speedup sklearn_profiling onnx_profiling
0 predict 100000 1000 100 0.145 0.005 0.006 0.0 0.795 0.582 0.009 0.795 0.249 0.249 Download Download

Profiling traces can be visualized using Perfetto UI.

Benchmark environment information¶

System¶

python 3.8.12 | packaged by conda-forge | (default, Jan 30 2022, 23:42:07) [GCC 9.4.0]
executable /usr/share/miniconda/envs/sklbench/bin/python
machine Linux-5.11.0-1028-azure-x86_64-with-glibc2.10

Dependencies¶

version
pip 22.0.4
setuptools 60.9.3
sklearn 1.0.2
numpy 1.22.3
scipy 1.8.0
Cython None
pandas 1.4.1
matplotlib 3.5.1
joblib 1.1.0
threadpoolctl 3.1.0

Threadpool¶

user_api internal_api prefix filepath version threading_layer architecture num_threads
0 blas openblas libopenblas /usr/share/miniconda/envs/sklbench/lib/libopenblasp-r0.3.18.so 0.3.18 pthreads SkylakeX 2
1 openmp openmp libgomp /usr/share/miniconda/envs/sklbench/lib/libgomp.so.1.0.0 None NaN NaN 2

CPU count¶

cpu_count 2
physical_cpu_count 2