Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Tip
Microsoft Fabric Data Warehouse — это реляционное хранилище корпоративного масштаба на основе озера данных, с архитектурой, готовой к будущему, встроенным ИИ и новыми функциями. Если вы не знакомы с хранилищем данных, начните с Fabric Data Warehouse. Существующие рабочие нагрузки выделенных пулов SQL могут быть обновлены до Fabric для доступа к новым возможностям в области науки о данных, аналитики в реальном времени и создания отчётов.
Узнайте, как использовать собственную оценку с функцией PREDICT T-SQL для создания прогнозных значений для новых входных данных практически в реальном времени. Для собственной оценки требуется уже обученная модель.
Функция PREDICT использует собственные возможности расширения C++ в машинном обучении SQL. Эта методология обеспечивает максимально быструю скорость обработки рабочих нагрузок для прогнозирования и поддержки моделей в формате Open Neural Network Exchange (ONNX) (только для Azure Synapse Analytics) или для моделей, обученных с использованием пакетов RevoScaleR и revoscalepy.
Как работает встроенная система оценивания
Нативная оценка использует библиотеки, которые могут считывать модели в формате ONNX или стандартном двоичном формате, и генерировать оценки для новых данных, которые вы предоставляете. Поскольку модель обучена, развернута и сохранена, ее можно использовать для оценки без вызова интерпретатора R или Python. Это означает, что затраты на взаимодействие нескольких процессов сокращаются, что приводит к значительному повышению производительности прогнозирования.
Чтобы использовать собственную оценку, вызовите функцию PREDICT T-SQL и передайте следующие обязательные входные данные.
- Совместимая модель, основанная на поддерживаемой модели и алгоритме.
- Входные данные, обычно определяемые в виде запроса T-SQL.
Функция возвращает прогнозы для входных данных вместе со всеми столбцами исходных данных, которые необходимо передать.
Предварительные условия
Функция PREDICT доступна в следующих версиях.
- Все выпуски SQL Server 2017 и более поздних версий в Windows и Linux
- Управляемый экземпляр SQL Azure
- Azure Synapse Analytics
Функция включена по умолчанию. Вам не нужно устанавливать R или Python или включать дополнительные функции.
Поддерживаемые модели
Форматы моделей, которые поддерживает функция PREDICT, зависят от SQL-платформы, на которой выполняется встроенная оценка. См. таблицу ниже, чтобы узнать, какие форматы моделей поддерживаются на той или иной платформе.
| Платформа | Формат модели ONNX | Формат модели RevoScale |
|---|---|---|
| SQL Server | Нет | Да |
| Управляемый экземпляр SQL Azure | Нет | Да |
| Azure Synapse Analytics | Да | Нет |
Модели ONNX
Модель должна быть в формате Open Neural Network Exchange (ONNX).
Модели RevoScale
Модель должна быть заранее обучена с помощью одного из поддерживаемых алгоритмов rx, указанных ниже, с использованием пакетов RevoScaleR или revoscalepy.
Сериализуйте модель с помощью rxSerialize для R или rx_serialize_model для Python. Эти функции сериализации оптимизированы для поддержки быстрой оценки.
Поддерживаемые алгоритмы RevoScale
В revoscalepy и RevoScaleR поддерживаются следующие алгоритмы.
Алгоритмы Revoscalepy
Алгоритмы RevoScaleR
Если вам нужно использовать алгоритм из MicrosoftML или microsoftml, используйте оценку в режиме реального времени с sp_rxPredict.
Неподдерживаемые типы моделей включают следующие:
- Модели, содержащие другие преобразования
- Модели, использующие алгоритмы
rxGlmилиrxNaiveBayesв эквивалентах RevoScaleR или revoscalepy - Модели PMML
- Модели, созданные с помощью других библиотек с открытым исходным кодом или библиотек сторонних разработчиков
Примеры
ПРЕДСКАЗАНИЕ с моделью ONNX
В этом примере показано, как использовать модель ONNX, хранимую в таблице dbo.models, для собственной оценки.
DECLARE @model VARBINARY(max) = (
SELECT DATA
FROM dbo.models
WHERE id = 1
);
WITH predict_input
AS (
SELECT TOP (1000) [id]
, CRIM
, ZN
, INDUS
, CHAS
, NOX
, RM
, AGE
, DIS
, RAD
, TAX
, PTRATIO
, B
, LSTAT
FROM [dbo].[features]
)
SELECT predict_input.id
, p.variable1 AS MEDV
FROM PREDICT(MODEL = @model, DATA = predict_input, RUNTIME=ONNX) WITH (variable1 FLOAT) AS p;
Примечание.
Поскольку столбцы и значения, возвращаемые функцией PREDICT, могут зависеть от типа модели, необходимо определить схему возвращаемых данных с помощью предложения WITH.
ПРЕДСКАЗАТЬ с моделью RevoScale
В этом примере создается модель с помощью RevoScaleR в R, а затем вызывается функция прогнозирования в реальном времени из T-SQL.
Шаг 1. Подготовка и сохранение модели
Выполните следующий код, чтобы создать пример базы данных и необходимые таблицы.
CREATE DATABASE NativeScoringTest;
GO
USE NativeScoringTest;
GO
DROP TABLE IF EXISTS iris_rx_data;
GO
CREATE TABLE iris_rx_data (
"Sepal.Length" float not null, "Sepal.Width" float not null
, "Petal.Length" float not null, "Petal.Width" float not null
, "Species" varchar(100) null
);
GO
Используйте следующую инструкцию, чтобы заполнить таблицу данных данными из набора данных iris.
INSERT INTO iris_rx_data ("Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width" , "Species")
EXECUTE sp_execute_external_script
@language = N'R'
, @script = N'iris_data <- iris;'
, @input_data_1 = N''
, @output_data_1_name = N'iris_data';
GO
Теперь создайте таблицу для хранения моделей.
DROP TABLE IF EXISTS ml_models;
GO
CREATE TABLE ml_models ( model_name nvarchar(100) not null primary key
, model_version nvarchar(100) not null
, native_model_object varbinary(max) not null);
GO
Следующий код создает модель на основе набора данных iris и сохраняет его в таблицу models.
DECLARE @model varbinary(max);
EXECUTE sp_execute_external_script
@language = N'R'
, @script = N'
iris.sub <- c(sample(1:50, 25), sample(51:100, 25), sample(101:150, 25))
iris.dtree <- rxDTree(Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width, data = iris[iris.sub, ])
model <- rxSerializeModel(iris.dtree, realtimeScoringOnly = TRUE)
'
, @params = N'@model varbinary(max) OUTPUT'
, @model = @model OUTPUT
INSERT [dbo].[ml_models]([model_name], [model_version], [native_model_object])
VALUES('iris.dtree','v1', @model) ;
Примечание.
Обязательно используйте функцию rxSerializeModel из RevoScaleR для сохранения модели. Стандартная функция R serialize не может создать требуемый формат.
Для просмотра сохраненной модели в двоичном формате можно выполнить следующую инструкцию:
SELECT *, datalength(native_model_object)/1024. as model_size_kb
FROM ml_models;
Шаг 2. Выполнение инструкции PREDICT для модели
Следующее простое утверждение PREDICT получает классификацию из модели дерева решений с помощью встроенной функции оценки. Она прогнозирует виды ирисов на основе указанных атрибутов: длины и ширины лепестка.
DECLARE @model varbinary(max) = (
SELECT native_model_object
FROM ml_models
WHERE model_name = 'iris.dtree'
AND model_version = 'v1');
SELECT d.*, p.*
FROM PREDICT(MODEL = @model, DATA = dbo.iris_rx_data as d)
WITH(setosa_Pred float, versicolor_Pred float, virginica_Pred float) as p;
go
Если вы получили сообщение об ошибке "Ошибка при выполнении функции PREDICT. "модель повреждена или является недопустимой", обычно это означает, что запрос не вернул модель. Проверьте, правильно ли указано название модели и пуста ли таблица модели.
Примечание.
Поскольку столбцы и значения, возвращаемые функцией PREDICT, могут зависеть от типа модели, необходимо определить схему возвращаемых данных с помощью предложения WITH.