Оценка моделей машинного обучения с помощью PREDICT
Выделенные пулы SQL позволяют оценивать модели машинного обучения с помощью знакомого вам языка T-SQL. С помощью функции PREDICT в T-SQL можно взять существующие модели машинного обучения, обученные на основе исторических данных, и оценить эти модели в безопасных границах хранилища данных. Функция PREDICT принимает в качестве входных параметров модель ONNX (Open Neural Network Exchange) и данные. Эта функция позволяет избежать перемещения ценных данных за пределы хранилища для оценки. Ее цель — предоставить специалистам по обработке данных возможность легко развертывать модели машинного обучения с помощью знакомого интерфейса T-SQL. Кроме того, эта функция позволяет организовать удобную совместную работу со специалистами по обработке и анализу данных, используя для выполнения их задач подходящую платформу.
Примечание.
В настоящее время эта функция не поддерживается в бессерверном пуле SQL.
Для использования этой функции необходимо обучить модель за пределами Synapse SQL. Создав модель, загрузите ее в хранилище данных и оцените с помощью синтаксиса Predict T-SQL, чтобы получить из данных полезные сведения.
Обучение модели
Для выделенного пула SQL нужно подготовить предварительно обученную модель. При обучении модели машинного обучения, используемой для выполнения прогнозов в выделенном пуле SQL, учитывайте следующие факторы.
Выделенный пул SQL поддерживает только модели формата ONNX. ONNX — это формат моделей с открытым исходным кодом, который позволяет обмениваться моделями между различными платформами для обеспечения совместимости. Вы можете преобразовать существующие модели в формат ONNX с помощью платформ, которые либо поддерживают его изначально, либо имеют доступные пакеты преобразования. Например, пакет sklearn-onnx преобразует модели scikit-learn в ONNX. В разделе репозитория GitHub, посвященном ONNX, содержится список поддерживаемых платформ и примеры.
Если для обучения используется автоматизированное машинное обучение, для создания модели формата onnx нужно убедится, что для параметра enable_onnx_compatible_models задано значение true. В записной книжке для автоматизированного машинного обучения показан пример использования автоматизированного машинного обучения для создания модели машинного обучения формата ONNX.
В качестве входных данных поддерживаются следующие типы данных:
- int, bigint, real, float
- char, varchar, nvarchar
Данные оценки должны иметь тот же формат, что и данные для обучения. PREDICT не поддерживает сложные типы данных, такие как многомерные массивы. Таким образом, чтобы выполнить обучение, не передавайте один массив, содержащий все входные данные, а убедитесь, что все входные данные модели соответствуют одному столбцу таблицы оценки.
Убедитесь, что имена и типы данных для входных данных модели соответствуют именам столбцов и типам данных нового прогноза. Дополнительную помощь при отладке может оказать визуализация модели ONNX с помощью различных средств с открытым кодом, доступных в Интернете.
Загрузка модели
Модель хранится в пользовательской таблице выделенного пула SQL в виде шестнадцатеричной строки. В эту таблицу могут быть добавлены дополнительные столбцы для идентификации модели, такие как идентификатор и описание. Используйте тип varbinary (max) в качестве типа данных для столбцов модели. Ниже приведен пример кода для таблицы, которую можно использовать для хранения моделей:
-- Sample table schema for storing a model and related data
CREATE TABLE [dbo].[Models]
(
[Id] [int] IDENTITY(1,1) NOT NULL,
[Model] [varbinary](max) NULL,
[Description] [varchar](200) NULL
)
WITH
(
DISTRIBUTION = ROUND_ROBIN,
HEAP
)
GO
После преобразования модели в шестнадцатеричную строку и указания определения таблицы выполните команду COPY или воспользуйтесь Polybase для загрузки модели в таблицу выделенного пула SQL. В следующем примере кода для загрузки модели используется команда COPY.
-- Copy command to load hexadecimal string of the model from Azure Data Lake storage location
COPY INTO [Models] (Model)
FROM '<enter your storage location>'
WITH (
FILE_TYPE = 'CSV',
CREDENTIAL=(IDENTITY= 'Shared Access Signature', SECRET='<enter your storage key here>')
)
Оценка модели
После загрузки модели и данных в хранилище данных используйте функцию T-SQL Predict для оценки модели. Убедитесь, что новые входные данные имеют тот же формат, что и данные для обучения, используемые для создания модели. Функция PREDICT T-SQL принимает два типа входных данных: модель и новые входные данные оценки, а также создает столбцы для выходных данных. Модель можно задать в виде переменной, литерала или скаляра sub_query. Используйте инструкцию WITH common_table_expression, чтобы указать именованный результирующий набор для параметра данных.
В примере ниже показан запрос с использованием функции прогнозирования. Создается дополнительный столбец с именем Score и типом данных float, содержащий результаты прогноза. Все столбцы входных данных, а также столбцы прогнозирования выходных данных можно отобразить с помощью оператора Select. Дополнительные сведения см. в разделе PREDICT (Transact-SQL).
-- Query for ML predictions
SELECT d.*, p.Score
FROM PREDICT(MODEL = (SELECT Model FROM Models WHERE Id = 1),
DATA = dbo.mytable AS d, RUNTIME = ONNX) WITH (Score float) AS p;
Следующие шаги
Дополнительные сведения о функции PREDICT см. в статье, посвященной PREDICT (Transact-SQL).