Určení skóre modelů strojového učení s využitím PREDICT

Vyhrazený fond SQL poskytuje možnost bodovat modely strojového učení pomocí známého jazyka T-SQL. Pomocí funkce PREDICT jazyka T-SQL můžete přenést stávající modely strojového učení natrénované pomocí historických dat a ohodnotit je v rámci zabezpečených hranic datového skladu. Funkce PREDICT přebírá model ONNX (Open Neural Network Exchange) a data jako vstupy. Tato funkce eliminuje krok přesunu cenných dat mimo datový sklad pro účely vyhodnocování. Jejím 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 jejich úkoly.

Poznámka

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

Funkce vyžadují, aby byl model trénovaný mimo Synapse SQL. Jakmile model sestavíte, načtěte ho do datového skladu a ohodnotěte ho pomocí syntaxe predikce T-SQL, abyste získali 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. Stávající modely můžete převést na formát ONNX pomocí architektur, které ho buď nativně podporují, nebo mají k dispozici konvertující balíčky. 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 k 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
  • Bodovací data musí být ve stejném formátu jako trénovací data. Funkce PREDICT nepodporuje komplexní datové typy, jako jsou například multidimenzionální pole. Proto se při trénování ujistěte, že každý vstup modelu odpovídá jednomu sloupci v hodnoticí tabulce 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. Další pomoc s laděním vám může pomoct vizualizace modelu ONNX pomocí různých opensourcových nástrojů dostupných online.

Načítá se model.

Model je uložený ve vyhrazené tabulce uživatelů fondu SQL jako šestnáctkový řetězec. Do tabulky modelu je možné 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 je možné 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

Po převodu modelu 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á k načtení modelu příkaz Kopírovat.

-- 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 funkci PREDICT T-SQL k určení skóre modelu. Ujistěte se, že nová vstupní data jsou ve stejném formátu jako trénovací data použitá k vytvoření modelu. Funkce PREDICT T-SQL přijímá dva vstupy: model a nová vstupní data bodování, a pro výstup vygeneruje nové sloupce. Model lze zadat jako proměnnou, literál nebo skalární sub_query. Pomocí příkazu WITH common_table_expression zadejte pojmenovanou sadu výsledků dotazu pro parametr dat.

Následující příklad ukazuje ukázkový dotaz s využitím prediktivní funkce. Vytvoří se další sloupec s názvem Skóre a datový typ float obsahující výsledky předpovědi. Všechny sloupce vstupních dat a také sloupce predikce výstupu 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).