Poängräkning i realtid med sp_rxPredict i SQL Server

gäller för: SQL Server 2016 (13.x) och senare versioner

Lär dig hur du utför poängräkning i realtid med sp_rxPredict systemlagrad procedur i SQL Server för högpresterande prognoser eller poäng vid prognostisering av arbetsbelastningar.

Poängsättning i realtid med sp_rxPredict är språkoberoende och kan köras utan beroenden av körmiljöerna R eller Python i strojové učenie Services. Med en modell skapad och tränad med Microsoft-funktioner och serialiserad till ett binärt format i SQL Server kan du använda realtidspoäng för att generera förutsagda resultat på nya dataindata på SQL Server-instanser som inte har tillägget R eller Python installerat.

Hur realtidspoängsättning fungerar

Poängsättning i realtid stöds på specifika modelltyper baserade på funktioner i RevoScaleR eller MicrosoftML i R, eller revoscalepy eller microsoftml i Python. Den använder inbyggda C++-bibliotek för att generera poäng baserat på användarinput som tillhandahålls till en maskininlärningsmodell lagrad i ett särskilt binärt format.

Eftersom en tränad modell kan användas för poängräkning utan att behöva anropa en extern språkkörning i strojové učenie Services, minskas overheaden för flera processer.

Poängräkning i realtid är en flerstegsprocess:

  1. Du aktiverar den lagrade proceduren som gör poängsättningen per databas.
  2. Du laddar den förtränade modellen i binärt format.
  3. Du tillhandahåller ny indata som ska poängsättas, antingen tabell- eller enkelrads, som indata till modellen.
  4. För att generera poäng, anropa den sp_rxPredict lagrade proceduren.

Förutsättningar

Anmärkning

Poängsättning i realtid är för närvarande optimerad för snabba förutsägelser på mindre datamängder, från några få rader till hundratusentals rader. På stora datamängder kan rxPredict vara snabbare.

Möjliggör poängräkning i realtid

Aktivera denna funktion för varje databas du vill använda för poängräkning. Serveradministratören bör köra kommandoradsverktyget RegisterRExt.exe, som ingår i RevoScaleR-paketet.

Försiktighet

För att realtidspoängsättning ska fungera måste SQL CLR-funktionalitet vara aktiverad i instansen och databasen måste markeras som pålitlig. När du kör skriptet utförs dessa åtgärder åt dig. Men överväg noggrant de ytterligare säkerhetsimplikationerna innan du gör detta.

  1. Öppna en upphöjd kommandoprompt och navigera till mappen där RegisterRExt.exe finns. Följande sökväg kan användas i en standardinstallation:

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

  2. Kör följande kommando, och byt ut namnet på din instans och måldatabasen där du vill aktivera de utökade lagrade procedurerna:

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

    Till exempel, för att lägga till den utökade lagrade proceduren i CLRPredict-databasen på standardinstansen, skriv:

    RegisterRExt.exe /installRts /database:CLRPRedict

    Instansnamnet är valfritt om databasen är på standardinstansen. Om du använder en namngiven instans, ange instansnamnet.

  3. RegisterRExt.exe skapar följande objekt:

    • Betrodda sammanställningar
    • Den lagrade proceduren sp_rxPredict
    • En ny databasroll, rxpredict_users. Databasadministratören kan använda denna roll för att ge behörighet till användare som använder funktionen för realtidspoängsättning.
  4. Lägg till alla användare som behöver köra sp_rxPredict i den nya rollen.

Anmärkning

I SQL Server 2017 och senare finns ytterligare säkerhetsåtgärder på plats för att förhindra problem med CLR-integration. Dessa åtgärder innebär också ytterligare begränsningar för användningen av denna lagrade procedur.

Inaktivera poängräkning i realtid

För att inaktivera realtidspoäng, öppna en upphöjd kommandoprompt och kör följande kommando: RegisterRExt.exe /uninstallrts /database:<database_name> [/instance:name]

Example

Detta exempel beskriver stegen som krävs för att förbereda och spara en modell för realtidsprediktion , och ger ett exempel i R på hur man anropar funktionen från T-SQL.

Steg 1. Förbereda och spara modellen

Det binära format som krävs av sp_rxPredict är detsamma som formatet som krävs för att använda PREDICT-funktionen. Därför, inkludera i din R-kod ett anrop till rxSerializeModel, och se till att specificera realtimeScoringOnly = TRUE, som i detta exempel:

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

Steg 2. Ring sp_rxPredict

Du kallar sp_rxPredict som vilken annan lagrad procedur som helst. I den nuvarande versionen tar den lagrade proceduren endast två parametrar: @model för modellen i binärt format och @inputData för datan att använda i poängräkningen, definierad som en giltig SQL-fråga.

Eftersom det binära formatet är detsamma som används av PREDICT-funktionen kan du använda modellerna och datatabellen från föregående exempel.

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'

Anmärkning

Anropet till sp_rxPredict misslyckas om indata för poängsättning inte innehåller kolumner som uppfyller modellens krav. För närvarande stöds endast följande .NET-datatyper: double, float, short, ushort, long, ulong och string.

Därför kan du behöva filtrera bort typer som inte stöds i dina indata innan du använder dem för poängsättning i realtid.

För information om motsvarande SQL-typer, se SQL-CLR Type Mapping or Mapping CLR Parameter Data.