Aracılığıyla paylaş


SQL Server Machine Learning Services üzerinde Python geliştirmesi için veri bilimi istemcisi ayarlama

Şunlar için geçerlidir: Linux üzerinde SQL Server 2016 (13.x) SQL Server 2017 (14.x) SQL Server 2019 (15.x)

Python tümleştirmesi, Bir Machine Learning Services (In-Database) yüklemesine Python seçeneğini eklediğinizde SQL Server 2017 ve sonraki sürümlerde kullanılabilir.

Uyarı

Şu anda bu makale yalnızca Linux için SQL Server 2016 (13.x), SQL Server 2017 (14.x), SQL Server 2019 (15.x) ve SQL Server 2019 (15.x) için geçerlidir.

SQL Server için Python çözümleri geliştirmek ve dağıtmak için Microsoft'un revoscalepy'sini ve diğer Python kitaplıklarını geliştirme iş istasyonunuzu yükleyin. Uzak SQL Server örneğinde de bulunan revoscalepy kitaplığı, her iki sistem arasında bilgi işlem isteklerini koordine eder.

Bu makalede, makine öğrenmesi ve Python tümleştirmesi için etkinleştirilmiş bir uzak SQL Server ile etkileşim kurabilmek için Python geliştirme iş istasyonu yapılandırmayı öğrenin. Bu makaledeki adımları tamamladıktan sonra, SQL Server'dakilerle aynı Python kitaplıklarına sahip olacaksınız. Ayrıca, yerel bir Python oturumundan SQL Server'da uzak bir Python oturumuna hesaplama göndermeyi de öğreneceksiniz.

İstemci-sunucu bileşenlerinin diyagramı.

Yüklemeyi doğrulamak için, bu makalede açıklandığı gibi yerleşik Jupyter Not Defterlerini kullanabilir veya kitaplıkları PyCharm'a veya normalde kullandığınız başka bir IDE'ye bağlayabilirsiniz .

Tip

Bu alıştırmaların video gösterimi için bkz. Jupyter Notebooks'tan SQL Server'da R ve Python'ı uzaktan çalıştırma.

Yaygın kullanılan araçlar

SQL'de yeni olan bir Python geliştiricisi veya Python ve veritabanı içi analiz konusunda yeni olan bir SQL geliştiricisi olmanız fark etmese de veritabanı içi analizin tüm özelliklerini kullanmak için hem Python geliştirme aracına hem de SQL Server Management Studio (SSMS) gibi bir T-SQL sorgu düzenleyicisine ihtiyacınız olacaktır.

Python geliştirmesi için, SQL Server tarafından yüklenen Anaconda dağıtımında paketlenen Jupyter Notebooks'u kullanabilirsiniz. Bu makalede, Sql Server'da Python kodunu yerel olarak ve uzaktan çalıştırabilmek için Jupyter Notebooks'u nasıl başlatabileceğiniz açıklanmaktadır.

SSMS, Python kodu içerenler de dahil olmak üzere SQL Server'da saklı yordamlar oluşturmak ve çalıştırmak için yararlı olan ayrı bir indirmedir. Jupyter Notebooks'ta yazdığınız neredeyse tüm Python kodları saklı yordama eklenebilir. SSMS ve ekli Python hakkında bilgi edinmek için diğer hızlı başlangıçları adım adım izleyebilirsiniz.

1 - Python paketlerini yükleme

Yerel iş istasyonları, Temel Python 3.5.2 dağıtımına sahip Anaconda 4.2.0 ve Microsoft'a özgü paketler de dahil olmak üzere SQL Server'da bulunanlarla aynı Python paketi sürümlerine sahip olmalıdır.

Yükleme betiği, Python istemcisine Microsoft'a özgü üç kitaplık ekler. Betik kurulumu gerçekleştirir:

  • revoscalepy , veri kaynağı nesnelerini ve işlem bağlamını tanımlamak için kullanılır.
  • makine öğrenmesi algoritmaları sağlayan microsoftml.
  • azureml , tek başına sunucu bağlamıyla ilişkili işletimselleştirme görevleri için geçerlidir ve veritabanı içi analiz için sınırlı kullanımda olabilir.
  1. Yükleme betiğini indirin. Aşağıdaki uygun GitHub sayfasında Ham dosyayı indir'i seçin.

    • https://aka.ms/mls-py Microsoft Python paketlerinin 9.2.1 sürümünü yükler. Bu sürüm varsayılan SQL Server örneğine karşılık gelir.

    • https://aka.ms/mls93-py Microsoft Python paketlerinin 9.3 sürümünü yükler.

  2. Yükseltilmiş yönetici izinlerine sahip bir PowerShell penceresi açın ( Yönetici olarak çalıştır'a sağ tıklayın).

  3. Yükleyiciyi indirdiğiniz klasöre gidin ve betiği çalıştırın. Kitaplıklar için bir klasör konumu belirtmek amacıyla -InstallFolder komut satırı bağımsız değişkenini ekleyin. Örneğin:

    cd {{download-directory}}
    .\Install-PyForMLS.ps1 -InstallFolder "C:\path-to-python-for-mls"
    

Yükleme klasörünü atlarsanız varsayılan değer olur %ProgramFiles%\Microsoft\PyForMLS.

Yüklemenin tamamlanması biraz zaman alır. İlerleme durumunu PowerShell penceresinde izleyebilirsiniz. Kurulum tamamlandığında, eksiksiz bir paket kümeniz vardır.

Tip

Windows üzerinde Python programları çalıştırma hakkında genel amaçlı bilgiler için Windows için Python SSS'yi öneririz.

2 - Yürütülebilir dosyaları bulma

PowerShell'de Python.exe, betikler ve diğer paketlerin yüklendiğini onaylamak için yükleme klasörünün içeriğini listeleyin.

  1. Kök sürücüye gitmek için cd \ girin -InstallFolder ve ardından önceki adımda belirttiğiniz yolu girin. Yükleme sırasında bu parametreyi atlarsanız, varsayılan değer olur cd %ProgramFiles%\Microsoft\PyForMLS.

  2. Yürütülebilir dosyaları listelemek için dir *.exe giriniz. python.exe, pythonw.exeve uninstall-anaconda.exegörmeniz gerekir.

    Dir *.exeçalıştırma işleminden kaynaklanan Python yürütülebilir dosyaları listesini gösteren PowerShell terminalinin ekran görüntüsü.

Birden çok Python sürümüne sahip sistemlerde, revoscalepy ve diğer Microsoft paketlerini yüklemek istiyorsanız bu belirli Python.exe kullanmayı unutmayın.

Uyarı

Yükleme betiği, bilgisayarınızdaki PATH ortam değişkenini değiştirmez; bu da yeni yüklediğiniz python yorumlayıcının ve modüllerin sahip olabileceğiniz diğer araçlar tarafından otomatik olarak kullanılamadığı anlamına gelir. Python yorumlayıcısını ve kitaplıklarını araçlara bağlama konusunda yardım için bkz. IDE yükleme.

3 - Jupyter Not Defterlerini Açma

Anaconda, Jupyter Notebooks içerir. Sonraki adım olarak bir not defteri oluşturun ve az önce yüklediğiniz kitaplıkları içeren bazı Python kodlarını çalıştırın.

  1. Betikler klasöründeki Jupyter Not Defteri'ni açın, PowerShell isteminde, hala %ProgramFiles%\Microsoft\PyForMLS dizinindeyken.

    .\Scripts\jupyter-notebook
    

    Varsayılan tarayıcınızda, https://localhost:8889/tree adresinde bir defter açılmalıdır.

    Başka bir başlangıç yolu da jupyter-notebook.exeçift tıklamaktır.

  2. Yeni'yi ve ardından Python 3'i seçin.

    Yeni Python 3 seçimini içeren bir Jupyter not defterinden ekran görüntüsü.

  3. Microsoft'a özgü kitaplıklardan birini yüklemek için komutunu girin import revoscalepy ve çalıştırın.

  4. Sürüm bilgilerini döndürmek için girin ve çalıştırın print(revoscalepy.__version__) . 9.2.1 veya 9.3.0'ı görmeniz gerekir. Bu sürümlerden birini revoscalepy'i sunucuda kullanabilirsiniz.

  5. Daha karmaşık bir deyim serisi girin. Bu örnek, yerel veri kümesi üzerinden rx_summary kullanarak özet istatistikleri oluşturur. Diğer işlevler örnek verilerin konumunu alır ve yerel bir .xdf dosyası için bir veri kaynağı nesnesi oluşturur.

    import os
    from revoscalepy import rx_summary
    from revoscalepy import RxXdfData
    from revoscalepy import RxOptions
    sample_data_path = RxOptions.get_option("sampleDataDir")
    print(sample_data_path)
    ds = RxXdfData(os.path.join(sample_data_path, "AirlineDemoSmall.xdf"))
    summary = rx_summary("ArrDelay+DayOfWeek", ds)
    print(summary)
    

Aşağıdaki ekran görüntüsünde girişi ve çıkışın kısa olacak şekilde kırpılmış bir bölümü gösterilmektedir.

Revoscalepy girişlerini ve çıkışlarını gösteren jupyter not defterinin ekran görüntüsü.

4 - SQL izinlerini alma

Betikleri çalıştırmak ve verileri karşıya yüklemek için SQL Server örneğine bağlanmak için veritabanı sunucusunda geçerli bir oturum açma izniniz olmalıdır. SQL oturum açma veya tümleşik Windows kimlik doğrulaması kullanabilirsiniz. Genellikle Windows tümleşik kimlik doğrulamasını kullanmanızı öneririz, ancak sql oturum açma bilgilerini kullanmak, özellikle betiğinizde dış verilere bağlantı dizeleri bulunduğunda bazı senaryolar için daha basittir.

En azından, kodu çalıştırmak için kullanılan hesabın çalıştığınız veritabanlarından okuma iznine ve ayrıca HERHANGI BIR HARİÇ BETIĞI YÜRÜT özel iznine sahip olması gerekir. Geliştiricilerin çoğu ayrıca saklı yordamlar oluşturmak ve eğitim verileri veya puanlanmış veriler içeren tablolara veri yazmak için izinlere ihtiyaç duyar.

Veritabanı yöneticisinden Python kullandığınız veritabanında hesabınız için aşağıdaki izinleri yapılandırmasını isteyin:

  • Sunucuda Python çalıştırmak için HERHANGI BIR DıŞ BETIĞI YÜRÜT.
  • db_datareader ayrıcalıkları, modeli eğitmek için kullanılan sorguları çalıştırmak için gereklidir.
  • db_datawriter eğitim verilerini veya puanlanmış verileri yazmak için kullanılır.
  • Saklı yordamlar, tablolar, işlevler gibi nesneler oluşturmak için db_owner. Ayrıca örnek ve test veritabanları oluşturmak için db_owner gerekir.

Kodunuz varsayılan olarak SQL Server ile yüklü olmayan paketler gerektiriyorsa, paketlerin örnekle birlikte yüklenmesi için veritabanı yöneticisiyle birlikte düzenleyin. SQL Server güvenli bir ortamdır ve paketlerin nereye yüklenebileceğine ilişkin kısıtlamalar vardır. Haklarınız olsa bile, paketlerin kodunuzun bir parçası olarak geçici olarak yüklenmesi önerilmez. Ayrıca, sunucu kitaplığına yeni paketler yüklemeden önce her zaman güvenlik etkilerini dikkatle göz önünde bulundurun.

5 - Test verileri oluşturma

Uzak sunucuda veritabanı oluşturma izinleriniz varsa, aşağıdaki kodu çalıştırarak bu makaledeki kalan adımlar için kullanılan Iris tanıtım veritabanını oluşturabilirsiniz.

5-1 - irissql veritabanını uzaktan oluşturma

import pyodbc

# creating a new db to load Iris sample in
new_db_name = "irissql"
connection_string = "Driver=SQL Server;Server=localhost;Database={0};Trusted_Connection=Yes;" 
                        # you can also swap Trusted_Connection for UID={your username};PWD={your password}
cnxn = pyodbc.connect(connection_string.format("master"), autocommit=True)
cnxn.cursor().execute("IF EXISTS(SELECT * FROM sys.databases WHERE [name] = '{0}') DROP DATABASE {0}".format(new_db_name))
cnxn.cursor().execute("CREATE DATABASE " + new_db_name)
cnxn.close()

print("Database created")

5-2 - SkLearn'den Iris örneğini içeri aktarma

from sklearn import datasets
import pandas as pd

# SkLearn has the Iris sample dataset built in to the package
iris = datasets.load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)

5-3 - Tablo oluşturmak ve Iris verilerini yüklemek için Revoscalepy API'lerini kullanma

from revoscalepy import RxSqlServerData, rx_data_step

# Example of using RX APIs to load data into SQL table. You can also do this with pyodbc
table_ref = RxSqlServerData(connection_string=connection_string.format(new_db_name), table="iris_data")
rx_data_step(input_data = df, output_file = table_ref, overwrite = True)

print("New Table Created: Iris")
print("Sklearn Iris sample loaded into Iris table")

6 - Uzak bağlantıyı test edin

Bu sonraki adımı denemeden önce, SQL Server örneği üzerinde izinleriniz olduğundan ve Iris örnek veritabanına yönelik bir bağlantı dizesine sahip olduğunuzdan emin olun. Veritabanı yoksa ve yeterli izinlere sahipseniz , bu satır içi yönergeleri kullanarak bir veritabanı oluşturabilirsiniz.

Bağlantı dizesini geçerli değerlerle değiştirin. Örnek kod "Driver=SQL Server;Server=localhost;Database=irissql;Trusted_Connection=Yes;" kullanır, ancak kodunuz, örnek ismiyle birlikte uzak bir sunucuyu, veritabanı oturum açma bilgileriyle eşleşen bir kimlik bilgisi opsiyonunu belirtmelidir.

6-1 İşlev tanımlama

Aşağıdaki kod, sonraki bir adımda SQL Server'a göndereceği bir işlevi tanımlar. Yürütürken, iris veri kümesinin dağılım çizimlerini oluşturmak için uzak sunucudaki veri ve kitaplıkları (revoscalepy, pandas, matplotlib) kullanır. Tarayıcıda işlemek için .png bayt akışını Jupyter Notebooks'a geri döndürür.

def send_this_func_to_sql():
    from revoscalepy import RxSqlServerData, rx_import
    from pandas.tools.plotting import scatter_matrix
    import matplotlib.pyplot as plt
    import io
    
    # remember the scope of the variables in this func are within our SQL Server Python Runtime
    connection_string = "Driver=SQL Server;Server=localhost;Database=irissql;Trusted_Connection=Yes;"
    
    # specify a query and load into pandas dataframe df
    sql_query = RxSqlServerData(connection_string=connection_string, sql_query = "select * from iris_data")
    df = rx_import(sql_query)
    
    scatter_matrix(df)
    
    # return bytestream of image created by scatter_matrix
    buf = io.BytesIO()
    plt.savefig(buf, format="png")
    buf.seek(0)
    
    return buf.getvalue()

6-2 İşlevi SQL Server'a gönderme

Bu örnekte, uzak işlem bağlamını oluşturun ve ardından işlevin yürütülmesini rx_exec ile SQL Server'a gönderin. rx_exec işlevi, bir işlem bağlamını bağımsız değişken olarak kabul ettiğinden kullanışlıdır. Uzaktan yürütmek istediğiniz herhangi bir işlevin işlem bağlamı bağımsız değişkeni olmalıdır. rx_lin_mod gibi bazı işlevler bu bağımsız değişkeni doğrudan destekler. Desteklemeyen işlemler için rx_exec kullanarak kodunuzu uzak işlem bağlamında teslim edebilirsiniz.

Bu örnekte, SQL Server'dan Jupyter Notebook'a hiçbir ham veri aktarılmamalıdır. Tüm hesaplamalar Iris veritabanında gerçekleşir ve istemciye yalnızca görüntü dosyası döndürülür.

from IPython import display
import matplotlib.pyplot as plt 
from revoscalepy import RxInSqlServer, rx_exec

# create a remote compute context with connection to SQL Server
sql_compute_context = RxInSqlServer(connection_string=connection_string.format(new_db_name))

# use rx_exec to send the function execution to SQL Server
image = rx_exec(send_this_func_to_sql, compute_context=sql_compute_context)[0]

# only an image was returned to my jupyter client. All data remained secure and was manipulated in my db.
display.Image(data=image)

Aşağıdaki ekran görüntüsünde giriş ve dağılım grafiği çıktısı gösterilmektedir.

Dağılım grafiği çıktısını gösteren Jupyter Not Defteri'nin ekran görüntüsü.

7 - Araçlardan Python'ı başlatma

Geliştiriciler sık sık Python'ın birden çok sürümüyle çalıştığından kurulum, PATH'inize Python eklemez. Kurulum tarafından yüklenen Python yürütülebilir dosyasını ve kitaplıklarını kullanmak için, IDE'nizi hem revoscalepy hem de microsoftml ile birlikte sağlanan yoldaki Python.exe dosyasına bağlayın.

Komut satırı

Python.exe 'den %ProgramFiles%\Microsoft\PyForMLS (veya Python istemci kitaplığı yüklemesi için belirttiğiniz konumdan) çalıştırdığınızda, tam Anaconda dağıtımına ve Microsoft Python modüllerine(revoscalepy ve microsoftml) erişebilirsiniz.

  1. %ProgramFiles%\Microsoft\PyForMLS gidin ve Python.exe'yi çalıştırın.
  2. Etkileşimli yardımı açın: help().
  3. Yardım istemine modülün adını yazın: help> revoscalepy. Yardım, adı, paket içeriğini, sürümünü ve dosya konumunu döndürür.
  4. Sürüm ve paket bilgilerini yardım> isteminde döndür: revoscalepy. Yardımdan çıkmak için Birkaç kez Enter tuşuna basın.
  5. Modülü içeri aktarma: import revoscalepy.

Jupyter Not Defterleri

Bu makalede, revoscalepy yönelik işlev çağrılarını göstermek için yerleşik Jupyter Notebook'lar kullanılır. Bu araçta yeniyseniz, aşağıdaki ekran görüntüsünde parçaların nasıl bir araya geldiği ve bunların neden "yalnızca çalıştığı" gösterilmektedir.

Üst klasör %ProgramFiles%\Microsoft\PyForMLS Anaconda ve Microsoft paketlerini içerir. Jupyter Notebooks, Anaconda'da Betikler klasörünün altında bulunur ve Python yürütülebilir dosyaları Jupyter Notebooks ile otomatik olarak kaydedilir. Site paketleri altında bulunan paketler, veri bilimi ve makine öğrenmesi için kullanılan üç Microsoft paketi de dahil olmak üzere bir not defterine aktarılabilir.

Yürütülebilir dosyalar ve kitaplıklar klasörünü gösteren Windows gezgini ekran görüntüsü.

Başka bir IDE kullanıyorsanız Python yürütülebilir dosyaları ve işlev kitaplıklarını aracınıza bağlamanız gerekir. Aşağıdaki bölümlerde yaygın olarak kullanılan araçlara yönelik yönergeler sağlanmaktadır.

Visual Studio

Visual Studio'da Python kullanıyorsanız, Microsoft Python paketlerini içeren bir Python ortamı oluşturmak için aşağıdaki yapılandırma seçeneklerini kullanın.

Yapılandırma ayarı value
Önek Yolu %ProgramFiles%\Microsoft\PyForMLS
Yorumlayıcı yolu %ProgramFiles%\Microsoft\PyForMLS\python.exe
Pencereli yorumlayıcı %ProgramFiles%\Microsoft\PyForMLS\pythonw.exe

Python ortamını yapılandırmayla ilgili yardım için bkz. Visual Studio'da Python ortamlarını yönetme.

PyCharm

PyCharm'da yorumlayıcıyı yüklü Python yürütülebilir dosyası olarak ayarlayın.

  1. Yeni bir projede, Ayarlar'da Yerel Ekle'yi seçin.

  2. %ProgramFiles%\Microsoft\PyForMLS\ girin.

Artık revoscalepy, microsoftml veya azureml modüllerini içeri aktarabilirsiniz. Etkileşimli bir pencere açmak için Araçlar>Python Konsolu'nu da seçebilirsiniz.