Echtzeitbewertung mit sp_rxPredict in SQL Server Machine LearningReal-time scoring with sp_rxPredict in SQL Server machine learning

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

Bei der Echtzeitbewertung werden die gespeicherten System Prozeduren sp_rxPredict und die CLR-Erweiterungsfunktionen in SQL Server für leistungsstarke Vorhersagen oder Ergebnisse bei der Vorhersage von Arbeits Auslastungen verwendet.Real-time scoring uses the sp_rxPredict system stored procedure and the CLR extension capabilities in SQL Server for high-performance predictions or scores in forecasting workloads. Die Echtzeitbewertung ist sprach agnostisch und wird ohne Abhängigkeiten von R-oder python-Laufzeiten ausgeführt.Real-time scoring is language-agnostic and executes with no dependencies on R or Python run times. Wenn Sie ein Modell verwenden, das mit Microsoft Functions erstellt und trainiert wurde, und anschließend in SQL Server in ein binäres Format serialisiert wurden, können Sie die Echtzeitbewertung verwenden, um vorhergesagte Ergebnisse für neue Dateneingaben auf SQL Server Instanzen zu generieren, die das R-oder python-Add-on nicht haben. lierter.Assuming a model created and trained using Microsoft functions, and then serialized to a binary format in SQL Server, you can use real-time scoring to generate predicted outcomes on new data inputs on SQL Server instances that do not have the R or Python add-on installed.

Funktionsweise der EchtzeitbewertungHow real-time scoring works

Die Echtzeitbewertung wird für bestimmte Modelltypen unterstützt, die auf revoscaler-oder microsoftml-Funktionen, wie rxlinmod (revoscaler)rxneural net (microsoftml), basieren.Real-time scoring is supported on specific model types based on RevoScaleR or MicrosoftML functions such as rxLinMod (RevoScaleR)rxNeuralNet (MicrosoftML). Native C++ Bibliotheken werden verwendet, um Bewertungen basierend auf Benutzereingaben zu generieren, die für ein in einem speziellen Binärformat gespeichertes Machine Learning-Modell bereitgestellt werden.It uses native C++ libraries to generate scores, based on user input provided to a machine learning model stored in a special binary format.

Da ein trainiertes Modell zur Bewertung verwendet werden kann, ohne eine externe Sprachlaufzeit aufrufen zu müssen, verringert sich der Aufwand mehrerer Prozesse.Because a trained model can be used for scoring without having to call an external language runtime, the overhead of multiple processes is reduced. Dies unterstützt eine wesentlich schnellere Vorhersage Leistung für Produktions Bewertungs Szenarien.This supports much faster prediction performance for production scoring scenarios. Da die Daten niemals SQL Server bleiben, können Ergebnisse generiert und in eine neue Tabelle eingefügt werden, ohne dass eine Daten Übersetzung zwischen R und SQL durchgeführt werden muss.Because the data never leaves SQL Server, results can be generated and inserted into a new table without any data translation between R and SQL.

Die Echtzeitbewertung ist ein mehrstufiger Prozess:Real-time scoring is a multi-step process:

  1. Die gespeicherte Prozedur, die die Bewertung durchführt, muss auf Daten Bank Basis aktiviert werden.The stored procedure that does scoring must be enabled on a per-database basis.
  2. Das Vortrainierte Modell wird im Binärformat geladen.You load the pre-trained model in binary format.
  3. Sie stellen neue Eingabedaten, die bewertet werden sollen, entweder tabellarische oder einzelne Zeilen, als Eingabe für das Modell bereit.You provide new input data to be scored, either tabular or single rows, as input to the model.
  4. Um Ergebnisse zu generieren, rufen Sie die gespeicherte Prozedur sp_rxPredict auf.To generate scores, call the sp_rxPredict stored procedure.

VorraussetzungenPrerequisites

Hinweis

Die Echtzeitbewertung ist zurzeit für schnelle Vorhersagen für kleinere Datasets optimiert und reicht von einigen wenigen Zeilen bis hin zu Hunderttausenden von Zeilen.Real-time scoring is currently optimized for fast predictions on smaller data sets, ranging from a few rows to hundreds of thousands of rows. Bei großen Datasets kann die Verwendung von rxvorhersage beschleunigt werden.On big datasets, using rxPredict might be faster.

Unterstützte AlgorithmenSupported algorithms

Python-Algorithmen mit EchtzeitbewertungPython algorithms using real-time scoring

R-Algorithmen mit EchtzeitbewertungR algorithms using real-time scoring

Nicht unterstützte ModelltypenUnsupported model types

Die Echtzeitbewertung verwendet keinen Interpreter. Daher wird jede Funktionalität, die möglicherweise einen Interpreter erfordert, während des Bewertungs Schritts nicht unterstützt.Real-time scoring does not use an interpreter; therefore, any functionality that might require an interpreter is not supported during the scoring step. Diese können Folgendes umfassen:These might include:

  • Modelle, die rxGlm die rxNaiveBayes Algorithmen oder verwenden, werden nicht unterstützt.Models using the rxGlm or rxNaiveBayes algorithms are not supported.

  • Modelle, A ~ log(B) die eine Transformations Funktion oder-Formel mit einer Transformation enthalten, wie z. b., werden bei der Echtzeitbewertung nicht unterstützt.Models using a transformation function or formula containing a transformation, such as A ~ log(B) are not supported in real-time scoring. Wenn Sie ein Modell dieses Typs verwenden möchten, empfiehlt es sich, die Transformation für Eingabedaten durchzuführen, bevor die Daten an die Echtzeitbewertung übergeben werden.To use a model of this type, we recommend that you perform the transformation on input data before passing the data to real-time scoring.

Beispiel: sp_rxPredictExample: sp_rxPredict

In diesem Abschnitt werden die Schritte beschrieben, die zum Einrichten der Echt Zeit Vorhersage erforderlich sind, und es wird ein Beispiel für R zum Aufruf der-Funktion von T-SQL bereitstellt.This section describes the steps required to set up real-time prediction, and provides an example in R of how to call the function from T-SQL.

Schritt 1:Step 1. Aktivieren der Echt Zeit Bewertungs ProzedurEnable the real-time scoring procedure

Sie müssen diese Funktion für jede Datenbank aktivieren, die Sie für die Bewertung verwenden möchten.You must enable this feature for each database that you want to use for scoring. Der Server Administrator sollte das Befehlszeilen-Hilfsprogramm registerrext. exe ausführen, das im revoscaler-Paket enthalten ist.The server administrator should run the command-line utility, RegisterRExt.exe, which is included with the RevoScaleR package.

Hinweis

Damit die Echtzeitbewertung funktioniert, muss die SQL CLR-Funktionalität in der Instanz aktiviert werden. Außerdem muss die Datenbank als vertrauenswürdig gekennzeichnet sein.In order for real-time scoring to work, SQL CLR functionality needs to be enabled in the instance; additionally, the database needs to be marked trustworthy. Wenn Sie das Skript ausführen, werden diese Aktionen für Sie ausgeführt.When you run the script, these actions are performed for you. Berücksichtigen Sie jedoch die zusätzlichen Sicherheitsrisiken, bevor Sie dies tun!However, consider the additional security implications before doing this!

  1. Öffnen Sie eine Eingabeaufforderung mit erhöhten Rechten, und navigieren Sie zu dem Ordner, in dem sich die Datei registerrext. exe befindet.Open an elevated command prompt, and navigate to the folder where RegisterRExt.exe is located. Der folgende Pfad kann in einer Standardinstallation verwendet werden:The following path can be used in a default installation:

    <SQLInstancePath>\R_SERVICES\library\RevoScaleR\rxLibs\x64\

  2. Führen Sie den folgenden Befehl aus, und ersetzen Sie dabei den Namen der-Instanz und der Zieldatenbank, in der Sie die erweiterten gespeicherten Prozeduren aktivieren möchten:Run the following command, substituting the name of your instance and the target database where you want to enable the extended stored procedures:

    RegisterRExt.exe /installRts [/instance:name] /database:databasename

    Geben Sie beispielsweise Folgendes ein, um die erweiterte gespeicherte Prozedur der clrvorhersage-Datenbank auf der Standard Instanz hinzuzufügen:For example, to add the extended stored procedure to the CLRPredict database on the default instance, type:

    RegisterRExt.exe /installRts /database:CLRPRedict

    Der Instanzname ist optional, wenn sich die Datenbank auf der Standard Instanz befindet.The instance name is optional if the database is on the default instance. Wenn Sie eine benannte Instanz verwenden, müssen Sie den Instanznamen angeben.If you are using a named instance, you must specify the instance name.

  3. Registerrext. exe erstellt die folgenden Objekte:RegisterRExt.exe creates the following objects:

    • Vertrauenswürdige AssemblyTrusted assemblies
    • Die gespeicherte Prozedursp_rxPredictThe stored procedure sp_rxPredict
    • Eine neue Daten Bank Rolle rxpredict_users,.A new database role, rxpredict_users. Der Datenbankadministrator kann diese Rolle zum Erteilen von Berechtigungen für Benutzer verwenden, die die Echt Zeit Bewertungsfunktion verwenden.The database administrator can use this role to grant permission to users who use the real-time scoring functionality.
  4. Fügen Sie alle Benutzer hinzu, die sp_rxPredict die neue Rolle ausführen müssen.Add any users who need to run sp_rxPredict to the new role.

Hinweis

In SQL Server 2017 sind zusätzliche Sicherheitsmaßnahmen vorhanden, um Probleme bei der CLR-Integration zu vermeiden.In SQL Server 2017, additional security measures are in place to prevent problems with CLR integration. Diese Measures erzwingen auch zusätzliche Einschränkungen bei der Verwendung dieser gespeicherten Prozedur.These measures impose additional restrictions on the use of this stored procedure as well.

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

Das für SP_rxvorhersage erforderliche Binärformat ist identisch mit dem Format, das für die Verwendung der Vorhersagefunktion erforderlich ist.The binary format required by sp_rxPredict is the same as the format required to use the PREDICT function. Fügen Sie daher in Ihrem R-Code einen rxserializemodel-Befehl ein, und stellen Sie sicher realtimeScoringOnly = TRUE, wie in diesem Beispiel:Therefore, in your R code, include a call to rxSerializeModel, and be sure to specify realtimeScoringOnly = TRUE, as in this example:

model <- rxSerializeModel(model.name, realtimeScoringOnly = TRUE)

Schritt 3:Step 3. Sp_rxPredict anrufenCall sp_rxPredict

Sie nennen SP_rxvorhersage wie jede andere gespeicherte Prozedur.You call sp_rxPredict as you would any other stored procedure. In der aktuellen Version benötigt die gespeicherte Prozedur nur zwei Parameter: @Model für das Modell im Binärformat und @inputData für die Daten, die in der Bewertung verwendet werden sollen, die als gültige SQL-Abfrage definiert sind.In the current release, the stored procedure takes only two parameters: @model for the model in binary format, and @inputData for the data to use in scoring, defined as a valid SQL query.

Da das binäre Format das gleiche ist, das von der Vorhersagefunktion verwendet wird, können Sie die Modelle und die Datentabelle aus dem vorherigen Beispiel verwenden.Because the binary format is the same that is used by the PREDICT function, you can use the models and data table from the preceding example.

DECLARE @irismodel varbinary(max)
SELECT @irismodel = [native_model_object] from [ml_models]
WHERE model_name = 'iris.dtree' 
AND model_version = 'v1''

EXEC sp_rxPredict
@model = @irismodel,
@inputData = N'SELECT * FROM iris_rx_data'

Hinweis

Der Aufrufe von SP_rxvorhersage schlägt fehl, wenn die Eingabedaten für die Bewertung keine Spalten enthalten, die den Anforderungen des Modells entsprechen.The call to sp_rxPredict fails if the input data for scoring does not include columns that match the requirements of the model. Derzeit werden nur die folgenden .NET-Datentypen unterstützt: Double, float, Short, ushort, Long, ULONG und String.Currently, only the following .NET data types are supported: double, float, short, ushort, long, ulong and string.

Daher müssen Sie möglicherweise nicht unterstützte Typen in ihren Eingabedaten herausfiltern, bevor Sie Sie für die Echtzeitbewertung verwenden.Therefore, you might need to filter out unsupported types in your input data before using it for real-time scoring.

Weitere Informationen zu entsprechenden SQL-Typen finden Sie unter SQL-CLR-Typzuordnung oder Mapping von CLR-Parameter Daten.For information about corresponding SQL types, see SQL-CLR Type Mapping or Mapping CLR Parameter Data.

Echtzeitbewertung deaktivierenDisable real-time scoring

Öffnen Sie eine Eingabeaufforderung mit erhöhten Rechten, und führen Sie den folgenden Befehl aus, um Echt Zeit Bewertungs Funktionen zu deaktivieren:RegisterRExt.exe /uninstallrts /database:<database_name> [/instance:name]To disable real-time scoring functionality, open an elevated command prompt, and run the following command: RegisterRExt.exe /uninstallrts /database:<database_name> [/instance:name]

Nächste SchritteNext steps

Weitere Hintergrundinformationen zur Bewertung in SQL Server finden Sie unter Generieren von Vorhersagen in SQL Server Machine Learning.For more background on scoring in SQL Server, see How to generate predictions in SQL Server machine learning.