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 2017 (14.x) a novější verze
Knihovna Revoscalepy Python od Microsoftu poskytuje algoritmy datových věd pro zkoumání, vizualizaci, transformace a analýzu dat. Tato knihovna má strategickou důležitost ve scénářích integrace Pythonu v SQL Serveru. Na serveru s více jádry můžou funkce revoscalepy běžet paralelně. V distribuované architektuře s centrální serverovou a klientskou pracovní stanicí (samostatné fyzické počítače se stejnou knihovnou revoscalepy ) můžete napsat kód Pythonu, který se spouští místně, ale pak se přesune spuštění do vzdálené instance SQL Serveru, ve které se nacházejí data.
Revoscalepy najdete v následujících produktech a distribucích společnosti Microsoft:
- SQL Server Machine Learning Services (v databázi)
- Klientské knihovny Pythonu (pro vývojové pracovní stanice)
Toto cvičení ukazuje, jak vytvořit model lineární regrese založený na rx_lin_mod, jeden z algoritmů v revoscalepy , který přijímá výpočetní kontext jako vstup. Kód, který spustíte v tomto cvičení, přesune provádění kódu z místního prostředí do vzdáleného výpočetního prostředí, které povolí funkce revoscalepy , které umožňují vzdálený výpočetní kontext.
V tomto kurzu se naučíte:
- Vytvoření lineárního modelu pomocí revoscalepy
- Přesun operací z místního do vzdáleného výpočetního kontextu
Požadavky
Ukázková data použitá v tomto cvičení jsou databáze flightdata .
K spuštění vzorového kódu v tomto článku potřebujete integrované vývojové prostředí (IDE) a integrované vývojové prostředí (IDE) musí být propojené se spustitelným souborem Pythonu.
K procvičení posunu výpočetního kontextu potřebujete místní pracovní stanici a instanci databázového stroje SQL Serveru s povolenými službami Machine Learning Services a Pythonem.
Návod
Pokud nemáte dva počítače, můžete simulovat vzdálený výpočetní kontext na jednom fyzickém počítači instalací příslušných aplikací. Nejprve instalace služby SQL Server Machine Learning Services funguje jako "vzdálená" instance. Za druhé, instalace klientských knihoven Pythonu funguje jako klient. Na stejném počítači budete mít dvě kopie stejné distribuce Pythonu a knihoven Microsoft Pythonu. Budete muset sledovat cesty k souborům a kopii Python.exe, kterou používáte k úspěšnému dokončení cvičení.
Vzdálené výpočetní kontexty a revoscalepy
Tato ukázka ukazuje proces vytvoření modelu Pythonu ve vzdáleném výpočetním kontextu, který umožňuje pracovat z klienta, ale zvolit vzdálené prostředí, jako je SQL Server nebo Spark, kde se operace skutečně provádějí. Cílem vzdáleného výpočetního kontextu je přenést výpočty do umístění, kde se data nacházejí.
Ke spuštění kódu Pythonu na SQL Serveru se vyžaduje balíček revoscalepy . Jedná se o speciální balíček Pythonu poskytovaný Microsoftem, podobně jako balíček RevoScaleR pro jazyk R. Balíček revoscalepy podporuje vytváření výpočetních kontextů a poskytuje infrastrukturu pro předávání dat a modelů mezi místní pracovní stanicí a vzdáleným serverem. Funkce revoscalepy , která podporuje spouštění kódu v databázi, je RxInSqlServer.
V této lekci použijete data na SQL Serveru k trénování lineárního modelu založeného na rx_lin_mod, což je funkce v revoscalepy , která podporuje regresi nad velmi velkými datovými sadami.
Tato lekce také ukazuje základy nastavení a následného použití výpočetního kontextu SQL Serveru v Pythonu.
Spuštění ukázkového kódu
Jakmile připravíte databázi a budete mít data pro trénování uložená v tabulce, otevřete vývojové prostředí Pythonu a spusťte ukázku kódu.
Kód provede následující kroky:
- Importuje požadované knihovny a funkce.
- Vytvoří připojení k SQL Serveru. Vytvoří objekty zdroje dat pro práci s daty.
- Upraví data pomocí transformací , aby je mohl používat algoritmus logistické regrese.
- Volá
rx_lin_moda definuje vzorec použitý k přizpůsobení modelu. - Vygeneruje sadu předpovědí na základě původních dat.
- Vytvoří souhrn na základě předpovídané hodnoty.
Všechny operace se provádějí pomocí instance SQL Serveru jako výpočetního kontextu.
Poznámka:
Ukázku této ukázky spuštěné z příkazového řádku najdete v tomto videu: SQL Server 2017 Advanced Analytics s Pythonem
Ukázkový kód
from revoscalepy import RxComputeContext, RxInSqlServer, RxSqlServerData
from revoscalepy import rx_lin_mod, rx_predict, rx_summary
from revoscalepy import RxOptions, rx_import
import os
def test_linmod_sql():
sql_server = os.getenv('PYTEST_SQL_SERVER', '.')
sql_connection_string = 'Driver=SQL Server;Server=' + sqlServer + ';Database=sqlpy;Trusted_Connection=True;'
print("connectionString={0!s}".format(sql_connection_string))
data_source = RxSqlServerData(
sql_query = "select top 10 * from airlinedemosmall",
connection_string = sql_connection_string,
column_info = {
"ArrDelay" : { "type" : "integer" },
"DayOfWeek" : {
"type" : "factor",
"levels" : [ "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" ]
}
})
sql_compute_context = RxInSqlServer(
connection_string = sql_connection_string,
num_tasks = 4,
auto_cleanup = False
)
#
# Run linmod locally
#
linmod_local = rx_lin_mod("ArrDelay ~ DayOfWeek", data = data_source)
#
# Run linmod remotely
#
linmod = rx_lin_mod("ArrDelay ~ DayOfWeek", data = data_source, compute_context = sql_compute_context)
# Predict results
#
predict = rx_predict(linmod, data = rx_import(input_data = data_source))
summary = rx_summary("ArrDelay ~ DayOfWeek", data = data_source, compute_context = sql_compute_context)
Definování zdroje dat vs. definování výpočetního kontextu
Zdroj dat se liší od výpočetního kontextu. Zdroj dat definuje data použitá v kódu. Výpočetní kontext definuje, kde se kód spustí. Používají ale některé ze stejných informací:
Proměnné Pythonu, například
sql_queryasql_connection_string, definují zdroj dat.Předejte tyto proměnné konstruktoru RxSqlServerData pro implementaci objektu zdroje dat s názvem
data_source.Objekt výpočetního kontextu vytvoříte pomocí konstruktoru RxInSqlServer . Výsledný objekt kontextu výpočetního objektu má název
sql_cc.Tento příklad znovu používá stejný připojovací řetězec, který jste použili ve zdroji dat, za předpokladu, že jsou data ve stejné instanci SQL Serveru, kterou budete používat jako výpočetní kontext.
Zdroj dat a výpočetní kontext ale můžou být na různých serverech.
Změna výpočetních kontextů
Po definování výpočetního kontextu musíte nastavit aktivní výpočetní kontext.
Ve výchozím nastavení se většina operací spouští místně, což znamená, že pokud nezadáte jiný výpočetní kontext, data se načítají ze zdroje dat a kód se spustí ve vašem aktuálním prostředí Pythonu.
Aktivní výpočetní kontext můžete nastavit dvěma způsoby:
- Jako argument metody nebo funkce
- Voláním
rx_set_computecontext
Nastavení výpočetního kontextu jako argumentu metody nebo funkce
V tomto příkladu nastavíte výpočetní kontext pomocí argumentu jednotlivé funkce rx .
linmod = rx_lin_mod_ex("ArrDelay ~ DayOfWeek", data = data, compute_context = sql_compute_context)
Tento výpočetní kontext se znovu použije ve volání rxsummary:
summary = rx_summary("ArrDelay ~ DayOfWeek", data = data_source, compute_context = sql_compute_context)
Explicitní nastavení výpočetního kontextu pomocí rx_set_compute_context
Funkce rx_set_compute_context umožňuje přepínat mezi již definovanými výpočetními kontexty.
Jakmile nastavíte aktivní výpočetní kontext, zůstane aktivní, dokud ho nezměníte.
Použití paralelního zpracování a streamování
Při definování výpočetního kontextu můžete také nastavit parametry, které řídí způsob zpracování dat výpočetním kontextem. Tyto parametry se liší v závislosti na typu zdroje dat.
U výpočetních kontextů SQL Serveru můžete nastavit velikost dávky nebo poskytnout rady o stupni paralelismu, který se má použít při spouštění úloh.
- Ukázka se spustila na počítači se čtyřmi procesory, takže parametr je nastavený na 4, aby
num_tasksumožňoval maximální využití prostředků. - Pokud tuto hodnotu nastavíte na 0, SQL Server použije výchozí hodnotu, což je spouštění co největšího počtu úloh paralelně, podle aktuálního nastavení MAXDOP serveru. Přesný počet úkolů, které se můžou přidělit, ale závisí na mnoha dalších faktorech, jako jsou nastavení serveru a na dalších spuštěných úlohách.
Další kroky
Tyto další ukázky a kurzy v Pythonu ukazují kompletní scénáře využívající složitější zdroje dat a také použití vzdálených výpočetních kontextů.