

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 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` を使用します。代わりに、モデルのトレーニングに独自のカスタムアルゴリズムを使用してもかまいません。Docker イメージが作成済みである場合、独自の `SageMakerEstimator` を作成でき、カスタムイメージの Amazon Elastic Container Registry パスを指定できます。

次のサンプルは、`SageMakerEstimator` から `KMeansSageMakerEstimator` を作成する方法を示しています。新しい推定器で、トレーニングや推論のコードイメージへの Docker レジストリパスを明示的に指定します。

```
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` - カスタムコードが含まれるトレーニングイメージへの Docker レジストリパスを特定します。
+ `modelImage` - 推論コードが含まれるイメージへの Docker レジストリパスを特定します。
+ `requestRowSerializer` - `com.amazonaws.services.sagemaker.sparksdk.transformation.RequestRowSerializer` を実装します。

  このパラメータは入力 `DataFrame` 内の行をシリアル化して、推論のためにそれを SageMaker AI にホストされたモデルに送信します。
+ `responseRowDeserializer` - 次を実装します。

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

  このパラメータは、SageMaker AI にホストされたモデルからのレスポンスを逆シリアル化し、`DataFrame` に戻します。
+ `trainingSparkDataFormat` - トレーニングデータを `DataFrame` から S3 にアップロードするときに Spark が使うデータ形式を指定します。たとえば、protobuf 形式の場合は `"sagemaker"`、カンマ区切り値の場合は `"csv"`、LibSVM 形式の場合は `"libsvm"` と指定します。

独自の `RequestRowSerializer` と `ResponseRowDeserializer` を実装し、推論コードが対応しているデータ形式 (.libsvm、.csv など) から行を逆シリアル化できます。