Scoring engines

DSS allows you to select various engines in order to perform scoring of your models. This allows for faster execution in some cases.

Note

Scoring engines are only used to actually predict rows. While they are strongly related to training engines, some models trained with one engine can be scored with another.

Engines for the scoring recipe

The following scoring engines are available:

  • Local (DSS server only) scoring. This engine has two variants:

    • the Python engine provides wider compatibility but lower performance. Allows to compute Individual prediction explanations.

    • the Optimized scorer provides better performance and is automatically used whenever possible.

  • Spark: the scoring is performed in a distributed fashion on a Spark cluster

  • SQL (Regular): the model is converted to a SQL query and executed within a SQL database.

  • SQL (Snowflake with Java UDF): the model uses Snowflake extended push-down. This provides much faster execution within Snowflake, and extended compatibility. Please see Snowflake for details

The selected engine can be adjusted in the scoring recipe editor. Only engines that are compatible with the selected model and input dataset will be available.

The default settings the following:

  • If the model was trained with Spark MLLib, it will be scored with the Spark engine

  • Else it will be scored with the Local engine. The optimized engine will be used if available.

If you do not wish to score your model with the “optimized” engine for some reason, you may select “Force original backend” in the scoring recipe editor to revert to the original backend.

Choosing SQL (regular) engine (if your scored dataset is stored in an SQL database and your model is compatible) will generate a request to score the dataset. Note that this may create very large requests for complex models.

Engines for the API node

To score rows using the API node, the “Local” engine is used. This engine has two variants:

  • the Python engine provides wider compatibility but lower performance.

  • the Optimized scorer provides better performance and is automatically used whenever possible.

The Optimized engine is enabled if you check the “Use Java” option in the endpoint settings.

In other words, only models for which one of “Local (Python)” or “Local (Optimized)” is available can be scored in the API node.

Compatibility matrix

The compatibility matrix for all DSS models is the following.

Local (Python) and Local (Optimized) engines are available both in scoring recipes and API node. Spark and SQL engines are only available for the scoring recipes.

Note

  • For models trained with Python, the Optimized Local and Spark engines are only available if preprocessing is also compatible.

  • The SQL engine is only available if preprocessing is also compatible.

Algorithms

Training engine

Algorithm

Local (Optimized)

Local (Python)

Spark

SQL (Snowflake with Java UDF)

SQL (Regular)

Python in-memory

Random forest

Yes

Yes

Yes

Yes

Yes (except for multiclass)

MLLib

Random forest

Yes

No

Yes

Yes

Yes (except for multiclass)

Python in-memory

Gradient Boosting

Yes

Yes

Yes

Yes

Yes (except for multiclass)

MLLib

Gradient Boosting (no multiclass)

Yes

No

Yes

Yes

Yes (except for multiclass)

Python in-memory

LightGBM

Yes

Yes

Yes

Yes

Yes (except for multiclass)

Python in-memory

XGBoost

Yes

Yes

Yes

Yes

Yes (except for multiclass)

Python in-memory

Extra Trees (Scikit)

Yes

Yes

Yes

Yes

Yes (except for multiclass)

Python in-memory

Decision Trees

Yes

Yes

Yes

Yes

Yes (no probas for multiclass)

MLLib

Decision Trees

Yes

No

Yes

Yes

Yes (no probas for multiclass)

Python in-memory

Ordinary Least Squares, Lasso, Ridge

Yes

Yes

Yes

Yes

Yes

Python in-memory

SGD

Yes

Yes

Yes

Yes

Yes

MLLib

Linear Regression

Yes

No

Yes

Yes

Yes

Python in-memory

Logistic Regression

Yes

Yes

Yes

Yes

Yes

MLLib

Logistic Regression

Yes

No

Yes

Yes

Yes

Python in-memory

Neural Networks

Yes

Yes

Yes

Yes

Yes

Python in-memory

Deep Neural Network

No

Yes

No

No

No

Python in-memory

Naive Bayes

No

Yes

No

No

No

MLLib

Naive Bayes

No

No

Yes

No

No

Python in-memory

K-nearest-neighbors

No

Yes

No

No

No

Python in-memory

SVM

No

Yes

No

No

No

Python in-memory

Custom models

No

Yes

No

No

No

MLLib

Custom models

No

No

Yes

No

No

Ensemble model

No

Yes

No

No

No

Preprocessing

Local (Optimized)

The following preprocessing options are available for Local(Optimized)

  • Numerical

    • No rescaling

    • Rescaling

    • Binning

    • Derivative features

    • Flag presence

    • Imputation

    • Drop row

    • Datetime cyclical encoding

  • Categorical

    • Dummification

    • Target encoding (impact and GLMM)

    • Ordinal

    • Frequency

    • Flag presence

    • Hashing (MLLib only)

    • Impute

    • Drop row

  • Text

    • Count vectorization

    • TF/IDF vectorization

    • Hashing (MLLib)

SQL (Snowflake with Java UDF)

The following preprocessing options are available for SQL (Snowflake with Java UDF) scoring :

  • Numerical

    • No rescaling

    • Rescaling

    • Binning

    • Derivative features

    • Flag presence

    • Imputation

    • Drop row

    • Datetime cyclical encoding

  • Categorical

    • Dummification

    • Target encoding (impact and GLMM)

    • Ordinal

    • Frequency

    • Flag presence

    • Hashing (MLLib only)

    • Impute

    • Drop row

  • Text

    • Count vectorization

    • TF/IDF vectorization

    • Hashing (MLLib)

SQL (Regular)

The following preprocessing options are available for SQL (regular) scoring :

  • Numerical

    • No rescaling

    • Rescaling

    • Binning

    • Flag presence

    • Imputation

    • Drop row

  • Categorical

    • Dummification

    • Impact coding

    • Ordinal

    • Frequency

    • Flag presence

    • Impute

    • Drop row

Text is not supported

Limitations

SQL (regular) engine

The following limitations exist with SQL (regular) scoring:

  • Some algorithms may not generate probabilities with SQL scoring (see table above)

  • Conditional output columns are not generated with SQL scoring

  • Preparation scripts are not compatible with SQL scoring

  • Multiclass logistic regression and neural networks require the SQL dialect to support the GREATEST function.