Utilisation d'algorithmes personnalisés pour l'entraînement et l'hébergement du modèle sur Amazon SageMaker avec Apache Spark - Amazon SageMaker

Utilisation d'algorithmes personnalisés pour l'entraînement et l'hébergement du modèle sur Amazon SageMaker avec Apache Spark

Dans Exemple 1 : utilisation d'Amazon SageMaker pour l'entraînement et l'inférence avec Apache Spark, vous utilisez le kMeansSageMakerEstimator car l'exemple utilise l'algorithme k-means fourni par Amazon SageMaker pour l'entraînement du modèle. Vous pouvez choisir d'utiliser à sa place votre propre algorithme personnalisé pour l'entraînement du modèle. En supposant que vous ayez déjà créé une image Docker, vous pouvez créer votre propre SageMakerEstimator et spécifier le chemin d'accès à Amazon Elastic Container Registry pour votre image personnalisée.

L'exemple suivant montre comment créer un KMeansSageMakerEstimator à partir de SageMakerEstimator. Dans le nouvel évaluateur, vous spécifiez explicitement le chemin de registre Docker vers vos images de code d'entraînement et d'inférence.

import com.amazonaws.services.sagemaker.sparksdk.IAMRole import com.amazonaws.services.sagemaker.sparksdk.SageMakerEstimator import com.amazonaws.services.sagemaker.sparksdk.transformation.serializers.ProtobufRequestRowSerializer import com.amazonaws.services.sagemaker.sparksdk.transformation.deserializers.KMeansProtobufResponseRowDeserializer val estimator = new SageMakerEstimator( trainingImage = "811284229777.dkr.ecr.us-east-1.amazonaws.com/kmeans:1", modelImage = "811284229777.dkr.ecr.us-east-1.amazonaws.com/kmeans:1", requestRowSerializer = new ProtobufRequestRowSerializer(), responseRowDeserializer = new KMeansProtobufResponseRowDeserializer(), hyperParameters = Map("k" -> "10", "feature_dim" -> "784"), sagemakerRole = IAMRole(roleArn), trainingInstanceType = "ml.p2.xlarge", trainingInstanceCount = 1, endpointInstanceType = "ml.c4.xlarge", endpointInitialInstanceCount = 1, trainingSparkDataFormat = "sagemaker")

Dans le code, les paramètres du constructeur SageMakerEstimator incluent :

  • trainingImage : identifie le chemin de registre Docker vers l'image d'entraînement contenant votre code personnalisé.

  • modelImage : identifie le chemin de registre Docker vers l'image contenant le code d'inférence.

  • requestRowSerializer —implémente com.amazonaws.services.sagemaker.sparksdk.transformation.RequestRowSerializer.

    Ce paramètre sérialise les lignes dans l'entrée DataFrame afin de les envoyer au modèle hébergé dans SageMaker pour l'inférence.

  • responseRowDeserializer : implémente

    com.amazonaws.services.sagemaker.sparksdk.transformation.ResponseRowDeserializer.

    Ce paramètre désérialise les réponses en provenance du modèle, hébergé dans SageMaker, dans un DataFrame.

  • trainingSparkDataFormat : spécifie le format de données utilisé par Spark lors du téléchargement des données d'entraînement d'un DataFrame vers S3. Par exemple, "sagemaker" pour le format protobuf, "csv" pour les valeurs séparées par des virgules et "libsvm" pour le format LibSVM.

Vous pouvez implémenter vos propres RequestRowSerializer et ResponseRowDeserializer pour sérialiser et désérialiser les lignes à partir d'un format de données pris en charge par votre code d'inférence, tel que .libsvm ou .csv.