Amazon SageMaker での Apache Spark の使用 - Amazon SageMaker

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

Amazon SageMaker での Apache Spark の使用

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

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

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

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

  • KMeansSageMakerEstimator,PCASageMakerEstimator, およびXGBoostSageMakerEstimator— を拡張します。SageMakerEstimatorクラス

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

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

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

  • PySpark と Scala の両方のライブラリのソースコードは、SageMaker SparkGitHub リポジトリ

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

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

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

      注記

      EMR クラスターは、以下の IAM ロールを使用して設定する必要があります。AmazonSageMakerFullAccessポリシーがアタッチされます。EMR クラスターのロールの構成の詳細については、Amazon EMR 権限の IAM ロールをに設定するAWSサービス()Amazon EMR マネジメントガイド

       

  • 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を選択して、protobuf 形式にfeaturesおよびlabel入力から列をDataFrameAmazon S3 バケットにプロトコルバッファデータをアップロードします。SageMaker でモデルのトレーニングを行うには、プロトコルバッファ形式が効率的です。

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

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

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

      1. 以下を指定すると CreateModelリクエストを SageMaker に送信します。

      2. 以下を指定すると CreateEndpointConfigリクエストを SageMaker に送信します。

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

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

    特徴が指定された入力 DataFrame を入力として指定します。transform メソッドがそれを推論が含まれる DataFrame メソッドに変換します。内部的には、transformメソッドは、 InvokeEndpointSageMaker API を使用して推論を取得します。この transform メソッドは、推論を入力 DataFrame に追加します。