Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se muestra cómo crear un modelo de aprendizaje automático con SynapseML en un cuaderno de Microsoft Fabric. Cree una canalización de entrenamiento que use la caracterización de texto y la regresión de LightGBM para predecir clasificaciones de libros a partir del texto de revisión. También aprenderá a usar Foundry Tools para el análisis de sentimiento precompilado.
- Crear un cuaderno de Fabric y adjuntar un lakehouse
- Importación de bibliotecas y carga de datos
- Crear y entrenar una canalización de extracción de características de texto y regresión con LightGBM
- Generación de predicciones
- (Opcional) Ejecuta el análisis de sentimiento con Foundry Tools
Requisitos previos
Obtenga una suscripción a Microsoft Fabric. También puede registrarse para obtener una evaluación gratuita de Microsoft Fabric.
Inicie sesión en Microsoft Fabric.
Cambie a Fabric mediante el conmutador de experiencia en el lado inferior izquierdo de la página principal.
- Crear un nuevo cuaderno en el área de trabajo de Fabric.
- Adjunte una casa de lago al cuaderno. En el panel Explorador , expanda Lakehouses y, a continuación, seleccione Agregar.
- (Opcional) Para ejecutar el paso de análisis de sentimiento, necesita:
- Una clave de Foundry Tools. Siga las instrucciones de Inicio rápido: Creación de un recurso de varios servicios para Las herramientas de Foundry.
- Una instancia de Azure Key Vault con la clave de Foundry Tools almacenada como un secreto.
Configuración del entorno
En su cuaderno, importe las bibliotecas SynapseML e inicialice su sesión Spark.
from pyspark.sql import SparkSession
from synapse.ml.core.platform import *
spark = SparkSession.builder.getOrCreate()
Comprobación: Ejecute la celda siguiente para confirmar que Spark se está ejecutando:
print(f"Spark version: {spark.version}")
La salida muestra el número de versión de Spark. Se espera cualquier versión 3.4 o posterior. La versión exacta depende del entorno de ejecución de Fabric.
Cargar un conjunto de datos
Cargue el conjunto de datos de revisiones del libro y divida en conjuntos de entrenamiento y pruebas. El conjunto de datos contiene dos columnas: rating (entero 1-5) y text (revisar contenido).
train, test = (
spark.read.parquet(
"wasbs://publicwasb@mmlspark.blob.core.windows.net/BookReviewsFromAmazon10K.parquet"
)
.limit(1000)
.cache()
.randomSplit([0.8, 0.2])
)
display(train)
Comprobación: Ejecute la celda siguiente para confirmar que los datos se han cargado correctamente:
print(f"Training rows: {train.count()}, Test rows: {test.count()}")
print(f"Columns: {train.columns}")
train.printSchema()
La salida muestra aproximadamente 800 filas de entrenamiento y 200 filas de prueba, con dos columnas: rating (entero) y text (cadena). Los recuentos exactos de filas varían porque randomSplit no es determinista.
Crear la canalización de entrenamiento
Cree una canalización que incluya el texto de revisión con TextFeaturizer y prediga la clasificación con 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)
Comprobación: Ejecute la celda siguiente para confirmar la canalización entrenada:
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__}")
La salida muestra dos fases de canalización: TextFeaturizerModel y LightGBMRegressionModel.
Predecir el resultado de los datos de prueba
Llame al método transform del modelo para predecir valoraciones para los datos de prueba y mostrar los resultados.
predictions = model.transform(test)
display(predictions)
Comprobación: Ejecute la celda siguiente para confirmar que se generaron predicciones:
print(f"Prediction columns: {predictions.columns}")
print(f"Prediction count: {predictions.count()}")
predictions.select("rating", "prediction").show(5)
La salida enumera cuatro columnas (rating, text, features, prediction) y aproximadamente 200 filas. La prediction columna contiene la clasificación predicha del modelo como un valor float. Compárelo con la columna real rating para evaluar el rendimiento del modelo.
(Opcional) Uso de las herramientas de Foundry para el análisis de sentimiento
Si desea analizar las opiniones de sus libros, puede usar la integración de SynapseML con Foundry Tools. En este paso se utiliza el modelo predefinido TextSentiment para clasificar el sentimiento del texto, que es una tarea diferente de la predicción de la calificación en los pasos anteriores.
Importante
Este paso requiere una clave de Foundry Tools almacenada en Azure Key Vault. Si se saltó esos requisitos previos, complételos primero u omita esta sección.
Ejecute el código siguiente con estos reemplazos:
- Reemplace
<your-secret-name>por el nombre del secreto de clave de Foundry Tools en Key Vault. - Reemplace
<your-key-vault-name>por el nombre de la instancia de 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)
Nota:
Actualice el valor de setLocation si el recurso de Foundry Tools está en una región de Azure diferente (por ejemplo, "westus2" o "westeurope").
Comprobación: Ejecute la celda siguiente para confirmar que se completó el análisis de opiniones:
print(f"Sentiment columns: {sentiment_results.columns}")
sentiment_results.select("text", "sentiment").show(3, truncate=50)
La salida muestra tres columnas (rating, text, sentiment). La sentiment columna contiene resultados estructurados con etiquetas como positive, negative, neutralo mixed para cada revisión.
Solución de problemas
| Cuestión | Causa | Resolution |
|---|---|---|
JAVA_GATEWAY_EXITED error al crear SparkSession |
Ejecución de código fuera de un cuaderno de Fabric | Ejecute este código en un cuaderno de Fabric donde Spark esté preconfigurado. No se ejecute localmente sin una instalación de Spark. |
Could not find <secret> in keyvault <vault> |
El nombre de Key Vault o el nombre del secreto es incorrecto, o la identidad del cuaderno no tiene acceso | Compruebe que los nombres coinciden exactamente. En el portal de Azure, compruebe que la identidad del área de trabajo de Fabric tiene el permiso Get en los secretos de Key Vault. |
TextFeaturizer no devuelve ninguna característica |
La columna de texto de entrada es nula o está vacía | Compruebe si hay valores nulos: train.filter(train.text.isNull()).count() - quite los valores nulos antes de entrenar. |
randomSplit devuelve recuentos de filas inesperados |
La división aleatoria de Spark no es determinista | Este es el comportamiento esperado. Establezca una semilla para garantizar la reproducibilidad: .randomSplit([0.8, 0.2], seed=42) |
AnalysisException: Path does not exist |
Problema de red al acceder al blob de datos de ejemplo | Compruebe la conectividad de red. En Fabric, confirme que el área de trabajo puede acceder a direcciones URL de Azure Blob Storage externas. |
| Foundry Tools devuelve 401 o 403 | Clave de suscripción no válida o expirada | Cree una nueva clave en el portal de Azure, en la sección Keys and Endpoint de su recurso Foundry Tools. Actualice el secreto de Key Vault. |
setLocation devuelve 404 |
Falta de coincidencia de regiones | Establezca la ubicación de modo que coincida con la región de Azure en la que creó el recurso Foundry Tools. |
Limpieza de recursos
Si creó recursos de Azure para el paso opcional de Herramientas de Foundry y ya no los necesita, elimínelos para evitar cargos:
- En el portal de Azure, elimine el recurso multiservicio Foundry Tools.
- En el portal de Azure, elimine la instancia de Key Vault.
- En el área de trabajo de Fabric, elimine el cuaderno de prueba si ya no lo necesita.