Skip to main content

Python Runtime for ONNX models, other helpers to convert machine learned models in C++.

Project description

https://github.com/sdpython/mlprodict/blob/master/_doc/sphinxdoc/source/phdoc_static/project_ico.png?raw=true

mlprodict

Build status Build Status Windows https://circleci.com/gh/sdpython/mlprodict/tree/master.svg?style=svg https://dev.azure.com/xavierdupre3/mlprodict/_apis/build/status/sdpython.mlprodict https://badge.fury.io/py/mlprodict.svg MIT License Requirements Status https://codecov.io/github/sdpython/mlprodict/coverage.svg?branch=master GitHub Issues Notebook Coverage Downloads Forks Stars https://mybinder.org/badge_logo.svg

The packages explores ways to productionize machine learning predictions. One approach uses ONNX and tries to implement a runtime in python / numpy or wraps onnxruntime into a single class. The package provides tools to compare predictions, to benchmark models converted with sklearn-onnx. The second approach consists in converting a pipeline directly into C and is not much developed.

from sklearn.linear_model import LinearRegression
from sklearn.datasets import load_iris
from mlprodict.onnxrt import OnnxInference, measure_relative_difference
import numpy

iris = load_iris()
X = iris.data[:, :2]
y = iris.target
lr = LinearRegression()
lr.fit(X, y)

# Predictions with scikit-learn.
expected = lr.predict(X[:5])
print(expected)

# Conversion into ONNX.
from mlprodict.onnx_conv import to_onnx
model_onnx = to_onnx(lr, X.astype(numpy.float32))

# Predictions with onnxruntime
oinf = OnnxInference(model_onnx, runtime='onnxruntime1')
ypred = oinf.run({'X': X[:5]})
print(ypred)

# Measuring the maximum difference.
print(measure_relative_difference(expected, ypred))

Installation

The project relies on sklearn-onnx which is in active development. Continuous integration relies on a specific branch of this project to benefit from the lastest changes:

pip install git+https://github.com/xadupre/sklearn-onnx.git@jenkins

The project is currently in active development. It is safer to install the package directly from github:

pip install git+https://github.com/sdpython/mlprodict.git

On Linux and Windows, the package must be compiled with openmp. Full instructions to build the module and run the documentation are described in config.yml for Linux. When this project becomes more stable, it will changed to be using official releases. Experiments with float64 are not supported with sklearn-onnx <= 1.5.0. The code is available at GitHub/mlprodict and has online documentation.

History

current - 2019-09-15 - 0.00Mb

  • 57: ONNX: handles dataframe when converting a model (2019-09-15)

  • 56: ONNX: implements cdist operator (2019-09-12)

  • 54: ONNX: fix summary, it produces multiple row when model are different when opset is different (2019-09-12)

  • 51: ONNX: measure the time performance obtained by using optimization (2019-09-11)

  • 52: ONNC-cli: add a command line to optimize an onnx model (2019-09-10)

  • 49: ONNX optimization: remove redundant subparts of a graph (2019-09-09)

  • 48: ONNX optimization: reduce the number of Identity nodes (2019-09-09)

  • 47: Implements statistics on onnx graph and sklearn models, add them to the documentation (2019-09-06)

  • 46: Implements KNearestNeibhorsRegressor supporting batch mode (ONNX) (2019-08-31)

  • 45: KNearestNeighborsRegressor (2019-08-30)

  • 44: Add an example to look into the performance of every node for a particular dataset (2019-08-30)

  • 43: LGBMClassifier has wrong shape (2019-08-29)

0.2.452 - 2019-08-28 - 0.13Mb

  • 42: Adds a graph which visually summarize the validating benchmark (ONNX). (2019-08-27)

  • 41: Enables to test multiple number of features at the same time (ONNX) (2019-08-27)

  • 40: Add a parameter to change the number of featuress when validating a model (ONNX). (2019-08-26)

  • 39: Add a parameter to dump all models even if they don’t produce errors when being validated (ONNX) (2019-08-26)

  • 24: support double for TreeEnsembleClassifier (python runtime ONNX) (2019-08-23)

  • 38: See issue on onnxmltools. https://github.com/onnx/onnxmltools/issues/321 (2019-08-19)

  • 35: Supports parameter time_kwargs in the command line (ONNX) (2019-08-09)

  • 34: Add intervals when measuring time ratios between scikit-learn and onnx (ONNX) (2019-08-09)

  • 31: Implements shape inference for the python runtime (ONNX) (2019-08-06)

  • 15: Tells operator if the execution can be done inplace for unary operators (ONNX). (2019-08-06)

  • 27: Bug fix (2019-08-02)

  • 23: support double for TreeEnsembleRegressor (python runtime ONNX) (2019-08-02)

0.2.363 - 2019-08-01 - 0.11Mb

  • 26: Tests all converters in separate processeses to make it easier to catch crashes (2019-08-01)

  • 25: Ensures operator clip returns an array of the same type (ONNX Python Runtime) (2019-07-30)

  • 22: Implements a function to shake an ONNX model and test float32 conversion (2019-07-28)

  • 21: Add customized converters (2019-07-28)

  • 20: Enables support for TreeEnsemble operators in python runtime (ONNX). (2019-07-28)

  • 19: Enables support for SVM operators in python runtime (ONNX). (2019-07-28)

  • 16: fix documentation, visual graph are not being rendered in notebooks (2019-07-23)

  • 18: implements python runtime for SVM (2019-07-20)

0.2.272 - 2019-07-15 - 0.09Mb

  • 17: add a mechanism to use ONNX with double computation (2019-07-15)

  • 13: add automated benchmark of every scikit-learn operator in the documentation (2019-07-05)

  • 12: implements a way to measure time for each node of the ONNX graph (2019-07-05)

  • 11: implements a better ZipMap node based on dedicated container (2019-07-05)

  • 8: implements runtime for decision tree (2019-07-05)

  • 7: implement python runtime for scaler, pca, knn, kmeans (2019-07-05)

  • 10: implements full runtime with onnxruntime not node by node (2019-06-16)

  • 9: implements a onnxruntime runtime (2019-06-16)

  • 6: first draft of a python runtime for onnx (2019-06-15)

  • 5: change style highlight-ipython3 (2018-01-05)

0.1.11 - 2017-12-04 - 0.03Mb

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mlprodict-0.2.542.tar.gz (196.8 kB view details)

Uploaded Source

Built Distribution

mlprodict-0.2.542-cp37-cp37m-win_amd64.whl (620.7 kB view details)

Uploaded CPython 3.7m Windows x86-64

File details

Details for the file mlprodict-0.2.542.tar.gz.

File metadata

  • Download URL: mlprodict-0.2.542.tar.gz
  • Upload date:
  • Size: 196.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Python-urllib/3.7

File hashes

Hashes for mlprodict-0.2.542.tar.gz
Algorithm Hash digest
SHA256 9dc0cdbb55a10bf9da6df5272fa96b8f0fd22a4f082645bb779e33df55cdf0ef
MD5 a011d24688816524d3728a29b0592a69
BLAKE2b-256 0d3460ec1db6b311fed1dee845c196c4b8d893c3f7be8c6f5d3d67d8c8573f85

See more details on using hashes here.

File details

Details for the file mlprodict-0.2.542-cp37-cp37m-win_amd64.whl.

File metadata

File hashes

Hashes for mlprodict-0.2.542-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 f026dc231dafa01d9ca22fdd7ea5ecd2855973c3b005497d9b855cb440237b02
MD5 3e7b954df1fc2666a677b4c6f96f4671
BLAKE2b-256 d959ca5ef1e97a731fc0a2f16d3c8aff20f61da1dba6c91e2ad7b3da0a19809f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page