Utilisation d'Apache Spark avec Amazon SageMaker - Amazon SageMaker

Utilisation d'Apache Spark avec Amazon SageMaker

Cette section fournit des informations aux développeurs qui souhaitent utiliser Apache Spark pour le prétraitement des données et Amazon SageMaker pour l'entraînement et l'hébergement du modèle. Pour obtenir des informations sur les versions d'Apache Spark prises en charge, veuillez consulter la page Getting SageMaker Spark (Obtenir SageMaker Spark) dans le référentiel GitHub SageMaker Spark.

SageMaker fournit une bibliothèque Apache Spark, dans Python et Scala, que vous pouvez utiliser pour entraîner facilement des modèles dans SageMaker à l'aide de blocs de données org.apache.spark.sql.DataFrame dans vos clusters Spark. Après l'entraînement du modèle, vous pouvez également héberger le modèle à l'aide des services d'hébergement SageMaker.

La bibliothèque SageMaker Spark, com.amazonaws.services.sagemaker.sparksdk, fournit entre autres les classes suivantes :

  • SageMakerEstimator : étend l'interface org.apache.spark.ml.Estimator. Vous pouvez utiliser cet estimateur pour l'entraînement du modèle dans SageMaker.

  • KMeansSageMakerEstimator, PCASageMakerEstimator et XGBoostSageMakerEstimator : étendent la classe SageMakerEstimator.

  • SageMakerModel : étend la classe org.apache.spark.ml.Model. Vous pouvez utiliser ce SageMakerModel pour l'hébergement de modèle et obtenir des inférences dans SageMaker.

Avec SageMaker Studio, vous pouvez facilement vous connecter à un cluster Amazon EMR. Pour plus d'informations, veuillez consulter Prepare Data at Scale with Studio Notebooks.

Téléchargement de la bibliothèque SageMaker Spark

Vous disposez des options suivantes pour télécharger la bibliothèque Spark fournie par SageMaker :

  • Vous pouvez télécharger le code source pour les bibliothèques PySpark et Scala à partir du référentiel GitHub SageMaker Spark.

  • Pour la bibliothèque Python Spark, vous disposez des options supplémentaires suivantes :

    • Utilisez pip install :

      pip install sagemaker_pyspark
    • Dans une instance de bloc-notes, créez un bloc-notes qui utilise le noyau Sparkmagic (PySpark) ou Sparkmagic (PySpark3), et connectez-vous à un cluster Amazon EMR distant.

      Note

      Le cluster EMR doit être configuré avec un rôle IAM auquel la politique AmazonSageMakerFullAccess est attachée. Pour de plus amples informations sur la configuration de rôles pour un cluster EMR, veuillez consulter Configure IAM Roles for Amazon EMR Permissions to AWS Services dans le Guide de gestion Amazon EMR.

       

  • Vous pouvez obtenir la bibliothèque Scala à partir de Maven. Ajoutez la bibliothèque Spark à votre projet en ajoutant la dépendance suivante à votre fichier pom.xml :

    <dependency> <groupId>com.amazonaws</groupId> <artifactId>sagemaker-spark_2.11</artifactId> <version>spark_2.2.0-1.0</version> </dependency>

Intégration de votre application Apache Spark avec SageMaker

Voici un résumé de haut niveau des étapes permettant d'intégrer votre application Apache Spark avec SageMaker.

  1. Poursuivez le prétraitement des données en utilisant la bibliothèque Apache Spark que vous connaissez. Votre ensemble de données demeure un DataFrame dans votre cluster Spark. Chargez vos données dans un DataFrame et effectuez un prétraitement de manière à disposer d'une colonne features avec org.apache.spark.ml.linalg.Vector de Doubles, et une colonne label (facultative) avec des valeurs de type Double.

  2. Utilisez l'estimateur dans la bibliothèque SageMaker Spark pour entraîner votre modèle. Par exemple, si vous choisissez l'algorithme k-means fourni par SageMaker pour l'entraînement du modèle, vous appelez la méthode KMeansSageMakerEstimator.fit.

    Fournissez votre DataFrame comme entrée. L'évaluateur renvoie un objet SageMakerModel.

    Note

    SageMakerModel étend le modèle org.apache.spark.ml.Model.

    La méthode fit effectue les opérations suivantes :

    1. Convertit l'entrée DataFrame au format protobuf en sélectionnant les colonnes features et label à partir de l'entrée DataFrame et en téléchargeant les données protobuf dans un compartiment Amazon S3. Le format protobuf est efficace pour l'entraînement du modèle dans SageMaker.

    2. Initie l'entraînement du modèle dans SageMaker en envoyant une demande CreateTrainingJob à SageMaker. Une fois l'entraînement du modèle terminé, SageMaker enregistre les artefacts de modèle dans un compartiment S3.

      SageMaker assume le rôle IAM que vous avez spécifié pour l'entraînement du modèle afin d'effectuer des tâches en votre nom. Par exemple, il utilise le rôle pour lire les données d'entraînement à partir d'un compartiment S3 et pour écrire des artefacts de modèle sur un compartiment.

    3. Crée et renvoie un objet SageMakerModel. Le constructeur effectue les tâches suivantes, liées au déploiement de votre modèle dans SageMaker.

      1. Envoie une demande CreateModel à SageMaker.

      2. Envoie une demande CreateEndpointConfig à SageMaker.

      3. Envoie une demande CreateEndpoint à SageMaker, qui lance ensuite les ressources spécifiées et y héberge le modèle.

  3. Vous pouvez obtenir des inférences à partir de votre modèle hébergé dans SageMaker avec SageMakerModel.transform.

    Fournissez unDataFrame d'entrée avec des fonctions comme entrée. La méthode transform le transforme en DataFrame contenant des inférences. En interne, la méthode transform envoie une demande à l'API SageMaker InvokeEndpoint pour obtenir des inférences. La méthode transform ajoute les inférences au DataFrame d'entrée.