Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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:
- Du aktiverar den lagrade proceduren som gör poängsättningen per databas.
- Du laddar den förtränade modellen i binärt format.
- Du tillhandahåller ny indata som ska poängsättas, antingen tabell- eller enkelrads, som indata till modellen.
- För att generera poäng, anropa den sp_rxPredict lagrade proceduren.
Förutsättningar
Modellen måste tränas i förväg med hjälp av en av de rx-algoritmer som stöds. För detaljer, se Stödda algoritmer för
sp_rxPredict.Serialisera modellen med rxSerialize för R eller rx_serialize_model för Python. Dessa serialiseringsfunktioner har optimerats för att stödja snabb bedömning.
Spara modellen i databasmotorinstansen där du vill anropa den. Denna instans behöver inte ha R- eller Python-runtime-tillägget.
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.
Ö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\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:databasenameTill exempel, för att lägga till den utökade lagrade proceduren i CLRPredict-databasen på standardinstansen, skriv:
RegisterRExt.exe /installRts /database:CLRPRedictInstansnamnet är valfritt om databasen är på standardinstansen. Om du använder en namngiven instans, ange instansnamnet.
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.
Lägg till alla användare som behöver köra
sp_rxPredicti 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.