

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Utilice algoritmos personalizados para el entrenamiento y el alojamiento de modelos en Amazon SageMaker AI con Apache Spark
<a name="apache-spark-example1-cust-algo"></a>

En[SageMaker Ejemplos de AI Spark para Scala](apache-spark-example1.md), se utiliza `kMeansSageMakerEstimator` porque en el ejemplo se utiliza el algoritmo k-means proporcionado por Amazon SageMaker AI para el entrenamiento de modelos. Puede optar por usar su propio algoritmo personalizado para la capacitación de modelos en su lugar. Suponiendo que ya haya creado una imagen de Docker, puede crear su propio `SageMakerEstimator` y especificar la ruta de Amazon Elastic Container Registry para su imagen personalizada. 

En el siguiente ejemplo se muestra cómo crear un nuevo `KMeansSageMakerEstimator` desde `SageMakerEstimator`. En el nuevo estimador, especifique de forma explícita la ruta de registro de Docker en las imágenes de código de inferencia y capacitación.

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

En el código, los parámetros del constructor `SageMakerEstimator` incluyen:
+ `trainingImage`: identifica la ruta de registro de Docker en la imagen de entrenamiento que contiene el código personalizado.
+ `modelImage`: identifica la ruta de registro de Docker en la imagen que contiene el código de inferencia.
+ `requestRowSerializer`: implementa `com.amazonaws.services.sagemaker.sparksdk.transformation.RequestRowSerializer`.

  Este parámetro serializa las filas de la entrada `DataFrame` para enviarlas al modelo alojado en SageMaker AI para su inferencia.
+ `responseRowDeserializer`: implementa 

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

  Este parámetro deserializa las respuestas del modelo, alojadas en la SageMaker IA, para convertirlas en un. `DataFrame`
+ `trainingSparkDataFormat`: especifica el formato de datos que utiliza Spark cuando se cargan datos de entrenamiento desde `DataFrame` a S3. Por ejemplo, `"sagemaker"` para el formato protobuf, `"csv"` para valores separados por comas y `"libsvm"` para el formato LibSVM. 

Puede implementar su propio `RequestRowSerializer` y `ResponseRowDeserializer` para serializar y deserializar filas desde un formato de datos que admite su código de inferencia, como .libsvm o .csv.