Native Bewertung mithilfe der Vorhersage T-SQL-FunktionNative scoring using the PREDICT T-SQL function

GILT FÜR: jaSQL ServerjaAzure SQL-DatenbankneinAzure SQL Data Warehouse neinParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Bei der nativen Bewertung werden die T-SQL-Funktion Vorhersagen und die systemeigenen C++ Erweiterungsfunktionen in SQL Server 2017 verwendet, um Vorhersagewerte oder Ergebnisse für neue Dateneingaben nahezu in Echtzeit zu generieren.Native scoring uses PREDICT T-SQL function and the native C++ extension capabilities in SQL Server 2017 to generate prediction values or scores for new data inputs in near-real-time. Diese Methodik bietet die schnellste Verarbeitungsgeschwindigkeit von Vorhersage-und Vorhersage Arbeits Auslastungen, ist jedoch mit den Anforderungen an die Plattform und Bibliothek ausgestattet: nur Funktionen von revoscaler und revoscalepy haben C++ Implementierungen.This methodology offers the fastest possible processing speed of forecasting and prediction workloads, but comes with platform and library requirements: only functions from RevoScaleR and revoscalepy have C++ implementations.

Die native Bewertung erfordert, dass Sie bereits über ein trainiertes Modell verfügen.Native scoring requires that you have an already trained model. In SQL Server 2017 Windows oder Linux oder in Azure SQL-Datenbank können Sie die Vorhersagefunktion in Transact-SQL aufrufen, um die native Bewertung für neue Daten aufzurufen, die Sie als Eingabeparameter bereitstellen.In SQL Server 2017 Windows or Linux, or in Azure SQL Database, you can call the PREDICT function in Transact-SQL to invoke native scoring against new data that you provide as an input parameter. Die Vorhersagefunktion gibt Bewertungen über Dateneingaben zurück, die Sie bereitstellen.The PREDICT function returns scores over data inputs you provide.

Funktionsweise der systemeigenen BewertungHow native scoring works

Native Bewertung verwendet Native C++ Bibliotheken von Microsoft, die ein bereits trainiertes Modell lesen können, das zuvor in einem speziellen Binärformat gespeichert oder auf einem Datenträger als Rohdaten Strom gespeichert wurde, und Ergebnisse für neue Dateneingaben generieren, die Sie bereitstellen.Native scoring uses native C++ libraries from Microsoft that can read an already trained model, previously stored in a special binary format or saved to disk as raw byte stream, and generate scores for new data inputs that you provide. Da das Modell trainiert, veröffentlicht und gespeichert wird, kann es für die Bewertung verwendet werden, ohne den R-oder Python-Interpreter aufrufen zu müssen.Because the model is trained, published, and stored, it can be used for scoring without having to call the R or Python interpreter. Daher wird der Aufwand mehrerer Prozess Interaktionen reduziert, was zu einer deutlich schnelleren Vorhersage Leistung in Produktionsszenarien in Unternehmen führt.As such, the overhead of multiple process interactions is reduced, resulting in much faster prediction performance in enterprise production scenarios.

Um die native Bewertung zu verwenden, müssen Sie die Funktion "Vorhersagen T-SQL" aufzurufen und die folgenden erforderlichen Eingaben übergeben:To use native scoring, call the PREDICT T-SQL function and pass the following required inputs:

  • Ein kompatibles Modell, das auf einem unterstützten Algorithmus basiert.A compatible model based on a supported algorithm.
  • Eingabedaten, die in der Regel als SQL-Abfrage definiert sind.Input data, typically defined as a SQL query.

Die-Funktion gibt die Vorhersagen für die Eingabedaten sowie alle Spalten der Quelldaten zurück, die Sie durchlaufen möchten.The function returns predictions for the input data, together with any columns of source data that you want to pass through.

VorraussetzungenPrerequisites

Die Vorhersage ist in allen Editionen von SQL Server 2017-Datenbank-Engine verfügbar und standardmäßig aktiviert, einschließlich SQL Server Machine Learning Services unter Windows, SQL Server 2017 (Windows), SQL Server 2017 (Linux) oder Azure SQL-Datenbank.PREDICT is available on all editions of SQL Server 2017 database engine and enabled by default, including SQL Server Machine Learning Services on Windows, SQL Server 2017 (Windows), SQL Server 2017 (Linux), or Azure SQL Database. Sie müssen R, python nicht installieren oder zusätzliche Funktionen aktivieren.You do not need to install R, Python, or enable additional features.

  • Das Modell muss im Voraus mithilfe eines der unten aufgeführten unterstützten RX -Algorithmen trainiert werden.The model must be trained in advance using one of the supported rx algorithms listed below.

  • Serialisieren Sie das Modell mithilfe von rxserialize für R und rx_serialize_model für python.Serialize the model using rxSerialize for R, and rx_serialize_model for Python. Diese Serialisierungsfunktionen wurden optimiert, um eine schnelle Bewertung zu unterstützen.These serialization functions have been optimized to support fast scoring.

Unterstützte AlgorithmenSupported algorithms

Wenn Sie Modelle von microsoftml oder microsoftml verwenden müssen, verwenden Sie die Echtzeitbewertung mit sp_rxPredict.If you need to use models from MicrosoftML or microsoftml, use real-time scoring with sp_rxPredict.

Nicht unterstützte Modelltypen umfassen die folgenden Typen:Unsupported model types include the following types:

  • Modelle mit anderen TransformationenModels containing other transformations
  • Modelle, die rxGlm die rxNaiveBayes -oder-Algorithmen in revoscaler-oder revoscalepy-Entsprechungen verwendenModels using the rxGlm or rxNaiveBayes algorithms in RevoScaleR or revoscalepy equivalents
  • PMML-ModellePMML models
  • Modelle, die mit anderen Open-Source-oder Drittanbieterbibliotheken erstellt wurdenModels created using other open-source or third-party libraries

Beispiel: VORHERSAGEN (T-SQL)Example: PREDICT (T-SQL)

In diesem Beispiel erstellen Sie ein Modell und rufen dann die Echt Zeit Vorhersagefunktion von T-SQL auf.In this example, you create a model, and then call the real-time prediction function from T-SQL.

Schritt 1:Step 1. Vorbereiten und Speichern des ModellsPrepare and save the model

Führen Sie den folgenden Code aus, um die Beispieldatenbank und die erforderlichen Tabellen zu erstellen.Run the following code to create the sample database and required tables.

CREATE DATABASE NativeScoringTest;
GO
USE NativeScoringTest;
GO
DROP TABLE IF EXISTS iris_rx_data;
GO
CREATE TABLE iris_rx_data (
  "Sepal.Length" float not null, "Sepal.Width" float not null
  , "Petal.Length" float not null, "Petal.Width" float not null
  , "Species" varchar(100) null
);
GO

Verwenden Sie die folgende Anweisung, um die Datentabelle mit Daten aus dem IRIS -DataSet aufzufüllen.Use the following statement to populate the data table with data from the iris dataset.

INSERT INTO iris_rx_data ("Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width" , "Species")
EXECUTE sp_execute_external_script
  @language = N'R'
  , @script = N'iris_data <- iris;'
  , @input_data_1 = N''
  , @output_data_1_name = N'iris_data';
GO

Erstellen Sie nun eine Tabelle zum Speichern von Modellen.Now, create a table for storing models.

DROP TABLE IF EXISTS ml_models;
GO
CREATE TABLE ml_models ( model_name nvarchar(100) not null primary key
  , model_version nvarchar(100) not null
  , native_model_object varbinary(max) not null);
GO

Der folgende Code erstellt ein Modell auf der Grundlage des IRIS -Datasets und speichert es in der Tabelle " Models".The following code creates a model based on the iris dataset and saves it to the table named models.

DECLARE @model varbinary(max);
EXECUTE sp_execute_external_script
  @language = N'R'
  , @script = N'
    iris.sub <- c(sample(1:50, 25), sample(51:100, 25), sample(101:150, 25))
    iris.dtree <- rxDTree(Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width, data = iris[iris.sub, ])
    model <- rxSerializeModel(iris.dtree, realtimeScoringOnly = TRUE)
    '
  , @params = N'@model varbinary(max) OUTPUT'
  , @model = @model OUTPUT
  INSERT [dbo].[ml_models]([model_name], [model_version], [native_model_object])
  VALUES('iris.dtree','v1', @model) ;

Hinweis

Verwenden Sie die Funktion rxserializemodel aus revoscaler, um das Modell zu speichern.Be sure to use the rxSerializeModel function from RevoScaleR to save the model. Die Standard- serialize R-Funktion kann das erforderliche Format nicht generieren.The standard R serialize function cannot generate the required format.

Sie können eine Anweisung wie die folgende ausführen, um das gespeicherte Modell im Binärformat anzuzeigen:You can run a statement such as the following to view the stored model in binary format:

SELECT *, datalength(native_model_object)/1024. as model_size_kb
FROM ml_models;

Schritt 2:Step 2. Vorhersage für das Modell ausführenRun PREDICT on the model

Die folgende einfache Vorhersage Anweisung ruft eine Klassifizierung aus dem Entscheidungsstruktur Modell mithilfe der nativen Bewertungsfunktion ab.The following simple PREDICT statement gets a classification from the decision tree model using the native scoring function. Die Iris-Art wird anhand der von Ihnen bereitgestellten Attribute, der Länge und der Breite des Blatts vorhergesagt.It predicts the iris species based on attributes you provide, petal length and width.

DECLARE @model varbinary(max) = (
  SELECT native_model_object
  FROM ml_models
  WHERE model_name = 'iris.dtree'
  AND model_version = 'v1');
SELECT d.*, p.*
  FROM PREDICT(MODEL = @model, DATA = dbo.iris_rx_data as d)
  WITH(setosa_Pred float, versicolor_Pred float, virginica_Pred float) as p;
go

Wenn die Fehlermeldung angezeigt wird, "Fehler beim Ausführen der Vorhersage der Funktion.If you get the error, "Error occurred during execution of the function PREDICT. Das Modell ist beschädigt oder ungültig ". Dies bedeutet in der Regel, dass die Abfrage kein Modell zurückgegeben hat.Model is corrupt or invalid", it usually means that your query didn't return a model. Überprüfen Sie, ob Sie den Modellnamen ordnungsgemäß eingegeben haben oder ob die Tabelle Models leer ist.Check whether you typed the model name correctly, or if the models table is empty.

Hinweis

Da die von der Vorhersage zurückgegebenen Spalten und Werte je nach Modelltyp variieren können, müssen Sie das Schema der zurückgegebenen Daten mit einer with -Klausel definieren.Because the columns and values returned by PREDICT can vary by model type, you must define the schema of the returned data by using a WITH clause.

Nächste SchritteNext steps

Eine umfassende Lösung, die native Bewertung umfasst, finden Sie in den folgenden Beispielen des SQL Server Entwicklungsteams:For a complete solution that includes native scoring, see these samples from the SQL Server development team: