Amazon SageMaker で Apache Spark を使う - Amazon SageMaker

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

Amazon SageMaker で Apache Spark を使う

このセクションでは、Apache Spark を使用してデータを事前処理し、Amazon を使用したい開発者向けの情報を提供します。 SageMaker モデルトレーニングとホスティングに サポートされる Apache Spark のバージョンについては、SageMaker Sparkページの SageMaker Spark GitHub repository.

SageMaker には Apache Spark ライブラリが用意されており、Python と Scala 形式の両方の Apache Spark ライブラリが用意されており、でモデルのトレーニングを簡単に行うことができます。 SageMaker を使用しますorg.apache.spark.sql.DataFrameSpark クラスター内のデータフレーム。モデルトレーニングを行った後に、を使用してモデルをホストすることもできます。 SageMaker ホスティングサービス。

- SageMaker Spark ライブラリcom.amazonaws.services.sagemaker.sparksdkには、次のようなクラスが用意されています。

  • SageMakerEstimator - org.apache.spark.ml.Estimator インターフェイスを拡張します。この推定器は、SageMaker でのモデルトレーニングに使用できます。

  • KMeansSageMakerEstimatorPCASageMakerEstimatorXGBoostSageMakerEstimator - SageMakerEstimator クラスを拡張します。

  • SageMakerModel - org.apache.spark.ml.Model クラスを拡張します。この SageMakerModel を使って、SageMaker でのモデルのホスティングや推論の取得を行えます。

と SageMaker Studio、Amazon EMR クラスターに簡単に接続できます。詳細については、「Studio ノートブックで大規模データを準備する」を参照してください。

のダウンロード SageMaker Spark ライブラリ

SageMaker 提供の Spark ライブラリをダウンロードする方法として、次のオプションが用意されています。

  • 両方のソースコードをダウンロードできます PySpark と Scala ライブラリのSageMaker Spar GitHub repository.

  • Python Spark ライブラリについては、次の追加オプションが用意されています。

    • pip インストールを使用する:

      pip install sagemaker_pyspark
    • ノートブックインスタンスでは、Sparkmagic (PySpark) または Sparkmagic (PySpark3) カーネルを使う新しいノートブックを作成し、リモートの Amazon EMR クラスターに接続します。

      注記

      EMR クラスターは、AmazonSageMakerFullAccess ポリシーが添付された IAM ロールを使って設定する必要があります。EMR クラスターのロールの設定については、Amazon EMR 管理ガイドの「AWS サービスに Amazon EMR の許可の IAM ロールを設定する」を参照してください。

       

  • Scala ライブラリは Maven から取得できます。プロジェクトに Spark ライブラリを追加するため、pom.xml ファイルに次の依存関係を追加します。

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

Apache Spark アプリケーションを SageMaker と統合する

Apache Spark アプリケーションを SageMaker と統合するステップの概要を次に示します。

  1. 使い慣れている Apache Spark ライブラリを使用してデータの事前処理を続行します。データセットは Spark クラスター内で DataFrame のまま残ります。データを DataFrame にロードしてそれを事前処理することで、featuresorg.apache.spark.ml.linalg.Vector が含まれる Doubles 列と、label 型の値が含まれる省略可能な Double 列が作成されます。

  2. 見積もりは、 SageMaker Spark ライブラリを使ってモデルをトレーニングします。たとえば、によって提供される k-means アルゴリズムを選択した場合 SageMaker モデルトレーニングではKMeansSageMakerEstimator.fit方法。

    DataFrame を入力として指定します。推定器は SageMakerModel オブジェクトを返します。

    注記

    SageMakerModelorg.apache.spark.ml.Model を拡張します。

    fit メソッドは、次のような処理を実行します。

    1. 入力 DataFrame から features 列と label 列を選択し、protobuf データを Amazon S3 バケットにアップロードすることで、その入力 DataFrame を protobuf 形式に変換します。SageMaker でモデルトレーニングを行うには、protobuf 形式が効率的です。

    2. でモデルトレーニングを開始 SageMaker 以下を指定して SageMaker CreateTrainingJobリクエスト. モデルトレーニングが完了したら、 SageMaker は、モデルのアーティファクトを S3 バケットに保存します。

      SageMaker は、モデルトレーニングのために指定されている IAM ロールを継承し、代理としてタスクを実行します。たとえば、このロールを使用して、S3 バケットからトレーニングデータを読み取り、モデルアーティファクトをバケットに書き込みます。

    3. SageMakerModel オブジェクトを作成して返します。モデルを SageMaker にデプロイすることに関連して、コンストラクターは次のタスクを実行します。

      1. 以下を指定してCreateModelSageMaker にリクエストしてください。

      2. 以下を指定してCreateEndpointConfigSageMaker にリクエストしてください。

      3. 以下を指定してCreateEndpointSageMaker にリクエストすると、指定されたリソースを起動し、それらにモデルをホストします。

  3. でホストされているモデルから推論を取得できます SageMaker とSageMakerModel.transform

    特徴が指定された入力 DataFrame を入力として指定します。transform メソッドがそれを推論が含まれる DataFrame メソッドに変換します。内部的には、transformメソッドは、にリクエストを送信しますInvokeEndpoint SageMaker 推論を得るためのAPI。この transform メソッドは、推論を入力 DataFrame に追加します。