

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Usa algoritmi personalizzati per l'addestramento e l'hosting dei modelli su Amazon SageMaker AI con Apache Spark
<a name="apache-spark-example1-cust-algo"></a>

In[SageMaker Esempi di AI Spark per Scala](apache-spark-example1.md), usi il `kMeansSageMakerEstimator` perché l'esempio utilizza l'algoritmo k-means fornito da Amazon SageMaker AI per l'addestramento dei modelli. Per l’addestramento del modello, puoi anche scegliere di utilizzare un algoritmo personalizzato. Presupponendo che tu abbia già creato un immagine Docker, puoi creare un oggetto `SageMakerEstimator` personalizzato e specificare il percorso Amazon Elastic Container Registry per l'immagine personalizzata. 

Il seguente esempio mostra come creare `KMeansSageMakerEstimator` da `SageMakerEstimator`. Nel nuovo strumento di valutazione, devi specificare in modo esplicito il percorso di registro Docker per le immagini del codice di addestramento e interferenza.

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

Nel codice, i parametri nel costruttore `SageMakerEstimator` includono:
+ `trainingImage`: individua il percorso di registro Docker dell'immagine di addestramento contente il codice personalizzato.
+ `modelImage`: individua il percorso di registro Docker dell'immagine contente il codice di interferenza.
+ `requestRowSerializer`: implementa `com.amazonaws.services.sagemaker.sparksdk.transformation.RequestRowSerializer`.

  Questo parametro serializza le righe nell'input `DataFrame` per inviarle al modello ospitato in SageMaker AI per l'inferenza.
+ `responseRowDeserializer`: implementa 

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

  Questo parametro deserializza le risposte dal modello, ospitato in AI, in SageMaker un. `DataFrame`
+ `trainingSparkDataFormat`: specifica il formato dei dati utilizzato da Spark durante il caricamento dei dati di addestramento da un `DataFrame` in S3. Ad esempio, `"sagemaker"` per il formato protobuf, `"csv"` per i valori separati da virgola e `"libsvm"` per il formato LibSVM. 

Puoi implementare valori personalizzati per `RequestRowSerializer` e `ResponseRowDeserializer` per serializzare e deserializzare le righe da un formato dei dati supportato dal codice di inferenza, come libsvm o .csv.