VantageからSageMakerのAPIを実行する方法
概要
このハウツーは、Amazon SageMakerとTeradata Vantageを統合するのに役立ちます。このガイドで説明するアプローチはこのサービスと統合するための多くの潜在的なアプローチの1つです。
Amazon SageMakerはフルマネージドな機械学習プラットフォームを提供します。Amazon SageMakerとTeradataには2つのユースケースがあります。
-
データはTeradata Vantage上に存在しAmazon SageMakerはモデル定義とその後のスコアリングの両方に使用されます。このユースケースではTeradataはAmazon S3環境にデータを提供し、Amazon SageMakerがモデル開発のためにトレーニングおよびテストデータセットを利用できるようにします。TeradataはさらにAmazon S3を通じてAmazon SageMakerによるその後のスコアリングのためにデータを利用できるようにします。このモデルではTeradataはデータリポジトリのみとなります。
-
データはTeradata Vantage上に存在しAmazon SageMakerはモデル定義に使用され、Teradataはその後のスコアリングに使用されます。このユースケースでは、TeradataはAmazon S3環境にデータを提供しAmazon SageMakerはモデル開発のためにトレーニングおよびテストデータセットを消費できるようにします。Teradataは、Amazon SageMakerのモデルをTeradataのテーブルにインポートしTeradata Vantageでスコアリングを行う必要があります。このモデルではTeradataはデータリポジトリでありスコアリングエンジンでもあります。
このドキュメントでは、最初のユースケースについて説明します。
Amazon SageMakerはAmazon S3バケットからトレーニングデータとテストデータを消費します。この記事ではTeradataの分析データセットをAmazon S3バケットにロードする方法について説明します。その後、データはAmazon SageMakerで利用可能になり機械学習モデルを構築してトレーニングし本番環境にデプロイすることができます。
前提条件
-
Teradata Vantageインスタンスへのアクセス。
Vantage のテスト インスタンスが必要な場合は、 https://clearscape.teradata.com. で無料でプロビジョニングできます。 -
Amazon S3バケットにアクセスしAmazon SageMakerサービスを使用するためのIAM権限。
-
学習データを保存するためのAmazon S3バケット。
データの読み込み
Amazon SageMakerはAmazon S3バケットからデータをトレーニングします。以下はVantageからAmazon S3バケットにトレーニングデータをロードする手順です。
-
Amazon SageMakerコンソールに移動しNotebookインスタンスを作成します。Notebookインスタンスを作成する方法については、 Amazon SageMaker 開発者ガイド を参照してください。
-
Notebookのインスタンスを開きます。
-
New → conda_python3
をクリックして新規ファイルを起動します。 -
Teradata Pythonライブラリをインストールします。
!pip install teradataml
-
新しいセルに追加のライブラリをインポートします。
import teradataml as tdml from teradataml import create_context, get_context, remove_context from teradataml.dataframe.dataframe import DataFrame import pandas as pd import boto3, os
-
新しいセルで、Teradata Vantageに接続します。
<hostname>
、<database user name>
、<database password>
はVantageの環境にあわせて置き換えてください。create_context(host = '<hostname>', username = '<database user name>', password = '<database password>')
-
TeradataML DataFrame APIを使用して学習用データセットが存在するテーブルからデータを取得します。
train_data = tdml.DataFrame('table_with_training_data') trainDF = train_data.to_pandas()
-
ローカルファイルにデータを書き込みます。
trainFileName = 'train.csv' trainDF.to_csv(trainFileName, header=None, index=False)
-
Amazon S3にファイルをアップロードします。
bucket = 'sagedemo' prefix = 'sagemaker/train' trainFile = open(trainFileName, 'rb') boto3.Session().resource('s3').Bucket(bucket).Object(os.path.join(prefix, localFile)).upload_fileobj(trainFile)
モデルのトレーニング
-
左メニューの
Training
の下にあるTraining jobs
を選択し、Create training job
をクリックします。 -
トレーニングジョブの作成
ウィンドウで、ジョブ名
(例:xgboost-bank
) を入力しIAMロールの新しいロールを作成
します。Amazon S3 バケットにAny S3バケット
、ロールの作成
にを選択します。image::cloud-guides/sagemaker-with-teradata-vantage/create.iam.role.png[IAMロールの作成,width=50%]
-
Create training job
ウィンドウに戻りアルゴリズムとしてXGBoost
を使用します。 -
インスタンスタイプはデフォルトの
ml.m4.xlarge
、インスタンスあたりの追加ストレージボリュームは30GBを使用します。これは短いトレーニングジョブで10分以上はかからないはずです。 -
以下のハイパーパラメータを入力しそれ以外はデフォルトのままにしてください。
num_round=100 silent=0 eta=0.2 gamma=4 max_depth=5 min_child_weight=6 subsample=0.8 objective='binary:logistic'
-
Input data configuration
には学習データを保存したAmazon S3バケットを入力します。Input modeはFile
です。Content typeはcsv
です。S3 location
はファイルのアップロード先です。 -
Output data configuration
には出力データを保存するパスを入力します。 -
他はデフォルトのまま「トレーニングジョブの作成」をクリックします。トレーニングジョブの設定方法の詳細は 、「Amazon SageMaker 開発者ガイド」に記載されています。
トレーニングジョブが作成されるとAmazon SageMakerはMLインスタンスを起動してモデルをトレーニングし、結果のモデル成果物やその他の出力を`Output data configuration`デフォルトでは`path/<training job name>/output`)に格納します。
モデルのデプロイ
モデルを学習させた後、永続的なエンドポイントを使用してモデルをデプロイします。
モデルの作成
-
左パネルの [
Inference
の下にあるModels
を選択し、Create model
を選択します。モデル名 (例:xgboost-bank
) を入力し前のステップで作成したIAMロールを選択します。 -
コンテナ定義1
では433757028032.dkr.ecr.us-west-2.amazonaws.com/xgboost:latest
をLocation of inference code image
として使用します。Location of model artifacts
には学習ジョブの出力パスを指定します。 -
他はデフォルトのまま
モデルを作成
します。
エンドポイントコンフィギュレーションの作成
-
作成したモデルを選択し、
Create endpoint configuration
をクリックします。 -
名前(例:
xgboost-bank
)を記入しその他はdefaultを使用します。モデル名とトレーニングジョブは自動的に入力されるはずです。Create endpoint configuration
をクリックします。
エンドポイントの作成
-
左パネルから
Inference
→Models
を選択し、再度モデルを選択し、今度は`Create endpoint` をクリックします。 -
名前 (例:
xgboost-bank
)を入力し、既存のエンドポイント構成を使用する
: を選択します。image::sagemaker-with-teradata-vantage/attach.endpoint.configuration.png[エンドポイント構成を添付する] -
前回の手順で作成したエンドポイント構成を選択し
エンドポイント構成の選択
をクリックします。 -
他のすべてをデフォルトのままにして
エンドポイントを作成
をクリックします。
これでモデルがエンドポイントにデプロイされクライアントアプリケーションから利用できるようになります。
まとめ
このハウツーでは、Vantageから学習データを抽出し、それを使ってAmazon SageMakerでモデルを学習させる方法を紹介しました。このソリューションでは、Jupyter Notebookを使用して Vantage からデータを抽出し、S3 バケットに書き込みました。SageMaker トレーニング ジョブは、S3 バケットからデータを読み取り、モデルを生成します。このモデルをサービスエンドポイントとして AWS にデプロイしました。
さらに詳しく
ご質問がある場合、またはさらにサポートが必要な場合は、コミュニティ フォーラムにアクセスしてサポートを受け、他のコミュニティ メンバーと交流してください。 |