

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Apache Spark와 함께 Amazon SageMaker AI에서 모델 훈련 및 호스팅을 위해 사용자 지정 알고리즘 사용
<a name="apache-spark-example1-cust-algo"></a>

[SageMaker AI Spark for Scala 예시](apache-spark-example1.md)에서는 예시가 모델 훈련에 Amazon SageMaker AI에서 제공하는 k-means 알고리즘을 사용하므로 `kMeansSageMakerEstimator`를 사용합니다. 대신 모델 훈련을 위해 자체 사용자 지정 알고리즘을 사용하도록 선택할 수도 있습니다. 이미 도커 이미지를 생성했다고 가정하는 경우 자체 `SageMakerEstimator`를 생성하고 사용자 지정 이미지에 대한 Amazon Elastic Container Registry 경로를 지정할 수 있습니다.

다음 예제는 `SageMakerEstimator`에서 `KMeansSageMakerEstimator`를 생성하는 방법을 보여줍니다. 새 예측기에서 훈련 및 추론 코드 이미지에 대한 도커 레지스트리 경로를 명시적으로 지정합니다.

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

코드에서 `SageMakerEstimator`생성자의 파라미터에 다음이 포함됩니다.
+ `trainingImage` - 사용자 지정 코드가 포함된 훈련 이미지의 도커 레지스트리 경로를 식별합니다.
+ `modelImage` - 추론 코드가 포함된 이미지의 도커 레지스트리 경로를 식별합니다.
+ `requestRowSerializer` - `com.amazonaws.services.sagemaker.sparksdk.transformation.RequestRowSerializer`을 구현합니다.

  이 파라미터는 입력 `DataFrame`의 열을 직렬화하고 추론용으로 SageMaker AI에 호스팅된 모델로 전송합니다.
+ `responseRowDeserializer` - 구현 

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

  이 파라미터는 SageMaker AI에 호스팅된 모델로부터의 응답을 역직렬화하고 `DataFrame`으로 돌려보냅니다.
+ `trainingSparkDataFormat` - Spark가 `DataFrame`에서 S3로 훈련 데이터를 업로드할 때 사용하는 데이터 형식을 지정합니다. 예를 들어 `"sagemaker"`는 protobuf 형식, `"csv"`는 쉼표로 구분된 값, `"libsvm"`은 LibSVM 형식입니다.

자체 `RequestRowSerializer`및 `ResponseRowDeserializer`를 구현하여 추론 코드가 지원하는 데이터 형식(예: .libsvm 또는 .csv)으로부터 행을 직렬화 및 역직렬화합니다.