Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir: SQL Server 2017 (14.x) ve sonraki sürümleri
Microsoft'un revoscalepy Python kitaplığı, veri keşfi, görselleştirme, dönüşümler ve analiz için veri bilimi algoritmaları sağlar. Bu kitaplık, SQL Server'daki Python tümleştirme senaryolarında stratejik öneme sahiptir. Çok çekirdekli bir sunucuda , revoscalepy işlevleri paralel olarak çalıştırılabilir. Merkezi sunucu ve istemci iş istasyonları (ayrı fiziksel bilgisayarlar, tümü aynı revoscalepy kitaplığına sahip olan ayrı fiziksel bilgisayarlar) olan dağıtılmış bir mimaride, yerel olarak başlayan ancak ardından yürütmeyi verilerin bulunduğu uzak bir SQL Server örneğine kaydıran Python kodu yazabilirsiniz.
Revoscalepy'yi aşağıdaki Microsoft ürün ve dağıtımlarında bulabilirsiniz:
- SQL Server Makine Öğrenimi Hizmetleri (veritabanı içinde)
- İstemci taraflı Python kütüphaneleri (geliştirme iş istasyonları için)
Bu alıştırmada, işlem bağlamını giriş olarak kabul eden revoscalepy algoritmalarından biri olan rx_lin_mod dayalı doğrusal regresyon modelinin nasıl oluşturulacağı gösterilmektedir. Bu alıştırmada çalıştırılacak kod, uzaktan işlem bağlamını etkinleştiren revoscalepy işlevleri tarafından etkinleştirilen kod yürütmeyi yerel bir bilgi işlem ortamından uzak bilgi işlem ortamına kaydırıyor.
Bu öğreticiyi tamamlayarak şunları nasıl yapacağınızı öğreneceksiniz:
- Doğrusal model oluşturmak için revoscalepy kullanma
- İşlemleri yerelden uzak işlem bağlamlarına kaydırma
Önkoşullar
Bu alıştırmada kullanılan örnek veriler flightdata veritabanıdır.
Bu makaledeki örnek kodu çalıştırmak için bir IDE'ye ihtiyacınız vardır ve IDE'nin Python yürütülebilir dosyasıyla bağlantılı olması gerekir.
İşlem bağlamı değişimini uygulamak için yerel bir iş istasyonuna ve Machine Learning Services ile Python'ın etkin olduğu bir SQL Server veritabanı altyapısı örneğine ihtiyacınız vardır.
İpucu
İki bilgisayarınız yoksa, ilgili uygulamaları yükleyerek bir fiziksel bilgisayarda uzak işlem bağlamı benzetimi yapabilirsiniz. İlk olarak, SQL Server Machine Learning Services yüklemesi "uzak" örnek olarak çalışır. İkincisi, Python istemci kitaplıklarının yüklemesi istemci olarak çalışır. Aynı makinede aynı Python dağıtımının ve Microsoft Python kitaplıklarının iki kopyasına sahip olursunuz. Alıştırmayı başarıyla tamamlamak için dosya yollarını ve hangi Python.exe kopyasını kullandığınızı izlemeniz gerekir.
Uzak işlem bağlamları ve revoscalepy
Bu örnek, uzak işlem bağlamında python modeli oluşturma işlemini gösterir. Bu işlem istemciden çalışmanıza olanak tanır, ancak sql Server veya Spark gibi işlemlerin gerçekleştirilmesini sağlayan uzak bir ortam seçebilirsiniz. Uzak işlem bağlamının amacı, verilerin bulunduğu yere hesaplama getirmektir.
SQL Server'da Python kodu yürütmek için revoscalepy paketi gerekir. Bu, R dili için RevoScaleR paketine benzer şekilde Microsoft tarafından sağlanan özel bir Python paketidir. Revoscalepy paketi, işlem bağlamlarının oluşturulmasını destekler ve yerel bir iş istasyonu ile uzak sunucu arasında veri ve model geçirmeye yönelik altyapı sağlar. Veritabanı içi kod yürütmeyi destekleyen revoscalepy işlevi RxInSqlServer'dır.
Bu derste, SQL Server'daki verileri kullanarak çok büyük veri kümeleri üzerinde regresyonu destekleyen revoscalepy işlevi olan rx_lin_mod temelinde doğrusal bir model eğiteceksiniz.
Bu ders ayrıca Python'da SQL Server işlem bağlamını ayarlama ve kullanma ile ilgili temel bilgileri de gösterir.
Örnek kodu çalıştırma
Veritabanını hazırladıktan ve eğitim verilerini bir tabloda depoladıktan sonra bir Python geliştirme ortamı açın ve kod örneğini çalıştırın.
Kod aşağıdaki adımları gerçekleştirir:
- Gerekli kitaplıkları ve işlevleri içeri aktarır.
- SQL Server'a bir bağlantı oluşturur. Verilerle çalışmak için veri kaynağı nesneleri oluşturur.
- Verileri, lojistik regresyon algoritması tarafından kullanılabilmesi için dönüştürmeleri kullanarak değiştirir.
- Modeli sığdırmak için kullanılan formülü çağırır
rx_lin_modve tanımlar. - Özgün verileri temel alan bir tahmin kümesi oluşturur.
- Tahmin edilen değerleri temel alan bir özet oluşturur.
Tüm işlemler, işlem bağlamı olarak SQL Server örneği kullanılarak gerçekleştirilir.
Uyarı
Komut satırından çalıştırılan bu örneğin tanıtımı için şu videoya bakın: Python ile SQL Server 2017 Advanced Analytics
Örnek kodu
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)
Veri kaynağı tanımlama ve işlem bağlamı tanımlama karşılaştırması
Veri kaynağı, işlem bağlamından farklıdır. Veri kaynağı, kodunuzda kullanılan verileri tanımlar. İşlem bağlamı, kodun yürütüleceği yeri tanımlar. Ancak, aynı bilgilerden bazılarını kullanırlar:
ve
sql_querygibisql_connection_stringPython değişkenleri, verilerin kaynağını tanımlar.adlı veri kaynağı nesnesini uygulamak için bu değişkenleri
data_sourceoluşturucusna geçirin.RxInSqlServer oluşturucusunu kullanarak bir işlem bağlamı nesnesi oluşturursunuz. Sonuçta elde edilen işlem bağlamı nesnesi olarak adlandırılır
sql_cc.Bu örnek, verilerin işlem bağlamı olarak kullanacağınız SQL Server örneğinde olduğu varsayımı üzerine veri kaynağında kullandığınız bağlantı dizesini yeniden kullanır.
Ancak, veri kaynağı ve işlem bağlamı farklı sunucularda olabilir.
İşlem bağlamlarını değiştirme
İşlem bağlamını tanımladıktan sonra etkin işlem bağlamını ayarlamanız gerekir.
Varsayılan olarak, çoğu işlem yerel olarak çalıştırılır; başka bir deyişle farklı bir işlem bağlamı belirtmezseniz veriler veri kaynağından getirilir ve kod geçerli Python ortamınızda çalışır.
Etkin işlem bağlamını ayarlamanın iki yolu vardır:
- Bir yöntemin veya fonksiyonun bağımsız değişkeni olarak
- Arayarak
rx_set_computecontext
İşlem bağlamını bir yöntemin veya işlevin bağımsız değişkeni olarak ayarlama
Bu örnekte, tek tek rx işlevinin bağımsız değişkenini kullanarak işlem bağlamını ayarlarsınız.
linmod = rx_lin_mod_ex("ArrDelay ~ DayOfWeek", data = data, compute_context = sql_compute_context)
Bu işlem bağlamı rxsummary çağrısında yeniden kullanılır:
summary = rx_summary("ArrDelay ~ DayOfWeek", data = data_source, compute_context = sql_compute_context)
rx_set_compute_context kullanarak açıkça bir işlem bağlamı ayarlama
İşlev rx_set_compute_context önceden tanımlanmış olan işlem bağlamları arasında geçiş yapmanızı sağlar.
Etkin işlem bağlamını ayarladıktan sonra, siz değiştirene kadar etkin kalır.
Paralel işleme ve akış kullanma
İşlem bağlamını tanımlarken, verilerin işlem bağlamı tarafından nasıl işleneceğini denetleyebilen parametreler de ayarlayabilirsiniz. Bu parametreler veri kaynağı türüne bağlı olarak farklılık gösterir.
SQL Server işlem bağlamları için toplu iş boyutunu ayarlayabilir veya çalışan görevlerde kullanılacak paralellik derecesi hakkında ipuçları sağlayabilirsiniz.
- Örnek, dört işlemcili bir bilgisayarda çalıştırıldığından
num_tasks, kaynakların maksimum kullanımına izin vermek için parametresi 4 olarak ayarlanır. - Bu değeri 0 olarak ayarlarsanız, SQL Server varsayılan değeri kullanır. Bu, sunucunun geçerli MAXDOP ayarları altında mümkün olduğunca çok görevi paralel olarak çalıştırmaktır. Ancak, ayrılabilecek görevlerin tam sayısı sunucu ayarları ve çalışan diğer işler gibi diğer birçok faktöre bağlıdır.
Sonraki Adımlar
Bu ek Python örnekleri ve öğreticileri, hem daha karmaşık veri kaynaklarını hem de uzak işlem bağlamlarının kullanımını kullanan uçtan uca senaryoları gösterir.