Verwenden Sie benutzerdefinierte Algorithmen für Modelltraining und Hosting auf Amazon SageMaker mit Apache Spark - Amazon SageMaker

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwenden Sie benutzerdefinierte Algorithmen für Modelltraining und Hosting auf Amazon SageMaker mit Apache Spark

In verwenden Sie denSageMaker Beispiele für Spark für Scala, kMeansSageMakerEstimator weil das Beispiel den von Amazon bereitgestellten K-Means-Algorithmus SageMaker für das Modelltraining verwendet. Stattdessen können Sie einen eigenen benutzerdefinierten Algorithmus zur Modelltraining einsetzen. Unter der Voraussetzung, dass Sie bereits ein Docker-Image erstellt haben, können Sie eine eigene SageMakerEstimator generieren und den Amazon-Elastic-Container-Registry-Pfad für das benutzerdefinierte Image angeben.

Im folgenden Beispiel wird gezeigt, wie ein KMeansSageMakerEstimator-Objekt aus SageMakerEstimator erstellt wird. Geben Sie in der neuen Schätzfunktion explizit den Docker-Registry-Pfad zu den Trainings- und Inferenzcode-Images an.

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")

Im Code sind folgende Parameter in den SageMakerEstimator-Konstruktor eingebunden:

  • trainingImage – Gibt den Docker-Registry-Pfad zum Trainings-Image mit Ihrem benutzerdefinierten Code an.

  • modelImage – Gibt den Docker-Registry-Pfad zum Image mit dem Inferenzcode an.

  • requestRowSerializer –Implementiert com.amazonaws.services.sagemaker.sparksdk.transformation.RequestRowSerializer.

    Dieser Parameter serialisiert Zeilen in der Eingabe, um sie zur Inferenz an das Modell DataFrame zu senden, in SageMaker dem sie gehostet werden.

  • responseRowDeserializer – Implementiert.

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

    Dieser Parameter deserialisiert Antworten aus dem Modell, in dem es gehostet wird, zurück in ein. SageMaker DataFrame

  • trainingSparkDataFormat – Gibt das von Spark verwendete Datenformat beim Upload der Trainingsdaten von einem DataFrame nach S3 an. Zum Beispiel für das Protobuf-Format, "sagemaker" für kommagetrennte Werte und "csv" für das Lib-Format. "libsvm" SVM

Sie können Ihren eigenen RequestRowSerializer und ResponseRowDeserializer implementieren, um Zeilen aus einem Datenformat, das vom Inferenzcode unterstützt wird (z. B. LibSVM oder CSV), zu serialisieren und zu deserialisieren.