Gépi tanulási modellek pontszáma a PREDICT használatával

A dedikált SQL-készlet lehetővé teszi gépi tanulási modellek pontozását a jól ismert T-SQL-nyelv használatával. A T-SQL PREDICT segítségével az előzményadatokkal betanított meglévő gépi tanulási modelleket az adattárház biztonságos határain belül értékelheti. A PREDICT függvény bemenetként egy ONNX(Open Neural Network Exchange) modellt és adatokat vesz fel. Ez a funkció kiküszöböli az értékes adatok adattárházon kívüli áthelyezésének lépését a pontozáshoz. Célja, hogy lehetővé tegye az adatszakértők számára a gépi tanulási modellek egyszerű üzembe helyezését a jól ismert T-SQL-felületen, valamint zökkenőmentesen együttműködjenek az adattudósokkal, akik a feladatukhoz megfelelő keretrendszerrel dolgoznak.

Megjegyzés

Ez a funkció jelenleg nem támogatott a kiszolgáló nélküli SQL-készletben.

A funkció használatához a modellnek a Synapse SQL-en kívül kell betanítása. A modell létrehozása után töltse be az adattárházba, és a T-SQL Predict szintaxissal pontozással szerezzen elemzéseket az adatokból.

predictoverview

A modell betanítása

A dedikált SQL-készlet előre betanított modellt vár. Tartsa szem előtt az alábbi tényezőket a dedikált SQL-készletben előrejelzések végrehajtására használt gépi tanulási modell betanításakor.

  • A dedikált SQL-készlet csak az ONNX formátumú modelleket támogatja. Az ONNX egy nyílt forráskódú modellformátum, amely lehetővé teszi modellek cseréjét különböző keretrendszerek között az együttműködés érdekében. Meglévő modelljeit ONNX formátumra konvertálhatja olyan keretrendszerek használatával, amelyek támogatják natív módon, vagy elérhetőek a csomagok konvertálása. A sklearn-onnx csomag például a scikit-learn modelleket ONNX-ra konvertálja. Az ONNX GitHub-adattár a támogatott keretrendszerek és példák listáját tartalmazza.

    Ha automatizált gépi tanulási eszközt használ betanításhoz, győződjön meg arról, hogy a enable_onnx_compatible_models paramétert IGAZ értékre állítja, hogy onnx formátumú modellt állítson elő. Az automatizált gépi tanulási jegyzetfüzet bemutatja, hogyan hozhat létre onnx formátumú gépi tanulási modellt automatizált gépi tanulási modell létrehozásához.

  • A bemeneti adatok esetében a következő adattípusok támogatottak:

    • int, bigint, real, float
    • char, varchar, nvarchar
  • A pontozási adatoknak a betanítási adatokkal megegyező formátumban kell lenniük. A PREDICT nem támogatja az összetett adattípusokat, például a többdimenziós tömböket. Ezért a betanításhoz győződjön meg arról, hogy a modell minden bemenete a pontozótábla egyetlen oszlopának felel meg ahelyett, hogy egyetlen tömböt ad át, amely az összes bemenetet tartalmazza.

  • Győződjön meg arról, hogy a modellbemenetek nevei és adattípusai megegyeznek az új előrejelzési adatok oszlopnevével és adattípusával. Az ONNX-modellek online elérhető különböző nyílt forráskódú eszközökkel történő vizualizációja további segítséget nyújthat a hibakeresésben.

A modell betöltése

A modell egy dedikált SQL-készlet felhasználói táblájában van tárolva hexadecimális sztringként. A modell azonosításához további oszlopok, például azonosító és leírás is hozzáadhatók a modelltáblához. Használja a varbinary(max) értéket a modelloszlop adattípusaként. Íme egy példa egy olyan táblára, amely modellek tárolására használható:

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

Miután a modell hexadecimális sztringgé és a megadott tábladefinícióvá lett konvertálva, a COPY vagy a Polybase paranccsal töltse be a modellt a dedikált SQL-készlet táblába. Az alábbi kódminta a Másolás paranccsal tölti be a modellt.

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

A modell pontozása

Miután betöltötte a modellt és az adatokat az adattárházba, a T-SQL PREDICT függvénnyel pontozást végezhet a modellen. Győződjön meg arról, hogy az új bemeneti adatok formátuma megegyezik a modell létrehozásához használt betanítási adatokkal. A T-SQL PREDICT két bemenetet használ: a modellt és az új pontozási bemeneti adatokat, és új oszlopokat hoz létre a kimenethez. A modell megadható változóként, literálként vagy skaláris sub_query. A WITH common_table_expression használatával adjon meg egy elnevezett eredményhalmazt az adatparaméterhez.

Az alábbi példában egy előrejelzési függvényt használó mintalekérdezés látható. Létrejön egy további, Score (Pontszám ) nevű és adattípusú lebegőpontos oszlop, amely tartalmazza az előrejelzési eredményeket. A select utasítással megjeleníthető az összes bemeneti adatoszlop és a kimeneti előrejelzési oszlop. További részletekért lásd: 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;

Következő lépések

A PREDICT függvényről további információt a PREDICT (Transact-SQL) című témakörben talál.