Aller au contenu principal

Entraînez des modèles Spark ML sur Databricks Connect avec pyspark.ml.connect

Cet article fournit un exemple montrant comment utiliser le module pyspark.ml.connect pour effectuer un entraînement distribué afin d'entraîner des modèles Spark ML et d'exécuter l'inférence de modèle.

Qu'est-ce que pyspark.ml.connect?

Spark 3.5 introduit pyspark.ml.connect qui est conçu pour prendre en charge le mode de connexion Spark et Databricks Connect. En savoir plus sur Databricks Connect.

Le module pyspark.ml.connect se compose d'algorithmes d'apprentissage courants et d'infrastructures publiques, y compris la classification, les transformateurs de fonctionnalités, les Pipelines de ML et la validation croisée. Ce module fournit des interfaces similaires à celles du modulepyspark.ml hérité, mais le module pyspark.ml.connect ne contient actuellement qu'un sous-ensemble des algorithmes de pyspark.ml. Les algorithmes pris en charge sont listés ci-dessous :

  • Algorithme de classification : pyspark.ml.connect.classification.LogisticRegression
  • Transformations de fonctionnalités : pyspark.ml.connect.feature.MaxAbsScaler et pyspark.ml.connect.feature.StandardScaler
  • Évaluateur : pyspark.ml.connect.RegressionEvaluator, pyspark.ml.connect.BinaryClassificationEvaluator et MulticlassClassificationEvaluator
  • pipeline: pyspark.ml.connect.pipeline.Pipeline
  • Réglage du modèle : pyspark.ml.connect.tuning.CrossValidator

Exigences

Sur Databricks Runtime 17.0 et versions ultérieures, Spark ML sur Spark connect est activé par default sur les ressources de calcul avec le mode d'accès Standard , avec certaines limitations. Consultez Limitations pour Databricks Runtime 17.0 sur compute standard. Utilisez Spark ML sur un compute Standard si vous avez besoin d'une distribution de niveau Spark pour des données qui ne tiennent pas en mémoire sur un seul nœud ou si vous devez effectuer un ajustement distribué des hyperparamètres.

Pour Databricks Runtime 14,0 ML et versions ultérieures (y compris Databricks Runtime 17,0 sur les ressources de compute utilisant le mode d'accès Dédié ), des exigences supplémentaires sont nécessaires pour utiliser Spark ML :

Exemple de Notebook

Le Notebook suivant montre comment utiliser le ML distribué sur Databricks Connect :

ML distribué sur Databricks Connect

Pour des informations de référence concernant les APIs dans pyspark.ml.connect, Databricks recommande la référence de l'API Apache Spark

Limitations pour Databricks Runtime 17.0 sur le compute Standard

  • Python seulement : Spark ML sur compute standard prend en charge uniquement Python. R et Scala ne sont pas pris en charge.
  • **Prise en charge des bibliothèques** : Seul le pyspark.ml package est pris en charge. Le package pyspark.mllib n'est pas pris en charge.
  • Contraintes de taille de modèle : La taille maximale du modèle est de 1 Go, de sorte que l'entraînement de modèles extrêmement volumineux peut ne pas être réalisable. La formation du modèle d'arbre s'arrêtera prématurément si la taille du modèle est sur le point de dépasser 1 Go.
  • **Contraintes de mémoire** : Bien que les données puissent être distribuées sur le cluster, le modèle entraîné lui-même est mis en cache sur le nœud Driver, qui est partagé entre d’autres utilisateurs. La taille maximale du cache de modèle par session est de 10 Go, et la taille maximale du cache de modèle en mémoire par session est de 25 % de la mémoire JVM du Driver Spark.
  • Délais d'expiration de session : Le modèle mis en cache sur le compute Standard expire automatiquement après 15 minutes d'inactivité. Pour éviter de perdre votre modèle, sauvegardez-le sur disque dans les 15 minutes suivant la fin de l'entraînement, ou maintenez la session active avec une utilisation fréquente.
  • Conflit de ressources : dans les environnements de compute Standard, les ressources sont partagées entre les utilisateurs et les Jobs au sein du Workspace. L'exécution simultanée de plusieurs Jobs de grande taille peut entraîner des performances plus lentes ou une concurrence pour les emplacements d'exécution.
  • Pas de prise en charge du GPU : Les environnements de compute standard ne prennent pas en charge l'accélération GPU. Pour les charges de travail de Machine Learning accélérées par GPU, des clusters GPU dédiés sont recommandés.
  • Modèles SparkML restreints : les modèles SparkML suivants ne sont pas pris en charge :
    • DistributedLDAModel
    • FPGrowthModel