Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro: SQL Server 2016 (13.x) a novější verze
Naučte se, jak provádět skórování v reálném čase pomocí uložené procedury sp_rxPredict systému v SQL Server pro vysoce výkonnostní predikce nebo skóre v předpovědních pracovních zátěžích.
Real-time skórování s sp_rxPredict je jazykově nezávislé a probíhá bez závislostí na modulech runtime jazyka R nebo Pythonu v Machine Learning Services. Pomocí modelu vytvořeného a trénovaného pomocí funkcí Microsoft a serializovaného do binárního formátu v SQL Server můžete pomocí bodování v reálném čase generovat předpovězené výsledky nových datových vstupů na instancích SQL Server, které nemají nainstalovaný dotek R nebo Python.
Jak funguje bodování v reálném čase
Hodnocení v reálném čase je podporováno u konkrétních typů modelů založených na funkcích v RevoScaleR nebo MicrosoftML v R, případně v revoscalepy či microsoftml v Python. Používá nativní knihovny C++ k generování skóre na základě uživatelských vstupů poskytnutých do modelu strojového učení uloženého ve speciálním binárním formátu.
Protože lze trénovaný model použít k vyhodnocování bez nutnosti volat externí jazykové běhové prostředí v Machine Learning Services, snižuje se režie spojená s více procesy.
Hodnocení v reálném čase je vícestupňový proces:
- Povolíte uloženou proceduru, která provádí skórování na základě každé databáze.
- Načtete předtrénovaný model v binárním formátu.
- Do modelu zadáváte nová vstupní data, která se hodnotí, buď tabulkově nebo jednotlivě, jako vstup do modelu.
- Pro generování skóre zavolejte sp_rxPredict uloženou proceduru.
Předpoklady
Model musí být předem natrénován pomocí jednoho z podporovaných rx algoritmů. Pro podrobnosti viz Podporované algoritmy pro
sp_rxPredict.Model serializujte pomocí rxSerialize pro R nebo rx_serialize_model pro Python. Tyto serializační funkce jsou optimalizované tak, aby podporovaly rychlé bodování.
Uložte model do instance databázového enginu, ze které ho chcete volat. Tato instance nemusí mít rozšíření modulu runtime pro R nebo Python.
Poznámka:
Skórování v reálném čase je v současnosti optimalizováno pro rychlé predikce na menších datových sadách, od několika řádků až po stovky tisíc řádků. Na velkých datových sadách může být použití rxPredict rychlejší.
Povolit skórování v reálném čase
Tuto funkci povolte pro každou databázi, kterou chcete použít pro skórování. Správce serveru by měl spustit příkazový nástroj RegisterRExt.exe, který je součástí balíčku RevoScaleR.
Upozornění
Aby hodnocení v reálném čase fungovalo, musí být v instanci povolena funkce SQL CLR a databáze musí být označena jako důvěryhodná. Když spustíte skript, tyto akce se provádějí za vás. Nicméně pečlivě zvažte další bezpečnostní důsledky, než to uděláte.
Otevřete vyvýšený příkazový řádek a přejděte do složky, kde se RegisterRExt.exe nachází. Následující cesta může být použita ve výchozí instalaci:
<SQLInstancePath>\R_SERVICES\library\RevoScaleR\rxLibs\x64\Spustěte následující příkaz, nahraďte název vaší instance a cílovou databázi, kde chcete povolit rozšířené uložené procedury:
RegisterRExt.exe /installRts [/instance:name] /database:databasenameNapříklad pro přidání rozšířené uložené procedury do databáze CLRPredict na výchozí instanci napište:
RegisterRExt.exe /installRts /database:CLRPRedictNázev instance je volitelný, pokud je databáze na výchozí instanci. Pokud používáte pojmenovanou instanci, zadejte název instance.
RegisterRExt.exe vytváří následující objekty:
- Důvěryhodná shromáždění
- Uložený postup
sp_rxPredict - Nová databázová role,
rxpredict_users. Správce databáze může tuto roli využít k udělení oprávnění uživatelům, kteří využívají funkci hodnocení v reálném čase.
Přidejte uživatele, kteří potřebují běžet
sp_rxPredictdo nové role.
Poznámka:
V SQL Server 2017 a novějších jsou zavedena další bezpečnostní opatření, která předcházejí problémům s integrací CLR. Tato opatření také zavádějí další omezení používání této uložené procedury.
Vypnout skórování v reálném čase
Pro deaktivaci bodování v reálném čase otevřete vyvýšený příkazový řádek a spusťte následující příkaz: RegisterRExt.exe /uninstallrts /database:<database_name> [/instance:name]
Example
Tento příklad popisuje kroky potřebné k přípravě a uložení modelu pro predikci v reálném čase a poskytuje příklad v R, jak volat funkci z T-SQL.
Krok 1. Příprava a uložení modelu
Binární formát požadovaný sp_rxPredict je stejný jako formát potřebný pro použití funkce PREDICT. Proto do svého R kódu zahrňte volání rxSerializeModel a nezapomeňte specifikovat realtimeScoringOnly = TRUE, jako v tomto příkladu:
model <- rxSerializeModel(model.name, realtimeScoringOnly = TRUE)
Krok 2. Zavolej sp_rxPredict
sp_rxPredict voláte stejně jako jakoukoli jinou uloženou proceduru. V aktuální verzi uložená procedura přijímá pouze dva parametry: @model pro model v binárním formátu a @inputData pro data pro použití při skórování, definovaná jako platný SQL dotaz.
Protože binární formát je stejný jako u funkce PREDICT, můžete použít modely a datovou tabulku z předchozího příkladu.
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'
Poznámka:
Volání na sp_rxPredict selže, pokud vstupní data pro skórování neobsahují sloupce, které odpovídají požadavkům modelu. V současnosti jsou podporovány pouze následující .NET datové typy: double, float, short, ushort, long, ulong a string.
Proto možná budete muset filtrovat nepodporované typy ve vstupních datech před jejich použitím pro skórování v reálném čase.
Pro informace o odpovídajících typech SQL viz SQL-CLR Mapování typů nebo Mapování parametrů CLR.