

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Use algoritmos personalizados para treinamento e hospedagem de modelos na Amazon SageMaker AI com o Apache Spark
<a name="apache-spark-example1-cust-algo"></a>

Em[SageMaker Exemplos do AI Spark para Scala](apache-spark-example1.md), você usa o `kMeansSageMakerEstimator` porque o exemplo usa o algoritmo k-means fornecido pela Amazon SageMaker AI para treinamento de modelos. Mas você pode optar por usar seu próprio algoritmo personalizado para treinamento de modelo. Supondo que você já criou uma imagem do Docker, é possível criar o seu próprio `SageMakerEstimator` e especificar o caminho do Amazon Elastic Container Registry para a imagem personalizada. 

O exemplo a seguir mostra como criar um `KMeansSageMakerEstimator` a partir do `SageMakerEstimator`. No novo estimador, especifique explicitamente o caminho do registro do Docker para as imagens de código do treinamento e da inferência.

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

No código, os parâmetros no construtor `SageMakerEstimator` contêm:
+ `trainingImage` : Identifica o caminho de registro do Docker para a imagem de treinamento que contém seu código personalizado.
+ `modelImage` : Identifica o caminho do registro do Docker para a imagem que contém o código de inferência.
+ `requestRowSerializer` : Implementa `com.amazonaws.services.sagemaker.sparksdk.transformation.RequestRowSerializer`.

  Esse parâmetro serializa as linhas na entrada `DataFrame` para enviá-las ao modelo hospedado na SageMaker IA para inferência.
+ `responseRowDeserializer` : Implementa 

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

  Esse parâmetro desserializa as respostas do modelo, hospedado na SageMaker IA, de volta para um. `DataFrame`
+ `trainingSparkDataFormat` : Especifica o formato de dados que o Spark usa ao fazer upload de dados de treinamento de um `DataFrame` no S3. Por exemplo, `"sagemaker"` para o formato protobuf, `"csv"` para valores separados por vírgula e `"libsvm"` para o formato LibSVM. 

Você pode implementar seus próprios `RequestRowSerializer` e `ResponseRowDeserializer` para serializar e desserializar linhas de um formato de dados compatível com seu código de inferência, como .libsvm ou .csv.