Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: SQL Server 2016 (13.x) и более поздних версий
Узнайте, как выполнять оценку в реальном времени с помощью системной хранимой процедуры sp_rxPredict в SQL Server для высокопроизводительного получения прогнозов или оценок в рабочих нагрузках прогнозирования.
Оценка в реальном времени с помощью sp_rxPredict не зависит от языка и выполняется независимо от сред выполнения R или Python в Службах машинного обучения. Работая с моделью, созданной и обученной с помощью функций Майкрософт, а затем сериализованной в двоичный формат в SQL Server, вы можете с помощью оценки в реальном времени создавать прогнозируемые результаты на основе новых входных данных в экземплярах SQL Server, в которых не установлена надстройка R или Python.
Как работает оценка в реальном времени
Оценка в реальном времени поддерживается для определенных типов моделей на основе функций в RevoScaleR и MicrosoftML в R, или revoscalepy и microsoftml в Python. При этом используются собственные библиотеки C++ для создания оценок на основе данных, которые пользователь ввел в модель машинного обучения (в специальном двоичном формате).
Поскольку обученную модель можно использовать для оценки без необходимости вызова внешней языковой среды в Службах машинного обучения, затраты на несколько процессов сокращаются.
Оценка в реальном времени — это многоэтапный процесс.
- Вы включаете хранимую процедуру, которая выполняет оценку, для каждой базы данных.
- Предварительно обученная модель загружается в двоичном формате.
- Вы предоставляете модели новые входные данные для оценки — в виде таблиц или отдельных строк.
- Для формирования оценок вызывается хранимая процедура sp_rxPredict.
Предварительные требования
Модель должна быть заранее обучена с помощью одного из поддерживаемых алгоритмов rx. Дополнительные сведения см. в разделе Поддерживаемые алгоритмы для
sp_rxPredict.Сериализуйте модель с помощью rxSerialize для R или rx_serialize_model для Python. Эти функции сериализации оптимизированы для поддержки быстрой оценки.
Сохраните модель в экземпляре ядра СУБД, из которого она будет вызываться. Для этого экземпляра не требуется расширение среды выполнения R или Python.
Примечание.
Оценка в реальном времени в настоящее время оптимизирована для быстрого прогнозирования на основе небольших наборов данных: от нескольких строк до сотен тысяч строк. Для больших наборов данных функция rxPredict может работать быстрее.
Включение оценки в реальном времени
Включите эту функцию для каждой базы данных, которая будет использоваться для оценки. Администратор сервера должен запустить программу командной строки RegisterRExt.exe, которая входит в состав пакета RevoScaleR.
Внимание
Чтобы оценка в режиме реального времени работала, в экземпляре необходимо включить функциональность SQL CLR, а базу данных необходимо пометить как доверенную. При запуске скрипта эти действия выполняются автоматически. Но перед этим обдумайте возможные последствия для безопасности.
Откройте командную строку с повышенными привилегиями и перейдите в папку, где находится программа RegisterRExt.exe. В стандартной установке можно использовать следующий путь:
<SQLInstancePath>\R_SERVICES\library\RevoScaleR\rxLibs\x64\Выполните следующую команду, подставив имя вашего экземпляра и целевую базу данных, в которой необходимо включить расширенные хранимые процедуры:
RegisterRExt.exe /installRts [/instance:name] /database:databasenameНапример, чтобы добавить расширенную хранимую процедуру в базу данных CLRPredict в экземпляре по умолчанию, введите:
RegisterRExt.exe /installRts /database:CLRPRedictИмя экземпляра является необязательным, если база данных находится в экземпляре по умолчанию. Если вы используете именованный экземпляр, укажите его имя.
Программа RegisterRExt.exe создает следующие объекты:
- доверенные сборки;
- Хранимая процедура
sp_rxPredict - Новая роль базы данных,
rxpredict_users. Администратор базы данных может использовать эту роль для предоставления разрешения пользователям, которые используют функцию оценки в реальном времени.
Добавьте всех пользователей, которым требуется выполнять
sp_rxPredict, в новую роль.
Примечание.
В SQL Server 2017 и более поздних версиях для предотвращения проблем с интеграцией со средой CLR применяются дополнительные меры безопасности. Эти меры также вводят дополнительные ограничения на использование этой хранимой процедуры.
Отключение оценки в реальном времени
Чтобы отключить функцию оценки в реальном времени, откройте командную строку с повышенными привилегиями и выполните следующую команду: RegisterRExt.exe /uninstallrts /database:<database_name> [/instance:name]
Пример
В этом примере описаны действия по подготовке и сохранению модели для прогнозирования в реальном времени, а также приведен пример вызова функции из T-SQL на языке R.
Шаг 1. Подготовка и сохранение модели
Двоичный формат, необходимый для sp_rxPredict, аналогичен формату, который требуется для использования функции PREDICT. Поэтому в коде на языке R включите вызов rxSerializeModel и укажите параметр realtimeScoringOnly = TRUE, как в следующем примере:
model <- rxSerializeModel(model.name, realtimeScoringOnly = TRUE)
Шаг 2. Вызов sp_rxPredict
Вызов sp_rxPredict осуществляется так же, как и любая другая хранимая процедура. В текущем выпуске эта хранимая процедура принимает только два параметра: @model для модели в двоичном формате и @inputData для данных, используемых при оценке, которые определены в виде допустимого SQL-запроса.
Так как двоичный формат аналогичен тому, который использует функция PREDICT, можно применить модели и таблицу данных из предыдущего примера.
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'
Примечание.
Вызов sp_rxPredict завершается ошибкой, если входные данные для оценки не включают в себя столбцы, соответствующие требованиям модели. В настоящее время поддерживаются только следующие типы данных .NET: double, float, short, ushort, long, ulong и string.
Поэтому может потребоваться отфильтровать неподдерживаемые типы во входных данных, прежде чем использовать их для оценки в реальном времени.
Сведения о соответствующих типах SQL см. в статье Сопоставление типов SQL и CLR или Сопоставление данных о параметрах CLR.