Bagikan melalui


Penilaian real time dengan sp_rxPredict di SQL Server

Berlaku untuk: SQL Server 2016 (13.x) dan versi yang lebih baru

Pelajari cara melakukan penilaian real time dengan prosedur tersimpan sistem sp_rxPredict di SQL Server untuk prediksi atau skor performa tinggi dalam beban kerja prakiraan.

Penilaian real time dengan sp_rxPredict adalah bahasa-agnostik dan dijalankan tanpa dependensi pada runtime R atau Python di layanan Pembelajaran Mesin. Menggunakan model yang dibuat dan dilatih menggunakan fungsi Microsoft dan diserialisasikan ke format biner di SQL Server, Anda dapat menggunakan penilaian real time untuk menghasilkan hasil yang diprediksi pada input data baru pada instans SQL Server yang tidak menginstal add-on R atau Python.

Cara kerja penilaian real-time

Penilaian real time didukung pada jenis model tertentu berdasarkan fungsi di RevoScaleR atau MicrosoftML di R, atau pencabutan skala atau microsoftml di Python. Ini menggunakan pustaka C++ asli untuk menghasilkan skor berdasarkan input pengguna yang disediakan untuk model pembelajaran mesin yang disimpan dalam format biner khusus.

Karena model terlatih dapat digunakan untuk penilaian tanpa harus memanggil runtime bahasa eksternal di layanan Pembelajaran Mesin, overhead dari beberapa proses berkurang.

Penilaian real time adalah proses multi-langkah:

  1. Anda mengaktifkan prosedur tersimpan yang melakukan penilaian per database.
  2. Anda memuat model yang telah dilatih sebelumnya dalam format biner.
  3. Anda menyediakan data input baru untuk dinilai, baik baris tabular atau tunggal, sebagai input ke model.
  4. Untuk menghasilkan skor, panggil prosedur tersimpan sp_rxPredict .

Prasyarat

  • Aktifkan integrasi SQL Server CLR.

  • Aktifkan penilaian real-time.

  • Model harus dilatih terlebih dahulu menggunakan salah satu algoritma rx yang didukung. Untuk detailnya, lihat Algoritma yang didukung untuk sp_rxPredict.

  • Serialisasi model menggunakan rxSerialize untuk R atau rx_serialize_model untuk Python. Fungsi serialisasi ini telah dioptimalkan untuk mendukung penilaian cepat.

  • Simpan model ke instans mesin database tempat Anda ingin memanggilnya. Instans ini tidak diperlukan untuk memiliki ekstensi runtime R atau Python.

Catatan

Penilaian real time saat ini dioptimalkan untuk prediksi cepat pada himpunan data yang lebih kecil, mulai dari beberapa baris hingga ratusan ribu baris. Pada himpunan data besar, menggunakan rxPredict mungkin lebih cepat.

Mengaktifkan penilaian real-time

Aktifkan fitur ini untuk setiap database yang ingin Anda gunakan untuk penilaian. Administrator server harus menjalankan utilitas baris perintah, RegisterRExt.exe, yang disertakan dengan paket RevoScaleR.

Perhatian

Agar penilaian real time berfungsi, fungsionalitas SQL CLR perlu diaktifkan dalam instans dan database perlu ditandai dapat dipercaya. Saat Anda menjalankan skrip, tindakan ini dilakukan untuk Anda. Namun, pertimbangkan dengan cermat implikasi keamanan tambahan sebelum melakukan ini.

  1. Buka prompt perintah yang ditingkatkan, dan navigasikan ke folder tempat RegisterRExt.exe berada. Jalur berikut dapat digunakan dalam penginstalan default:

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

  2. Jalankan perintah berikut, ganti nama instans Anda dan database target tempat Anda ingin mengaktifkan prosedur tersimpan yang diperluas:

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

    Misalnya, untuk menambahkan prosedur tersimpan yang diperluas ke database CLRPredict pada instans default, ketik:

    RegisterRExt.exe /installRts /database:CLRPRedict

    Nama instans bersifat opsional jika database ada di instans default. Jika Anda menggunakan instans bernama, tentukan nama instans.

  3. RegisterRExt.exe membuat objek berikut:

    • Rakitan tepercaya
    • Prosedur tersimpan sp_rxPredict
    • Peran database baru, rxpredict_users. Administrator database dapat menggunakan peran ini untuk memberikan izin kepada pengguna yang menggunakan fungsionalitas penilaian real time.
  4. Tambahkan pengguna apa pun yang perlu dijalankan sp_rxPredict ke peran baru.

Catatan

Di SQL Server 2017 dan yang lebih baru, langkah-langkah keamanan tambahan diberlakukan untuk mencegah masalah dengan integrasi CLR. Langkah-langkah ini memberlakukan pembatasan tambahan pada penggunaan prosedur tersimpan ini juga.

Menonaktifkan penilaian real-time

Untuk menonaktifkan fungsionalitas penilaian real-time, buka prompt perintah yang ditingkatkan, dan jalankan perintah berikut: RegisterRExt.exe /uninstallrts /database:<database_name> [/instance:name]

Contoh

Contoh ini menjelaskan langkah-langkah yang diperlukan untuk menyiapkan dan menyimpan model untuk prediksi real time , dan memberikan contoh dalam R tentang cara memanggil fungsi dari T-SQL.

Langkah 1. Menyiapkan dan menyimpan model

Format biner yang diperlukan oleh sp_rxPredict sama dengan format yang diperlukan untuk menggunakan fungsi PREDICT. Oleh karena itu, dalam kode R Anda, sertakan panggilan ke rxSerializeModel, dan pastikan untuk menentukan realtimeScoringOnly = TRUE, seperti dalam contoh ini:

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

Langkah 2. Memanggil sp_rxPredict

Anda memanggil sp_rxPredict seperti yang Anda lakukan prosedur tersimpan lainnya. Dalam rilis saat ini, prosedur tersimpan hanya membutuhkan dua parameter: @model untuk model dalam format biner, dan @inputData agar data dapat digunakan dalam penilaian, yang didefinisikan sebagai kueri SQL yang valid.

Karena format biner sama dengan yang digunakan oleh fungsi PREDICT, Anda dapat menggunakan model dan tabel data dari contoh sebelumnya.

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'

Catatan

Panggilan ke sp_rxPredict gagal jika data input untuk penilaian tidak menyertakan kolom yang cocok dengan persyaratan model. Saat ini, hanya jenis data .NET berikut yang didukung: double, float, short, ushort, long, ulong dan string.

Oleh karena itu, Anda mungkin perlu memfilter jenis yang tidak didukung dalam data input Anda sebelum menggunakannya untuk penilaian real-time.

Untuk informasi tentang jenis SQL terkait, lihat Pemetaan Jenis SQL-CLR atau Pemetaan Data Parameter CLR.

Langkah berikutnya