SQL Server'da sp_rxPredict ile gerçek zamanlı puanlama

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

SQL Server'da, yüksek performanslı tahminler veya öngörü iş yüklerinde puanlama sonuçları için sp_rxPredict sistem saklı yordamını kullanarak gerçek zamanlı puanlamanın nasıl gerçekleştirileceğini öğrenin.

Gerçek zamanlı puanlama sp_rxPredict dil bağımsızdır ve Machine Learning Services'te R veya Python çalışma zamanlarına bağımlılık olmadan çalışır. Microsoft fonksiyonları kullanılarak oluşturulan ve eğitilen ve SQL Server'da ikili formata serileştirilen bir model kullanarak, R veya Python eklentisi olmayan SQL Server örneklerinde yeni veri girişlerinde öngörülen sonuçlar elde etmek için gerçek zamanlı puanlama kullanabilirsiniz.

Gerçek zamanlı puanlama nasıl çalışır

Gerçek zamanlı puanlama, RevoScaleR veya MicrosoftML (R) veya Python'daki revoscalepy veya microsoftml fonksiyonlarına dayalı belirli model tiplerinde desteklenir. Özel ikili formatta depolanan makine öğrenimi modeline sağlanan kullanıcı girdisine dayalı puanlar oluşturmak için yerel C++ kütüphaneleri kullanır.

Eğitimli bir model, Machine Learning Services'te harici bir dil çalışma zamanı çağırmadan puanlama için kullanılabildiği için, birden fazla işlemin ek maliyeti azalır.

Gerçek zamanlı puanlama çok aşamalı bir süreçtir:

  1. Veritabanı başına puanlama yapan kayıtlı prosedürü etkinleştirirsiniz.
  2. Önden eğitilmiş modeli ikili formatta yüklüyorsunuz.
  3. Modele girdi olarak tablo ya da tek satırlı olarak puanlanacak yeni giriş verileri sağlarsınız.
  4. Puan oluşturmak için sp_rxPredict stored prosedürünü çağırın.

Prerequisites

Note

Gerçek zamanlı puanlama şu anda birkaç satırdan yüz binlerce satıra kadar değişen küçük veri setlerinde hızlı tahminler için optimize edilmiştir. Büyük veri setlerinde rxPredict kullanmak daha hızlı olabilir.

Gerçek zamanlı puanlama etkinleştirin

Puanlamak için kullanmak istediğiniz her veritabanı için bu özelliği etkinleştirin. Sunucu yöneticisi, RevoScaleR paketiyle birlikte gelen komut satırı RegisterRExt.exearacını çalıştırmalıdır.

Caution

Gerçek zamanlı puanlamanın çalışabilmesi için, örnekte SQL CLR işlevselliği etkinleştirilmeli ve veritabanının güvenilir olarak işaretlenmesi gerekir. Scripti çalıştırdığınızda, bu işlemler sizin için gerçekleştirilir. Ancak, bunu yapmadan önce ek güvenlik sorunlarını dikkatlice düşünün.

  1. Yükseltilmiş komut isteğini açın ve RegisterRExt.exe bulunduğu klasöre gidin. Varsayılan kurulumda aşağıdaki yol kullanılabilir:

    <SQLInstancePath>\R_SERVICES\library\RevoScaleR\rxLibs\x64\

  2. Genişletilmiş depolanmış prosedürleri etkinleştirmek istediğiniz örnek adını ve hedef veritabanını değiştirerek aşağıdaki komutu çalıştırın:

    RegisterRExt.exe /installRts [/instance:name] /database:databasename

    Örneğin, genişletilmiş depolanmış prosedürü varsayılan örnekte CLRPredict veritabanına eklemek için şunu yazın:

    RegisterRExt.exe /installRts /database:CLRPRedict

    Veritabanı varsayılan örnekte ise, örnek adı isteğe bağlıdır. Eğer adlandırılmış bir örnek kullanıyorsanız, örnek adını belirtin.

  3. RegisterRExt.exe aşağıdaki nesneleri yaratır:

    • Güvenilir meclisler
    • Depolanmış prosedür sp_rxPredict
    • Yeni bir veritabanı rolü, rxpredict_users. Veritabanı yöneticisi, bu rolü gerçek zamanlı puanlama işlevini kullanan kullanıcılara izin vermek için kullanabilir.
  4. sp_rxPredict öğesini çalıştırması gereken kullanıcıları yeni role ekleyin.

Note

SQL Server 2017 ve sonrasında, CLR entegrasyonunda sorunları önlemek için ek güvenlik önlemleri uygulanmıştır. Bu önlemler, bu depolanmış prosedürün kullanımına ek kısıtlamalar da getirir.

Gerçek zamanlı puanlamayı devre dışı bırakın

Gerçek zamanlı puanlama işlevini devre dışı bırakmak için, yükseltilmiş komut diziyi açın ve aşağıdaki komutu çalıştırın: RegisterRExt.exe /uninstallrts /database:<database_name> [/instance:name]

Example

Bu örnek, gerçek zamanlı tahmin için bir modeli hazırlamak ve kaydetmek için gereken adımları açıklar ve R'de fonksiyonun T-SQL'den nasıl çağrılacağına dair bir örnek sunar.

Adım 1. Modeli hazırlama ve kaydetme

sp_rxPredict tarafından gerekli olan ikili format, PREDICT fonksiyonunu kullanmak için gereken formatla aynıdır. Bu nedenle, R kodunuza rxSerializeModel çağrısı ekleyin ve realtimeScoringOnly = TRUEbu örnekte olduğu gibi , belirttiğinizden emin olun:

model <- rxSerializeModel(model.name, realtimeScoringOnly = TRUE)

Adım 2. Çağır sp_rxPredict

Diğer kayıtlı işlemler gibi çağırırsınız sp_rxPredict . Mevcut sürümde, saklanan prosedür yalnızca iki parametre alır: @model ikili formatta model için ve geçerli bir SQL sorgusu olarak tanımlanan puanlamada kullanılan veri için @inputData .

İkili format PREDICT fonksiyonunun kullandığı ile aynı olduğundan, önceki örnekten modelleri ve veri tablosunu kullanabilirsiniz.

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'

Note

Puanlama için girdi verisi modelin gereksinimlerine uyan sütunları içermiyorsa çağrı sp_rxPredict başarısız olur. Şu anda yalnızca aşağıdaki .NET veri türleri desteklenmektedir: double, float, short, ushort, long, ulong ve string.

Bu nedenle, gerçek zamanlı puanlama için kullanmadan önce giriş verinizdeki desteklenmeyen türleri filtrelemeniz gerekebilir.

İlgili SQL türleri hakkında bilgi için SQL-CLR Tür Eşleme veya CLR Parametre Verilerinin Eşlenmesi bölümüne bakın.