Aracılığıyla paylaş


SQL Server Machine Learning Services'da Python dil uzantısı

Şunlar için geçerlidir: SQL Server 2017 (14.x) ve sonraki sürümleri

Bu makalede , SQL Server Machine Learning Services ile dış Python betiklerini çalıştırmaya yönelik Python uzantısı açıklanmaktadır. Uzantı aşağıdakileri ekler:

  • Python yürütme ortamı
  • Python 3.5 çalışma zamanı ve yorumlayıcı ile anaconda dağıtımı
  • Standart kitaplıklar ve araçlar
  • Microsoft Python paketleri:

Python 3.5 çalışma zamanı ve yorumlayıcının yüklenmesi, standart Python çözümleriyle neredeyse tam uyumluluk sağlar. Python, veritabanı işlemlerinin tehlikeye atılmaması için SQL Server'dan ayrı bir işlemde çalışır.

Python bileşenleri

SQL Server hem açık kaynak hem de özel paketler içerir. Kurulum tarafından yüklenen Python çalışma zamanı, Python 3.5 ile Anaconda 4.2'dir. Python çalışma zamanı SQL araçlarından bağımsız olarak yüklenir ve çekirdek altyapı işlemlerinin dışında, genişletilebilirlik çerçevesinde yürütülür. Python ile Machine Learning Services yüklemesinin bir parçası olarak, GNU Genel Lisansı koşullarını onaylamanız gerekir.

SQL Server, Python yürütülebilir dosyalarını değiştirmez, ancak kurulum tarafından yüklenen Python sürümünü kullanmanız gerekir çünkü bu sürüm, ürün paketleri için derlenip test edilmiştir. Anaconda dağıtımı tarafından desteklenen paketlerin listesi için Continuum analiz sitesine bakın: Anaconda paket listesi.

Belirli bir veritabanı altyapısı örneğiyle ilişkili Anaconda dağıtımı, örnekle ilişkili klasörde bulunabilir. Örneğin, varsayılan örnekte Machine Learning Services ve Python ile SQL Server 2017 veritabanı altyapısı yüklediyseniz altına bakın C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\PYTHON_SERVICES.

Paralel ve dağıtılmış iş yükleri için Microsoft tarafından eklenen Python paketleri aşağıdaki kitaplıkları içerir.

Kütüphane Description
revoscalepy Veri kaynağı nesnelerini ve veri araştırma, işleme, dönüştürme ve görselleştirmeyi destekler. Uzaktan işlem bağlamlarının yanı sıra rxLinMod gibi çeşitli ölçeklenebilir makine öğrenmesi modellerinin oluşturulmasını destekler. Daha fazla bilgi için bkz: SQL Server ile revoscalepy modülü.
microsoftml Hız ve doğruluk için iyileştirilmiş makine öğrenmesi algoritmalarının yanı sıra metin ve görüntülerle çalışmaya yönelik satır içi dönüşümleri içerir. Daha fazla bilgi için bkz. SQL Server ile microsoftml modülü.

Microsoftml ve revoscalepy sıkı bir şekilde bağlanmış; microsoftml'de kullanılan veri kaynakları revoscalepy nesneleri olarak tanımlanır. MicrosoftML'ye Revoscalepy aktarımında hesaplama bağlamı sınırlamaları. Tüm işlevler yerel işlemler için kullanılabilir ancak uzak işlem bağlamı için RxInSqlServer gerekir.

SQL Server'da Python kullanma

Revoscalepy modülünü Python kodunuz içine aktarıp diğer Python işlevleri gibi modülden işlevleri çağırın.

Desteklenen veri kaynakları, diğer kaynaklarla veya R çözümleriyle veri alışverişi yapmak için ODBC veritabanları, SQL Server ve XDF dosya biçimini içerir. Python için giriş verileri tablosal olmalıdır. Tüm Python sonuçları pandas veri çerçevesi biçiminde döndürülmelidir.

Desteklenen işlem bağlamları yerel veya uzak SQL Server işlem bağlamıdır. Uzak işlem bağlamı, iş istasyonu gibi bir bilgisayarda başlayan ancak ardından betik yürütmeyi uzak bilgisayara getiren kod yürütmeyi ifade eder. İşlem bağlamını değiştirmek için her iki sistem de aynı revoscalepy kitaplığına sahip olmasını gerektirir.

Beklediğiniz gibi yerel işlem bağlamı, T-SQL içinde kod içeren veya saklı yordama eklenmiş olan veritabanı altyapısı örneğiyle aynı sunucuda Python kodunun yürütülmesini içerir. Ayrıca kodu yerel bir Python IDE'den çalıştırabilir ve uzak işlem bağlamı tanımlayarak betiğin SQL Server bilgisayarında yürütülmesini sağlayabilirsiniz.

Yürütme mimarisi

Aşağıdaki diyagramlarda desteklenen senaryoların her birinde SQL Server bileşenlerinin Python çalışma zamanıyla etkileşimi gösterilmiştir: veritabanında betik çalıştırma ve SQL Server işlem bağlamı kullanarak Python terminalinden uzaktan yürütme.

Veritabanında yürütülen Python betikleri

SQL Server'da Python "içinde" çalıştırdığınızda, Python betiğini özel bir saklı yordam olan sp_execute_external_script içinde kapsüllemeniz gerekir.

Betik saklı yordama eklendikten sonra, saklı yordam çağrısı yapabilen tüm uygulamalar Python kodunun yürütülmesini başlatabilir. Bundan sonra SQL Server kod yürütmeyi aşağıdaki diyagramda özetlenen şekilde yönetir.

script-in-db-python

  1. Python çalışma zamanı isteği, saklı yordama geçirilen parametre @language='Python' tarafından belirtilir. SQL Server bu isteği başlatma çubuğu hizmetine gönderir. Linux'ta SQL, her kullanıcı için ayrı bir başlatma çubuğu işlemiyle iletişim kurmak için bir başlatma çubuğu hizmeti kullanır. Ayrıntılar için Genişletilebilirlik mimarisi diyagramına bakın.
  2. Başlatma çubuğu hizmeti uygun başlatıcıyı başlatır; bu durumda PythonLauncher.
  3. PythonLauncher dış Python35 işlemini başlatır.
  4. BxlServer, veri alışverişlerini ve çalışma sonuçlarının depolanmasını yönetmek için Python çalışma zamanıyla eşgüdümlü çalışır.
  5. SQL Uydu, SQL Server ile ilgili görevler ve işlemler hakkındaki iletişimleri yönetir.
  6. BxlServer, SQL Server'a durum ve sonuçları iletmek için SQL Uydusu'nu kullanır.
  7. SQL Server sonuçları alır ve ilgili görevleri ve işlemleri kapatır.

Uzak istemciden yürütülen Python betikleri

Python betiklerini dizüstü bilgisayar gibi uzak bir bilgisayardan çalıştırabilir ve bu koşullar karşılanırsa SQL Server bilgisayarı bağlamında yürütmelerini sağlayabilirsiniz:

  • Skriptleri uygun şekilde tasarlarsınız
  • Uzak bilgisayar, Machine Learning Services tarafından kullanılan genişletilebilirlik kitaplıklarını yüklemiştir. Uzak işlem bağlamlarını kullanmak için revoscalepy paketi gereklidir.

Aşağıdaki diyagramda betikler uzak bir bilgisayardan gönderildiğinde genel iş akışı özetlenmiştir.

remote-sqlcc-from-python

  1. Revoscalepy'de desteklenen işlevler için Python çalışma zamanı, BxlServer'ı çağıran bir bağlama işlevi çağırır.
  2. BxlServer, Machine Learning Services(In-Database) ile birlikte sağlanır ve Python çalışma zamanından ayrı bir işlemde çalışır.
  3. BxlServer, bağlantı hedefini belirler ve ODBC kullanarak bir bağlantı başlatır ve Python betiğindeki bağlantı dizesinin bir parçası olarak sağlanan kimlik bilgilerini geçirir.
  4. BxlServer, SQL Server örneğine bir bağlantı açar.
  5. Bir dış betik çalışma zamanı çağrıldığında başlatma çubuğu hizmeti çağrılır ve bu da uygun başlatıcıyı başlatır: bu durumda PythonLauncher.dll. Bundan sonra Python kodunun işlenmesi, Python kodu T-SQL'deki bir saklı yordamdan çağrıldığındakine benzer bir iş akışında işlenir.
  6. PythonLauncher, SQL Server bilgisayarında yüklü olan Python örneğine bir çağrı yapar.
  7. Sonuçlar BxlServer'a döndürülür.
  8. SQL Uydu, SQL Server ile iletişimi yönetir ve ilgili iş nesnelerini temizler.
  9. SQL Server sonuçları istemciye geri geçirir.

Sonraki Adımlar