Cookie の設定を選択する

当社は、当社のサイトおよびサービスを提供するために必要な必須 Cookie および類似のツールを使用しています。当社は、パフォーマンス Cookie を使用して匿名の統計情報を収集することで、お客様が当社のサイトをどのように利用しているかを把握し、改善に役立てています。必須 Cookie は無効化できませんが、[カスタマイズ] または [拒否] をクリックしてパフォーマンス Cookie を拒否することはできます。

お客様が同意した場合、AWS および承認された第三者は、Cookie を使用して便利なサイト機能を提供したり、お客様の選択を記憶したり、関連する広告を含む関連コンテンツを表示したりします。すべての必須ではない Cookie を受け入れるか拒否するには、[受け入れる] または [拒否] をクリックしてください。より詳細な選択を行うには、[カスタマイズ] をクリックしてください。

SageMaker AI Spark for Scala の例

フォーカスモード
SageMaker AI Spark for Scala の例 - Amazon SageMaker AI

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

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

Amazon SageMaker AI には、Apache Spark アプリケーションを AI と統合するために使用できる Apache Spark ライブラリ ( SageMaker AI SparkSageMaker ) が用意されています。このトピックには、Scala で SageMaker AI Spark の使用を開始するのに役立つ例が含まれています。 SageMaker AI Apache Spark ライブラリの詳細については、「」を参照してくださいAmazon SageMaker AI を使用した Apache Spark

Spark for Scala をダウンロードする

Python Spark (PySpark) ライブラリと Scala ライブラリの両方のソースコードと例を SageMaker AI Spark GitHub リポジトリからダウンロードできます。

SageMaker AI Spark ライブラリのインストールの詳細については、SageMaker 「AI Spark」を参照してください。

SageMaker AI Spark SDK for Scala は Maven 中央リポジトリで利用できます。プロジェクトに Spark ライブラリを追加するため、pom.xml ファイルに次の依存関係を追加します。

  • プロジェクトが Maven で構築されている場合は、pom.xml ファイルに以下を追加します。

    <dependency> <groupId>com.amazonaws</groupId> <artifactId>sagemaker-spark_2.11</artifactId> <version>spark_2.2.0-1.0</version> </dependency>
  • プロジェクトが Spark 2.1 を基盤としている場合は、pom.xml ファイルに以下を追加します。

    <dependency> <groupId>com.amazonaws</groupId> <artifactId>sagemaker-spark_2.11</artifactId> <version>spark_2.1.1-1.0</version> </dependency>

Spark for Scala の例

このセクションでは、 SageMaker AI が提供する Apache Spark Scala ライブラリを使用して、Spark クラスターの を使用して SageMaker AI DataFrameでモデルをトレーニングするコード例を示します。その後、Apache Spark で Amazon SageMaker AI のモデルトレーニングとホスティングにカスタムアルゴリズムを使用する の方法と、Spark パイプラインで を使用する SageMakerEstimator の方法の例を提供しています。

次の例では、 SageMaker AI ホスティングサービスを使用して結果のモデルアーティファクトをホストします。この例の詳細については、「開始方法: SageMaker AI Spark を使用した SageMaker AI での K-Means クラスタリングSDK」を参照してください。具体的には、この例では次の処理を行います。

  • KMeansSageMakerEstimator を使用してデータに対してモデルの適合 (またはトレーニング) を行います。

    この例では AI が提供する k-means アルゴリズムを使用してモデルをトレーニング SageMaker するため、 を使用しますKMeansSageMakerEstimator。(MNISTデータセットから) 手書きの 1 桁の数字の画像を使用してモデルをトレーニングします。画像は入力 DataFrame として指定します。便宜上、 SageMaker AI はこのデータセットを Amazon S3 バケットで提供します。

    レスポンスとして、推定器は SageMakerModel オブジェクトを返します。

  • トレーニング済みの SageMakerModel を使用して推論を取得する

    SageMaker AI でホストされているモデルから推論を取得するには、 SageMakerModel.transformメソッドを呼び出します。入力として DataFrame を渡します。このメソッドは入力 DataFrame を、そのモデルから取得した推論が含まれる別の DataFrame に変換します。

    推論は、入力した指定の手書きの 1 桁の数字の画像が属するクラスターを特定します。詳細については、「K-Means アルゴリズム」を参照してください。

import org.apache.spark.sql.SparkSession import com.amazonaws.services.sagemaker.sparksdk.IAMRole import com.amazonaws.services.sagemaker.sparksdk.algorithms import com.amazonaws.services.sagemaker.sparksdk.algorithms.KMeansSageMakerEstimator val spark = SparkSession.builder.getOrCreate // load mnist data as a dataframe from libsvm val region = "us-east-1" val trainingData = spark.read.format("libsvm") .option("numFeatures", "784") .load(s"s3://sagemaker-sample-data-$region/spark/mnist/train/") val testData = spark.read.format("libsvm") .option("numFeatures", "784") .load(s"s3://sagemaker-sample-data-$region/spark/mnist/test/") val roleArn = "arn:aws:iam::account-id:role/rolename" val estimator = new KMeansSageMakerEstimator( sagemakerRole = IAMRole(roleArn), trainingInstanceType = "ml.p2.xlarge", trainingInstanceCount = 1, endpointInstanceType = "ml.c4.xlarge", endpointInitialInstanceCount = 1) .setK(10).setFeatureDim(784) // train val model = estimator.fit(trainingData) val transformedData = model.transform(testData) transformedData.show

このコード例では、以下を行います。

  • SageMaker AI () が提供する S3 バケットから Spark (awsai-sparksdk-dataset) にMNISTデータセットをロードしますDataFramemnistTrainingDataFrame

    // Get a Spark session. val spark = SparkSession.builder.getOrCreate // load mnist data as a dataframe from libsvm val region = "us-east-1" val trainingData = spark.read.format("libsvm") .option("numFeatures", "784") .load(s"s3://sagemaker-sample-data-$region/spark/mnist/train/") val testData = spark.read.format("libsvm") .option("numFeatures", "784") .load(s"s3://sagemaker-sample-data-$region/spark/mnist/test/") val roleArn = "arn:aws:iam::account-id:role/rolename" trainingData.show()

    show メソッドは、データフレーム内の最初の 20 行のデータを表示します。

    +-----+--------------------+ |label| features| +-----+--------------------+ | 5.0|(784,[152,153,154...| | 0.0|(784,[127,128,129...| | 4.0|(784,[160,161,162...| | 1.0|(784,[158,159,160...| | 9.0|(784,[208,209,210...| | 2.0|(784,[155,156,157...| | 1.0|(784,[124,125,126...| | 3.0|(784,[151,152,153...| | 1.0|(784,[152,153,154...| | 4.0|(784,[134,135,161...| | 3.0|(784,[123,124,125...| | 5.0|(784,[216,217,218...| | 3.0|(784,[143,144,145...| | 6.0|(784,[72,73,74,99...| | 1.0|(784,[151,152,153...| | 7.0|(784,[211,212,213...| | 2.0|(784,[151,152,153...| | 8.0|(784,[159,160,161...| | 6.0|(784,[100,101,102...| | 9.0|(784,[209,210,211...| +-----+--------------------+ only showing top 20 rows

    各行の構成は次の通りです。

    • label 列は画像のラベルを特定します。例えば、手書きの数字の画像が 5 桁の場合、ラベルの値は 5 になります。

    • features 列には org.apache.spark.ml.linalg.Vector 値のベクトル (Double) が格納されます。これらは手書きの数字の 784 の特徴です (各手書きの数字は 28 x 28 ピクセルの画像で、784 の特徴があります)。

  • SageMaker AI 推定器を作成します (KMeansSageMakerEstimator

    この推定器の fitメソッドは、 SageMaker AI が提供する k-means アルゴリズムを使用して、入力 を使用してモデルをトレーニングしますDataFrame。レスポンスとして、推論の取得に使用できる SageMakerModel オブジェクトを返します。

    注記

    は SageMaker AI KMeansSageMakerEstimatorを拡張しSageMakerEstimator、Apache Spark を拡張しますEstimator

    val estimator = new KMeansSageMakerEstimator( sagemakerRole = IAMRole(roleArn), trainingInstanceType = "ml.p2.xlarge", trainingInstanceCount = 1, endpointInstanceType = "ml.c4.xlarge", endpointInitialInstanceCount = 1) .setK(10).setFeatureDim(784)

    コンストラクタパラメータは、モデルのトレーニングと SageMaker AI へのデプロイに使用される情報を提供します。

    • trainingInstanceTypetrainingInstanceCount - モデルトレーニングに使用される ML コンピューティングインスタンスのタイプと数を指定します。

    • endpointInstanceType— SageMaker AI でモデルをホストするときに使用する ML コンピューティングインスタンスタイプを識別します。デフォルトでは、1 つの ML コンピューティングインスタンスが引き受けられます。

    • endpointInitialInstanceCount— SageMaker AI でモデルをホストしているエンドポイントを最初にバックアップする ML コンピューティングインスタンスの数を識別します。

    • sagemakerRole—SageMaker AI はユーザーに代わってタスクを実行するためにこのIAMロールを引き受けます。たとえば、モデルのトレーニングの場合、S3 からデータを読み取り、トレーニングの結果 (モデルアーティファクト) を S3 に書き込みます。

      注記

      この例では、暗黙的に SageMaker AI クライアントを作成します。このクライアントを作成するには、認証情報を指定する必要があります。API は、これらの認証情報を使用して SageMaker AI へのリクエストを認証します。たとえば、認証情報を使用してトレーニングジョブを作成するためのリクエストを認証し、 SageMaker AI ホスティングサービスを使用してモデルをデプロイするための をAPI呼び出します。

    • KMeansSageMakerEstimator オブジェクトが作成された後、モデルのトレーニングで使用される次のパラメータを設定します。

      • k-means アルゴリズムによってモデルのトレーニング中に作成される必要があるクラスターの数。0 ~ 9 のそれぞれの桁に 1 つ、合計で 10 のクラスターを指定します。

      • 各入力画像に 784 の特徴があることを特定します (各手書きの数字は 28 x 28 ピクセルの画像で、784 の特徴があります)。

  • 推定器の fit メソッドを呼び出す

    // train val model = estimator.fit(trainingData)

    入力 DataFrame をパラメータとして渡します。モデルは、モデルのトレーニングと SageMaker AI へのデプロイのすべての作業を行います。詳細については、「」を参照してくださいApache Spark アプリケーションを SageMaker AI と統合する。それに応じて、 オブジェクトを取得します。このSageMakerModelオブジェクトを使用して、 SageMaker AI にデプロイされたモデルから推論を取得できます。

    入力 DataFrame のみを指定します。モデルのトレーニングに使用される k-means アルゴリズムへのレジストリパスについては、KMeansSageMakerEstimator はすでに把握しているため、指定する必要はありません。

  • SageMakerModel.transform メソッドを呼び出して、 SageMaker AI にデプロイされたモデルから推論を取得します。

    transform メソッドは入力として DataFrame を取り、それを変換し、そのモデルから取得した推論が含まれる別の DataFrame を返します。

    val transformedData = model.transform(testData) transformedData.show

    わかりやすいように、この例でモデルのトレーニングに使用した同じ DataFrametransform の入力として使用します。transform メソッドは、次のような処理を実行します。

    • 入力の features列を protobuf DataFrameにシリアル化し、推論のために SageMaker AI エンドポイントに送信します。

    • プロトコルバッファーのレスポンスを、変換された distance_to_cluster 内の追加の 2 列 (closest_clusterDataFrame) に逆シリアル化します。

    show メソッドは入力 DataFrame 内の最初の 20 行の推論を取得します。

    +-----+--------------------+-------------------+---------------+ |label| features|distance_to_cluster|closest_cluster| +-----+--------------------+-------------------+---------------+ | 5.0|(784,[152,153,154...| 1767.897705078125| 4.0| | 0.0|(784,[127,128,129...| 1392.157470703125| 5.0| | 4.0|(784,[160,161,162...| 1671.5711669921875| 9.0| | 1.0|(784,[158,159,160...| 1182.6082763671875| 6.0| | 9.0|(784,[208,209,210...| 1390.4002685546875| 0.0| | 2.0|(784,[155,156,157...| 1713.988037109375| 1.0| | 1.0|(784,[124,125,126...| 1246.3016357421875| 2.0| | 3.0|(784,[151,152,153...| 1753.229248046875| 4.0| | 1.0|(784,[152,153,154...| 978.8394165039062| 2.0| | 4.0|(784,[134,135,161...| 1623.176513671875| 3.0| | 3.0|(784,[123,124,125...| 1533.863525390625| 4.0| | 5.0|(784,[216,217,218...| 1469.357177734375| 6.0| | 3.0|(784,[143,144,145...| 1736.765869140625| 4.0| | 6.0|(784,[72,73,74,99...| 1473.69384765625| 8.0| | 1.0|(784,[151,152,153...| 944.88720703125| 2.0| | 7.0|(784,[211,212,213...| 1285.9071044921875| 3.0| | 2.0|(784,[151,152,153...| 1635.0125732421875| 1.0| | 8.0|(784,[159,160,161...| 1436.3162841796875| 6.0| | 6.0|(784,[100,101,102...| 1499.7366943359375| 7.0| | 9.0|(784,[209,210,211...| 1364.6319580078125| 6.0| +-----+--------------------+-------------------+---------------+

    次のようにデータを解釈できます。

    • label が 5 の手書き数字は、クラスター 4 (closest_cluster) に属します。

    • label が 0 の手書き数字は、クラスター 5 に属します。

    • label が 4 の手書き数字は、クラスター 9 に属します。

    • label が 1 の手書き数字は、クラスター 6 に属します。

プライバシーサイト規約Cookie の設定
© 2025, Amazon Web Services, Inc. or its affiliates.All rights reserved.