Installare una versione diversa di SynapseML in Fabric

SynapseML (Synapse Machine Learning) è preinstallato in Microsoft Fabric. Se è necessaria una versione specifica, è possibile eseguirne l'override usando il %%configure comando magic in un notebook Fabric.

Avvio rapido

Passo Action Stima del tempo
1 Verificare i prerequisiti (area di lavoro, notebook) 2 minuti
2 Aggiungere %%configure una cella per installare la versione di SynapseML necessaria 1 minuto
3 Verificare la versione installata 1 minuto

Prerequisiti

Prima di iniziare, assicurarsi di disporre delle risorse seguenti:

Requisito Dettagli
area di lavoro Microsoft Fabric Un'area di lavoro con una capacità Fabric (F2 o superiore) o una versione di prova di Fabric.
Notebook in tessuto Creare un nuovo notebook nell'ambiente Fabric Data Science o Data Engineering.
Versione di runtime di Fabric Scopri la versione del runtime dell'area di lavoro. Le versioni JAR synapseML e Spark Avro devono corrispondere alla versione di Spark nel runtime. Vedi versioni di runtime di Fabric.

Importante

Il %%configure comando riavvia la sessione spark con nuove impostazioni. Eseguilo nella prima cella del tuo notebook, prima di qualsiasi altro codice. Se viene eseguito dopo l'avvio di una sessione Spark, il flag -f forza il riavvio della sessione e tutte le variabili e lo stato vengono persi.

Nota

Il %%configure comando magic nei notebook Fabric ha un supporto ufficiale limitato. Non esiste alcuna garanzia di un contratto di servizio o di una futura compatibilità con le versioni ufficiali. Per un metodo supportato, valutare l'uso di personalizzazione dell'ambiente Fabric per gestire le librerie.

Compatibilità dei runtime di SynapseML e Fabric

Scegli la versione di SynapseML e il file JAR di Spark Avro corrispondenti alla versione di Spark del runtime Fabric:

runtime di Fabric Versione di Spark Versione di SynapseML Spark Avro JAR
Runtime 1.1 3.3 Da 0.11.1 a 0.11.4 spark-avro_2.12:3.3.1
Runtime 1.2 3.4 Da 1.0.4 a 1.0.8 spark-avro_2.12:3.4.1
Runtime 1.3 3.5 Da 1.0.4 a 1.0.8 spark-avro_2.12:3.5.1

È possibile trovare le versioni di SynapseML disponibili in Maven Central.

Installare SynapseML con %%configure

Il %%configure -f comando configura le proprietà della sessione Spark, incluse le coordinate del pacchetto Maven. Il -f flag forza il riavvio della sessione esistente.

Esempio per Fabric Runtime 1.2 (Spark 3.4)

Incolla questo codice nella prima cella di un nuovo notebook di Fabric ed esegui la cella:

%%configure -f
{
  "name": "synapseml",
  "conf": {
      "spark.jars.packages": "com.microsoft.azure:synapseml_2.12:1.0.8,org.apache.spark:spark-avro_2.12:3.4.1",
      "spark.jars.repositories": "https://mmlspark.azureedge.net/maven",
      "spark.jars.excludes": "org.scala-lang:scala-reflect,org.apache.spark:spark-tags_2.12,org.scalactic:scalactic_2.12,org.scalatest:scalatest_2.12,com.fasterxml.jackson.core:jackson-databind",
      "spark.yarn.user.classpath.first": "true",
      "spark.sql.parquet.enableVectorizedReader": "false",
      "spark.sql.legacy.replaceDatabricksSparkAvro.enabled": "true"
  }
}

Per installare una versione diversa, sostituire i numeri di versione in spark.jars.packages:

  • synapseml_2.12:<version>: versione di SynapseML desiderata, ad esempio 1.0.4.
  • spark-avro_2.12:<spark-version>: deve corrispondere alla versione di Spark Fabric runtime (vedere la tabella di compatibilità).

Esempio per Fabric Runtime 1.1 (Spark 3.3)

%%configure -f
{
  "name": "synapseml",
  "conf": {
      "spark.jars.packages": "com.microsoft.azure:synapseml_2.12:0.11.4,org.apache.spark:spark-avro_2.12:3.3.1",
      "spark.jars.repositories": "https://mmlspark.azureedge.net/maven",
      "spark.jars.excludes": "org.scala-lang:scala-reflect,org.apache.spark:spark-tags_2.12,org.scalactic:scalactic_2.12,org.scalatest:scalatest_2.12,com.fasterxml.jackson.core:jackson-databind",
      "spark.yarn.user.classpath.first": "true",
      "spark.sql.parquet.enableVectorizedReader": "false",
      "spark.sql.legacy.replaceDatabricksSparkAvro.enabled": "true"
  }
}

Verificare la configurazione di Spark

Dopo l'esecuzione della cella, verificare che la sessione spark abbia accettato la configurazione. Eseguire questo codice in una nuova cella:

print(spark.conf.get("spark.jars.packages"))

Output previsto (per l'esempio runtime 1.2):

com.microsoft.azure:synapseml_2.12:1.0.8,org.apache.spark:spark-avro_2.12:3.4.1

Controllare la versione di SynapseML

Per verificare l'installazione, eseguire il codice seguente in una nuova cella. Il numero di versione deve corrispondere alla versione installata.

import synapse.ml.lightgbm
print(f"SynapseML version: {synapse.ml.lightgbm.__version__}")

Output previsto (per l'esempio runtime 1.2):

SynapseML version: 1.0.8

Nota

In SynapseML 1.0 e versioni successive il synapse.ml.cognitive modulo è deprecato. Usare synapse.ml.services invece per accedere alle integrazioni del servizio di intelligenza artificiale.

Ripristinare la versione predefinita

Per ripristinare la versione di SynapseML preinstallata, rimuovere la %%configure cella e riavviare la sessione del notebook:

  1. Eliminare o commentare la cella %%configure.
  2. Selezionare Sessione>arresta sessione nella barra degli strumenti del notebook.
  3. Eseguire qualsiasi cella per avviare una nuova sessione con la configurazione predefinita.

Informazioni di riferimento sulla configurazione

Il %%configure blocco include queste proprietà di Spark:

Proprietà Purpose
spark.jars.packages Le coordinate Maven per i file JAR di SynapseML e Spark Avro.
spark.jars.repositories URL aggiuntivo del repository Maven per gli artefatti SynapseML.
spark.jars.excludes Esclude le dipendenze transitive in conflitto con le librerie di Fabric preinstallate.
spark.yarn.user.classpath.first Assegna la priorità ai JAR forniti dall'utente su quelli preinstallati.
spark.sql.parquet.enableVectorizedReader Disabilita il lettore Parquet vettorializzato per evitare problemi di compatibilità.
spark.sql.legacy.replaceDatabricksSparkAvro.enabled Abilita la compatibilità con il lettore Avro precedente.

Troubleshooting

La cella %%configure non ha alcun effetto

Causa: la %%configure cella non era la prima cella da eseguire o una sessione Spark era già attiva.

Correzione: selezionare Sessione>arresta sessione, quindi eseguire prima la %%configure cella.

Il download JAR non riesce o va in timeout

Causa: il repository Maven non è raggiungibile o le coordinate della versione non sono corrette.

Correzione: verificare che la versione di SynapseML esista in Maven Central. Verificare che la spark-avro versione corrisponda alla versione del runtime di Spark.

ClassNotFoundException o NoSuchMethodError durante l’esecuzione

Causa: la versione di SynapseML non è compatibile con la versione di Spark di runtime Fabric.

Correzione: usare la tabella di compatibilità per selezionare la combinazione di versione corretta.

ImportError: nessun modulo denominato 'synapse.ml'

Causa: il pacchetto wrapper Python SynapseML non è installato nell'ambiente notebook.

Correzione: in una nuova cella eseguire:

%pip install synapseml==1.0.8

Sostituire 1.0.8 con la versione corrispondente al file JAR installato.

Il numero di versione non corrisponde alla versione installata

Causa: l'attributo Python __version__ deriva dal synapseml pacchetto pip, che potrebbe differire dalla versione JAR installata da %%configure.

Correzione: verificare sia la configurazione spark che la versione del pacchetto pip:

# Check the JAR version from Spark config
print("JAR packages:", spark.conf.get("spark.jars.packages"))

# Check the pip package version
import synapse.ml.lightgbm
print("Pip package version:", synapse.ml.lightgbm.__version__)

Se le versioni non corrispondono, installare il pacchetto pip corrispondente:

%pip install synapseml==1.0.8