Поделиться через


Оценка моделей машинного обучения с помощью PREDICT

Выделенные пулы SQL позволяют оценивать модели машинного обучения с помощью знакомого вам языка T-SQL. С помощью функции PREDICT в T-SQL можно взять существующие модели машинного обучения, обученные на основе исторических данных, и оценить эти модели в безопасных границах хранилища данных. Функция PREDICT принимает в качестве входных параметров модель ONNX (Open Neural Network Exchange) и данные. Эта функция позволяет избежать перемещения ценных данных за пределы хранилища для оценки. Ее цель — предоставить специалистам по обработке данных возможность легко развертывать модели машинного обучения с помощью знакомого интерфейса T-SQL. Кроме того, эта функция позволяет организовать удобную совместную работу со специалистами по обработке и анализу данных, используя для выполнения их задач подходящую платформу.

Примечание.

В настоящее время эта функция не поддерживается в бессерверном пуле SQL.

Для использования этой функции необходимо обучить модель за пределами Synapse SQL. Создав модель, загрузите ее в хранилище данных и оцените с помощью синтаксиса Predict T-SQL, чтобы получить из данных полезные сведения.

predictoverview

Обучение модели

Для выделенного пула 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).