Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule pokazano, jak utworzyć model uczenia maszynowego za pomocą usługi SynapseML w notesie Microsoft Fabric. Tworzysz potok treningowy, który wykorzystuje wektoryzację tekstu i regresję LightGBM do przewidywania ocen książek na podstawie tekstu recenzji. Dowiesz się również, jak korzystać z narzędzi Foundry Tools do gotowej analizy wydźwięku.
- Utwórz notes w usłudze Fabric i dołącz lakehouse
- Importowanie bibliotek i ładowanie danych
- Kompilowanie i trenowanie cechowania tekstu i potoku regresji LightGBM
- Generowanie przewidywań
- (Opcjonalnie) Uruchom analizę wydźwięku w Foundry Tools
Wymagania wstępne
Uzyskaj subskrypcję usługi Microsoft Fabric. Możesz też utworzyć konto bezpłatnej wersji próbnej usługi Microsoft Fabric.
Zaloguj się do usługi Microsoft Fabric.
Przełącz się na Fabric, używając przełącznika nawigacji w lewej dolnej części strony głównej.
- Utwórz nowy notebook w obszarze roboczym Fabric.
- Dołącz lakehouse do notesnika. W panelu Eksplorator rozwiń Lakehouses, a następnie wybierz Dodaj.
- (Opcjonalnie) Aby uruchomić krok analizy wydźwięku, potrzebne są następujące elementy:
- Klucz do narzędzi Foundry. Postępuj zgodnie z instrukcjami w dokumencie Szybki start: tworzenie zasobu wielousługowego dla narzędzi Foundry.
- Wystąpienie usługi Azure Key Vault z kluczem Foundry Tools przechowywanym jako wpis tajny.
Konfigurowanie środowiska
W notesie zaimportuj biblioteki SynapseML i zainicjuj sesję platformy Spark.
from pyspark.sql import SparkSession
from synapse.ml.core.platform import *
spark = SparkSession.builder.getOrCreate()
Weryfikacja: Uruchom następującą komórkę, aby potwierdzić, że Spark działa:
print(f"Spark version: {spark.version}")
Dane wyjściowe zawierają numer wersji platformy Spark. Oczekiwana jest dowolna wersja 3.4 lub nowsza. Dokładna wersja zależy od środowiska uruchomieniowego Fabric.
Ładowanie zestawu danych
Załaduj zestaw danych przeglądów książek i podziel go na zestawy treningowe i testowe. Zestaw danych zawiera dwie kolumny: rating (liczba całkowita 1–5) i text (przejrzyj zawartość).
train, test = (
spark.read.parquet(
"wasbs://publicwasb@mmlspark.blob.core.windows.net/BookReviewsFromAmazon10K.parquet"
)
.limit(1000)
.cache()
.randomSplit([0.8, 0.2])
)
display(train)
Weryfikacja: Uruchom następującą komórkę, aby potwierdzić, że dane zostały poprawnie załadowane:
print(f"Training rows: {train.count()}, Test rows: {test.count()}")
print(f"Columns: {train.columns}")
train.printSchema()
Dane wyjściowe zawierają około 800 wierszy treningowych i 200 wierszy testowych z dwiema kolumnami: rating (liczba całkowita) i text (ciąg). Dokładne liczby wierszy różnią się, ponieważ randomSplit nie są deterministyczne.
Utwórz potok szkoleniowy
Utwórz potok, który przekształca tekst recenzji do postaci cech za pomocą TextFeaturizer i przewiduje ocenę za pomocą 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)
Weryfikacja: Uruchom następującą komórkę, aby potwierdzić, że potok został wytrenowany:
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__}")
Dane wyjściowe zawierają dwa etapy potoku: TextFeaturizerModel i LightGBMRegressionModel.
Przewidzieć wyniki danych testowych
Wywołaj metodę transform w modelu, aby przewidzieć klasyfikacje danych testowych i wyświetlić wyniki.
predictions = model.transform(test)
display(predictions)
Weryfikacja: Uruchom następującą komórkę, aby potwierdzić, że wygenerowano predykcje:
print(f"Prediction columns: {predictions.columns}")
print(f"Prediction count: {predictions.count()}")
predictions.select("rating", "prediction").show(5)
Dane wyjściowe zawierają cztery kolumny (rating, text, features, prediction) i około 200 wierszy. Kolumna prediction zawiera przewidywaną ocenę modelu jako liczbę zmiennoprzecinkową. Porównaj ją z rzeczywistą rating kolumną, aby ocenić wydajność modelu.
(Opcjonalnie) Używanie narzędzi Foundry Tools do analizy wydźwięku
Jeśli chcesz przeanalizować tonację recenzji książki, możesz użyć integracji usługi SynapseML z narzędziami Foundry Tools. W tym kroku użyto wstępnie utworzonego TextSentiment modelu do klasyfikowania tonacji tekstu, które jest innym zadaniem niż przewidywanie klasyfikacji w poprzednich krokach.
Ważna
Ten krok wymaga klucza Foundry Tools przechowywanego w usłudze Azure Key Vault. Jeśli pominięto te wymagania wstępne, najpierw wykonaj je lub pomiń tę sekcję.
Uruchom następujący kod z następującymi zamianami:
- Zastąp
<your-secret-name>nazwą klucza narzędzia Foundry w Key Vault. - Zastąp
<your-key-vault-name>nazwą instancji usługi 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
Zaktualizuj wartość setLocation, jeśli zasób narzędzia Foundry znajduje się w innym regionie Azure (na przykład "westus2" lub "westeurope").
Weryfikacja: Uruchom następującą komórkę, aby potwierdzić, że analiza wydźwięku została ukończona:
print(f"Sentiment columns: {sentiment_results.columns}")
sentiment_results.select("text", "sentiment").show(3, truncate=50)
Dane wyjściowe zawierają trzy kolumny (rating, text, sentiment). Kolumna sentiment zawiera ustrukturyzowane wyniki z etykietami takimi jak positive, negative, neutral lub mixed dla każdej recenzji.
Troubleshooting
| Problematyka | Przyczyna | Resolution |
|---|---|---|
JAVA_GATEWAY_EXITED błąd podczas tworzenia SparkSession |
Uruchamianie kodu poza notatnikiem Fabric | Uruchom ten kod w notesie Fabric, w którym platforma Spark jest wstępnie skonfigurowana. Nie uruchamiaj lokalnie bez instalacji platformy Spark. |
Could not find <secret> in keyvault <vault> |
Nazwa usługi Key Vault lub nazwa wpisu tajnego jest niepoprawna albo tożsamość notesu nie ma uprawnień dostępu | Sprawdź, czy nazwy są dokładnie zgodne. W portalu Azure upewnij się, że tożsamość obszaru roboczego Fabric ma uprawnienie Get do wpisów tajnych w usłudze Key Vault. |
TextFeaturizer zwraca puste funkcje |
Kolumna tekstowa danych wejściowych ma wartość null lub jest pusta | Sprawdź, czy nie ma wartości null: train.filter(train.text.isNull()).count() — usuń wartości null przed trenowaniem. |
randomSplit zwraca nieoczekiwane liczby wierszy |
Losowe dzielenie platformy Spark nie jest deterministyczne | Jest to oczekiwane zachowanie. Ustaw ziarno dla powtarzalności: .randomSplit([0.8, 0.2], seed=42) |
AnalysisException: Path does not exist |
Problem z siecią podczas uzyskiwania dostępu do przykładowego obiektu blob danych | Sprawdź łączność sieciową. W Fabric upewnij się, że obszar roboczy może uzyskiwać dostęp do zewnętrznych adresów URL Azure Blob Storage. |
| Narzędzia Foundry zwracają kod 401 lub 403 | Nieprawidłowy lub wygasły klucz subskrypcji | Wygeneruj nowy klucz w portalu Azure w sekcji Klucze i punkt końcowy w zasobie Foundry Tools. Zaktualizuj klucz tajny w usłudze Key Vault. |
setLocation zwraca kod 404 |
Niezgodność regionów | Ustaw lokalizację tak, aby odpowiadała regionowi Azure, w którym utworzono zasób narzędzi foundry. |
Uprzątnij zasoby
Jeśli utworzyłeś zasoby platformy Azure na potrzeby opcjonalnego kroku Foundry Tools i nie są już potrzebne, usuń je, aby uniknąć opłat:
- W portalu Azure usuń wielousługowy zasób Foundry Tools.
- W portalu Azure usuń wystąpienie Key Vault.
- W obszarze roboczym Fabric usuń notes testowy, jeśli nie jest już potrzebny.