Sdílet prostřednictvím


Určení skóre modelů strojového učení pomocí PREDICT

Vyhrazený fond SQL umožňuje určit skóre modelů strojového učení pomocí známého jazyka T-SQL. Pomocí T-SQL PREDICT můžete stávající modely strojového učení vytrénované pomocí historických dat přinést a určit jejich skóre v rámci zabezpečených hranic datového skladu. Funkce PREDICT přebírá model a data ONNX (Open Neural Network Exchange) jako vstupy. Tato funkce eliminuje krok přesunu cenných dat mimo datový sklad pro bodování. Cílem je umožnit odborníkům na data snadno nasazovat modely strojového učení se známým rozhraním T-SQL a bezproblémově spolupracovat s datovými vědci, kteří pracují se správnou architekturou pro svou úlohu.

Poznámka:

Tato funkce se v současné době nepodporuje v bezserverovém fondu SQL.

Funkce vyžadují, aby byl model trénován mimo Synapse SQL. Po sestavení modelu ho načtěte do datového skladu a pomocí syntaxe predikce T-SQL získejte přehledy z dat.

predictoverview

Trénování modelu

Vyhrazený fond SQL očekává předem natrénovaný model. Při trénování modelu strojového učení, který se používá k provádění předpovědí ve vyhrazeném fondu SQL, mějte na paměti následující faktory.

  • Vyhrazený fond SQL podporuje pouze modely formátu ONNX. ONNX je opensourcový formát modelu, který umožňuje výměnu modelů mezi různými architekturami za účelem zajištění interoperability. Existující modely můžete převést na formát ONNX pomocí architektur, které ho nativně podporují, nebo mají k dispozici převod balíčků. Například balíček sklearn-onnx převádí modely scikit-learn na ONNX. Úložiště ONNX Na GitHubu poskytuje seznam podporovaných architektur a příkladů.

    Pokud pro trénování používáte automatizované strojové učení , nezapomeňte nastavit parametr enable_onnx_compatible_models na HODNOTU TRUE, aby se vytvořil model formátu ONNX. Poznámkový blok automatizovaného strojového učení ukazuje příklad použití automatizovaného strojového učení k vytvoření modelu strojového učení ve formátu ONNX.

  • Pro vstupní data jsou podporovány následující datové typy:

    • int, bigint, real, float
    • char, varchar, nvarchar
  • Data bodování musí být ve stejném formátu jako trénovací data. Funkce PREDICT nepodporuje komplexní datové typy, jako jsou multidimenzionální pole. Proto pro trénování se ujistěte, že každý vstup modelu odpovídá jednomu sloupci tabulky bodování místo předání jednoho pole obsahujícího všechny vstupy.

  • Ujistěte se, že názvy a datové typy vstupů modelu odpovídají názvům sloupců a datovým typům nových prediktivních dat. Vizualizace modelu ONNX pomocí různých opensourcových nástrojů dostupných online vám může pomoct s laděním.

Načtení modelu

Model je uložen ve vyhrazené tabulce uživatele fondu SQL jako šestnáctkový řetězec. Do tabulky modelu lze přidat další sloupce, jako je ID a popis, aby bylo možné model identifikovat. Jako datový typ sloupce modelu použijte varbinary(max). Tady je příklad kódu pro tabulku, kterou lze použít k ukládání modelů:

-- 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

Jakmile se model převede na šestnáctkový řetězec a zadanou definici tabulky, použijte příkaz COPY nebo Polybase k načtení modelu ve vyhrazené tabulce fondu SQL. Následující ukázka kódu používá příkaz Kopírovat k načtení modelu.

-- 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>')
)

Bodování modelu

Jakmile se model a data načtou do datového skladu, použijte k určení skóre modelu funkci T-SQL PREDICT . Ujistěte se, že nová vstupní data jsou ve stejném formátu jako trénovací data použitá k sestavení modelu. T-SQL PREDICT přebírá dva vstupy: model a nová vstupní data bodování a generuje nové sloupce pro výstup. Model lze zadat jako proměnnou, literál nebo skalární sub_query. Funkce WITH common_table_expression slouží k určení pojmenované sady výsledků pro datový parametr.

Následující příklad ukazuje ukázkový dotaz pomocí prediktivní funkce. Vytvoří se další sloupec s názvem Skóre a datovým typem float obsahující výsledky předpovědi. Všechny vstupní sloupce dat i výstupní sloupce predikce jsou k dispozici k zobrazení pomocí příkazu select. Další podrobnosti najdete v tématu 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;

Další kroky

Další informace o funkci PREDICT najdete v tématu PREDICT (Transact-SQL).