Amazon SageMaker で Apache Spark を使用する - Amazon SageMaker

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

Amazon SageMaker で Apache Spark を使用する

このセクションでは、Apache Spark を使用してデータを事前処理し、Amazon SageMaker を使用してモデルのトレーニングやホスティングを行う開発者向けの情報を提供します。サポートされている Apache Spark のバージョンについては、 Spark SageMaker リポジトリの「 Spark の取得SageMaker」ページを参照してください。GitHub

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

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

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

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

  • SageMakerModelorg.apache.spark.ml.Model クラスを拡張します。この SageMakerModel を使用して、SageMaker でモデルのホスティングや推論の取得を行うことができます。

SageMaker Spark ライブラリをダウンロードする

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

  • と Scala ライブラリの両方のソースコードを PySparkSparkSageMaker リポジトリからダウンロードできます。GitHub

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

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

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

      注記

      EMR クラスターは、AmazonSageMakerFullAccess ポリシーがアタッチされた IAM ロールを使用して設定する必要があります。EMR クラスターのロールの設定については、https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-roles.html 管理ガイドの「Amazon EMRAmazon EMR のアクセス許可の IAM ロールを AWS サービスに設定する」を参照してください。

       

  • 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 ライブラリ内で推定器を使用してモデルにトレーニングを行います。たとえば、モデルのトレーニングに SageMaker 提供の k-means アルゴリズムを使用することを選択した場合、KMeansSageMakerEstimator.fit メソッドを呼び出します。

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

    注記

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

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

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

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

      SageMaker は、モデルトレーニングのためにユーザーが指定した IAM ロールを引き受け、ユーザーに代わってタスクを実行します。たとえば、このロールを使用して、S3 バケットからトレーニングデータを読み取り、モデルアーティファクトをバケットに書き込みます。

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

      1. CreateModel リクエストを に送信します。SageMaker

      2. CreateEndpointConfig リクエストを に送信します。SageMaker

      3. CreateEndpoint リクエストを に送信し、指定されたリソースを起動して、それらにモデルをホストします。SageMaker

  3. SageMakerModel.transform を使用して、SageMaker にホストされているモデルから推論を取得できます。

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