Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Область применения: 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.