Bygg en modell med SynapseML

Denne artikkelen viser deg hvordan du bygger en maskinlæringsmodell med SynapseML i en Microsoft Fabric-bærbar PC. Du lager en treningspipeline som bruker tekstfunksjoner og LightGBM-regresjon for å forutsi bokvurderinger ut fra anmeldelsestekst. Du lærer også hvordan du bruker Foundry Tools for forhåndsbygd sentimentanalyse.

  • Lag en Fabric-notatbok og fest en hytte ved innsjøen
  • Importer biblioteker og last inn data
  • Bygg og tren en tekstutviklings- og LightGBM-regresjonspipeline
  • Generer prediksjoner
  • (Valgfritt) Kjør Foundry Tools sentimentanalyse

Forutsetning

  • Få et Microsoft Fabric-abonnement. Eller registrer deg for en gratis prøveversjon av Microsoft Fabric.

  • Logg på Microsoft Fabric.

  • Bytt til Fabric ved å bruke erfaringsbryteren nederst til venstre på hjemmesiden din.

    Skjermbilde som viser valget av Fabric i menyen for opplevelsesbytter.

Konfigurere miljøet

Importer SynapseML-biblioteker i notatblokken, og initialiser Spark-økten.

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

spark = SparkSession.builder.getOrCreate()

Verifikasjon: Kjør følgende celle for å bekrefte at Spark kjører:

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

Utgangen viser Spark-versjonsnummeret. Enhver versjon 3.4 eller nyere forventes. Den eksakte versjonen avhenger av din Fabric-kjøretid.

Laste inn et datasett

Last inn bokanmeldelsesdatasettet og del det opp i trenings- og testsett. Datasettet inneholder to kolonner: rating (heltall 1-5) og text (gjennomgangsinnhold).

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

display(train)

Verifikasjon: Kjør følgende celle for å bekrefte at dataene er lastet riktig:

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

Utdataene viser omtrent 800 treningsrader og 200 testrader, med to kolonner: rating (heltall) og text (streng). De eksakte radtellingene varierer fordi randomSplit det er ikke-deterministisk.

Opprett opplæringssamlebåndet

Lag en pipeline som fremhever anmeldelsesteksten med TextFeaturizer og forutsier vurderingen med LightGBMRegressor.

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)

Verifikasjon: Kjør følgende celle for å bekrefte at rørledningen er trent:

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__}")

Utgangen viser to pipeline-faser: TextFeaturizerModel og LightGBMRegressionModel.

Forutsi utdataene for testdataene

Kall metoden transform på modellen for å forutsi vurderinger for testdataene og vise resultatene.

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

Verifikasjon: Kjør følgende celle for å bekrefte at prediksjoner ble generert:

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

Utdataene viser fire kolonner (rating, text, features, ) predictionog omtrent 200 rader. Kolonnen prediction inneholder modellens forventede vurdering som en flyt. Sammenlign det med den faktiske rating kolonnen for å vurdere modellens ytelse.

(Valgfritt) Bruk Foundry Tools for sentimentanalyse

Hvis du vil analysere stemningen i bokanmeldelsene dine, kan du bruke SynapseMLs integrasjon med Foundry Tools. Dette steget bruker den forhåndsbygde TextSentiment modellen for å klassifisere tekstsentiment, noe som er en annen oppgave enn vurderingsprediksjonen i de forrige stegene.

Important

Dette steget krever en Foundry Tools-nøkkel lagret i Azure Key Vault. Hvis du hoppet over disse forutsetningene, fullfør dem først eller hopp over denne delen.

Kjør følgende kode med disse erstatningene:

  • Erstatt <your-secret-name> med navnet på nøkkelhemmeligheten i Foundry Tools i Key Vault.
  • Erstatt <your-key-vault-name> med navnet på din Azure Key Vault instans.
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

Oppdater setLocation-verdien hvis Foundry Tools-ressursen din er i en annen Azure region (for eksempel "westus2" eller "westeurope").

Verifikasjon: Kjør følgende celle for å bekrefte at sentimentanalysen er fullført:

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

Utgangen viser tre kolonner (rating, text, ). sentiment Kolonnen sentiment inneholder strukturerte resultater med etiketter som positive, negative, neutral, eller mixed for hver gjennomgang.

Feilsøking

Problem Årsak Løsning
JAVA_GATEWAY_EXITED feil ved opprettelse av SparkSession Kjøre kode utenfor en Fabric-notebook Kjør denne koden i en Fabric-notebook hvor Spark er forhåndskonfigurert. Ikke kjør lokalt uten en Spark-installasjon.
Could not find <secret> in keyvault <vault> Key Vault-navn eller hemmelig navn er feil, eller notatbokens identitet mangler tilgang Bekreft at navnene stemmer nøyaktig. I Azure-portalen, bekreft at din Fabric arbeidsområdeidentitet har Get tillatelse på Key Vault hemmeligheter.
TextFeaturizer returnerer tomme funksjoner Inndatatekstkolonnen er null eller tom Sjekk nullverdier: train.filter(train.text.isNull()).count() - fjern nullverdier før trening.
randomSplit returnerer uventede radteller Sparks tilfeldige splitting er ikke-deterministisk Dette er forventet adferd. Sett et frø for reproduserbarhet: .randomSplit([0.8, 0.2], seed=42)
AnalysisException: Path does not exist Nettverksproblem med tilgang til eksempeldatablobben Sjekk nettverkstilkoblingen. I Fabric, bekreft at arbeidsområdet ditt kan få tilgang til eksterne Azure Blob Storage-URL-er.
Foundry Tools returnerer 401 eller 403 Ugyldig eller utløpt abonnementsnøkkel Generer en ny nøkkel i Azure-portalen under Foundry Tools-ressursen din Keys and Endpoint-seksjonen. Oppdater Key Vault-hemmeligheten.
setLocation Returer 404 Regionmismatch Sett lokasjonen til å matche Azure-regionen der du opprettet Foundry Tools-ressursen din.

Rydd opp ressurser

Hvis du opprettet Azure-ressurser for det valgfrie steget Foundry Tools og ikke lenger trenger dem, slett dem for å unngå kostnader:

  1. I Azure-portalen, slett Foundry Tools multi-service resource.
  2. I Azure-portalen, slett Key Vault-instansen.
  3. I Fabric-arbeidsområdet ditt, slett testnotatboken hvis du ikke lenger trenger den.