Sestavení modelu pomocí SynapseML

V tomto článku se dozvíte, jak vytvořit model strojového učení pomocí SynapseML v poznámkovém bloku Microsoft Fabric. Vytvoříte trénovací proces, který využívá extrakci příznaků z textu a regresi LightGBM k předpovídání hodnocení knih z textu recenzí. Dozvíte se také, jak používat Nástroje Foundry k předem připravené analýze mínění.

  • Vytvořit poznámkový blok Fabric a připojit lakehouse
  • Import knihoven a načtení dat
  • Sestavení a trénování pipeline pro vektorizaci textu a regresi LightGBM
  • Generování předpovědí
  • (Volitelné) Spuštění analýzy mínění v nástrojích Foundry

Požadavky

Nastavení prostředí

V poznámkovém bloku importujte knihovny SynapseML a inicializujte relaci Sparku.

from pyspark.sql import SparkSession
from synapse.ml.core.platform import *

spark = SparkSession.builder.getOrCreate()

Ověření: Spuštěním následující buňky ověřte, že Spark běží:

print(f"Spark version: {spark.version}")

Výstup zobrazí číslo verze Sparku. Očekává se jakákoli verze 3.4 nebo novější. Přesná verze závisí na vašem prostředí Fabric runtime.

Načtení datové sady

Načtěte datovou sadu recenzí knih a rozdělte ji na tréninkovou a testovací sadu. Datová sada obsahuje dva sloupce: rating (celé číslo 1–5) a text (kontrola obsahu).

train, test = (
    spark.read.parquet(
        "wasbs://publicwasb@mmlspark.blob.core.windows.net/BookReviewsFromAmazon10K.parquet"
    )
    .limit(1000)
    .cache()
    .randomSplit([0.8, 0.2])
)

display(train)

Ověření: Spuštěním následující buňky potvrďte správné načtení dat:

print(f"Training rows: {train.count()}, Test rows: {test.count()}")
print(f"Columns: {train.columns}")
train.printSchema()

Výstup ukazuje přibližně 800 trénovacích řádků a 200 testovacích řádků se dvěma sloupci: rating (celé číslo) a text (řetězec). Přesný počet řádků se liší, protože randomSplit není deterministický.

Vytvořte tréninkovou pipeline

Vytvořte pipeline, která pomocí TextFeaturizer extrahuje příznaky z textu recenze a pomocí LightGBMRegressor předpovídá hodnocení.

from pyspark.ml import Pipeline
from synapse.ml.featurize.text import TextFeaturizer
from synapse.ml.lightgbm import LightGBMRegressor

model = Pipeline(
    stages=[
        TextFeaturizer(inputCol="text", outputCol="features"),
        LightGBMRegressor(featuresCol="features", labelCol="rating", dataTransferMode="bulk")
    ]
).fit(train)

Ověření: Spuštěním následující buňky potvrďte natrénovaný kanál:

print(f"Pipeline stages: {len(model.stages)}")
print(f"Stage 1: {type(model.stages[0]).__name__}")
print(f"Stage 2: {type(model.stages[1]).__name__}")

Výstup zobrazuje dvě fáze pipeline: TextFeaturizerModel a LightGBMRegressionModel.

Predikce výstupu testovacích dat

transform Voláním metody v modelu můžete předpovědět hodnocení testovacích dat a zobrazit výsledky.

predictions = model.transform(test)
display(predictions)

Ověření: Spuštěním následující buňky potvrďte, že se vygenerovaly předpovědi:

print(f"Prediction columns: {predictions.columns}")
print(f"Prediction count: {predictions.count()}")
predictions.select("rating", "prediction").show(5)

Výstup obsahuje čtyři sloupce (rating, text, features, prediction) a přibližně 200 řádků. Sloupec prediction obsahuje predikované hodnocení modelu jako plovoucí. Porovnejte ho se skutečným rating sloupcem a vyhodnoťte výkon modelu.

(Volitelné) Použití nástrojů Foundry k analýze mínění

Pokud chcete analyzovat mínění recenzí knih, můžete použít integraci SynapseML s Nástroji Foundry. Tento krok používá předem vytvořený TextSentiment model ke klasifikaci mínění v textu, což je jiný úkol než předpověď hodnocení v předchozích krocích.

Important

Tento krok vyžaduje klíč Foundry Tools uložený v Azure Key Vault. Pokud jste tyto požadavky vynechali, nejprve je dokončete nebo tuto část přeskočte.

Spusťte následující kód s těmito nahrazeními:

  • Nahraďte <your-secret-name> názvem vašeho tajného klíče Foundry Tools ve službě Key Vault.
  • Nahraďte <your-key-vault-name> názvem vaší instance Azure Key Vault.
from synapse.ml.services import TextSentiment
from synapse.ml.core.platform import find_secret

sentiment_model = TextSentiment(
    textCol="text",
    outputCol="sentiment",
    subscriptionKey=find_secret("<your-secret-name>", "<your-key-vault-name>")
).setLocation("eastus")

sentiment_results = sentiment_model.transform(test)
display(sentiment_results)

Note

Aktualizujte hodnotu setLocation, pokud je prostředek Foundry Tools v jiné oblasti Azure (například "westus2" nebo "westeurope").

Ověření: Spuštěním následující buňky potvrďte dokončení analýzy mínění:

print(f"Sentiment columns: {sentiment_results.columns}")
sentiment_results.select("text", "sentiment").show(3, truncate=50)

Výstup zobrazuje tři sloupce (rating, text, sentiment). Sloupec sentiment obsahuje strukturované výsledky s popisky, jako je positive, negative, neutralnebo mixed pro každou kontrolu.

Troubleshooting

Problém Příčina Resolution
JAVA_GATEWAY_EXITED chyba při vytváření SparkSession Spouštění kódu mimo notebook Fabric Spusťte tento kód v Fabric poznámkovém bloku, kde je Spark předkonfigurovaný. Nespouštějte lokálně bez nainstalovaného Sparku.
Could not find <secret> in keyvault <vault> Název služby Key Vault nebo název tajného klíče je nesprávný nebo identita notebooku nemá přístup Ověřte, že názvy přesně odpovídají. Na portálu Azure ověřte, že identita pracovního prostoru Fabric má oprávnění Get pro tajné kódy v Key Vaultu.
TextFeaturizer vrací prázdné prvky Vstupní textový sloupec má hodnotu null nebo je prázdný. Zkontrolujte hodnoty null: train.filter(train.text.isNull()).count() – před trénováním odeberte hodnoty null.
randomSplit vrátí neočekávané počty řádků. Náhodné rozdělení Sparku není deterministické. Toto chování je očekávané. Nastavte počáteční hodnotu pro reprodukovatelnost: .randomSplit([0.8, 0.2], seed=42)
AnalysisException: Path does not exist Problém se sítí při přístupu k ukázkovému objektu blob s daty Ověřte síťové připojení. V Fabric ověřte, že váš pracovní prostor má přístup k externím adresám URL Azure Blob Storage.
Foundry Tools vrátí hodnotu 401 nebo 403 Neplatný nebo prošlý klíč předplatného Vygenerujte nový klíč v portálu Azure v části Klíče a koncový bod prostředku Foundry Tools. Aktualizujte tajný kód Key Vault.
setLocation vrátí hodnotu 404 Neshoda oblastí Nastavte umístění tak, aby odpovídalo oblasti Azure, ve které jste vytvořili prostředek Foundry Tools ve službě Azure.

Vyčistěte zdroje

Pokud jste vytvořili prostředky Azure pro volitelný krok Nástroje Foundry a už je nepotřebujete, odstraňte je, abyste se vyhnuli poplatkům:

  1. Na portálu Azure odstraňte prostředek s více službami Foundry Tools.
  2. Na portálu Azure odstraňte instanci Key Vault.
  3. V pracovním prostoru Fabric odstraňte testovací poznámkový blok, pokud ho už nepotřebujete.