7
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

VantageからSageMakerのAPIを実行する方法

Last updated at Posted at 2022-10-20

著者 Wenjie Tehan
最終更新日 2022年2月8日

警告
本記事はTeradata CorporationによるGetting Startedに掲載された内容を抄訳したものです。掲載内容の正確性・完全性・信頼性・最新性を保証するものではございません。正確な内容については原本をご参照下さい。
また、修正が必要な箇所やご要望についてはコメントをよろしくお願いします。

概要

このハウツーは、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の新しいインスタンスが必要な場合は、Google CloudAzureAWSのクラウドにVantage Expressという無料版をインストールすることができます。また、VMwareVirtualBox、またはUTMを使用して、ローカルマシン上でVantage Expressを実行することもできます。

・Amazon S3バケットにアクセスしAmazon SageMakerサービスを使用するためのIAM権限
・学習データを保存するためのAmazon S3バケット

データの読み込み

Amazon SageMakerはAmazon S3バケットからデータをトレーニングします。以下はVantageからAmazon S3バケットにトレーニングデータをロードする手順です。

① Amazon SageMakerコンソールに移動しノートブックインスタンスを作成します。ノートブックインスタンスを作成する方法についてはAmazon SageMaker開発者ガイドを参照してください。

画像01.png

② ノートブックのインスタンスを開きます。

画像02.png

新規作成 → conda_python3 をクリックして新規ファイルを起動します。

画像03.png

④ Teradata Pythonライブラリをインストールします。

install_teradataml
!pip install teradataml

⑤ 新しいセルに追加のライブラリをインポートします。

import_library
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に接続します。ホスト名データベースユーザー名データベースパスワード はVantageの環境にあわせて置き換えてください。

create_context
create_context(host = '<hostname>', username = '<database user name>', password = '<database password>')

⑦ TeradataML DataFrame APIを使用して学習用データセットが存在するテーブルからデータを取得する。

get_data
train_data = tdml.DataFrame('table_with_training_data')
trainDF = train_data.to_pandas()

⑧ ローカルファイルにデータを書き込む。

write2localfile
trainFileName = 'train.csv'
trainDF.to_csv(trainFileName, header=None, index=False)

⑨ Amazon S3にファイルをアップロードします。

upload2s3
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をクリックします。

画像04.png

トレーニングジョブの作成ウィンドウでジョブ名(例:xgboost-bank)を記入しIAMロールの新しいロールを作成します。 Amazon S3バケットにAny S3バケット、ロールの作成にCreate roleを選択します。

画像05.png

Create training jobウィンドウに戻りアルゴリズムとしてXGBoostを使用します。

画像06.png

④ インスタンスタイプはデフォルトのml.m4.xlarge、インスタンスあたりの追加ストレージボリュームは30GBを使用します。これは短いトレーニングジョブで10分以上はかからないはずです。

画像07.png

⑤ 以下のハイパーパラメータを入力しそれ以外はデフォルトのままにしてください。

hyper_parameters
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のロケーションはファイルのアップロード先です。

画像08.png

Output data configurationには出力データを保存するパスを入力します。

画像09.png

⑧ 他はデフォルトのまま「トレーニングジョブの作成」をクリックします。トレーニングジョブの設定方法の詳細はAmazon SageMaker Developer Guideに記載されています。

トレーニングジョブが作成されるとAmazon SageMakerはMLインスタンスを起動してモデルをトレーニングし、結果のモデル成果物やその他の出力を出力データ構成(デフォルトではパス/<トレーニングジョブ名>/output)に格納します。

モデルのデプロイ

モデルを学習させた後、永続的なエンドポイントを使用してモデルをデプロイします。

モデルの作成

① 左パネルの「Inference」から「Models」を選択し「Create model」を選択します。モデル名(例:xgboost-bank)を記入し前のステップで作成したIAMロールを選択します。
コンテナ定義1では「Location of inference code image」として、「433757028032.dkr.ecr.us-west-2.amazonaws.com/xgboost:latest」を使用します。モデル成果物の場所には学習ジョブの出力パスを指定します。

画像10.png

③ 他はデフォルトのまま「モデルを作成」します。

エンドポイントコンフィギュレーションを作成する

① 作成したモデルを選択し、[Create endpoint configuration]をクリックします。

画像11.png

② 名前(例:xgboost-bank)を記入しその他はdefaultを使用します。モデル名とトレーニングジョブは自動的に入力されるはずです。Create endpoint configuration をクリックします。

エンドポイントの作成

① 左パネルからInferenceModelsを選択し、再度モデルを選択し、今度はCreate endpointをクリックします。

画像12.png

② 名前(例:xgboost-bank)を記入し「既存のエンドポイント構成を使用する:image::sagemaker-with-teradata-vantage/attach.endpoint.config.png[エンドポイント構成を添付する]」を選択します。

③ 前回の手順で作成したエンドポイント構成を選択し[Select endpoint configuration]をクリックします。

画像13.png

④ 他のすべてをデフォルトのままにして「エンドポイントを作成」をクリックします。

これでモデルがエンドポイントにデプロイされクライアントアプリケーションから利用できるようになります。

まとめ

このハウツーでは、Vantageから学習データを抽出し、それを使ってAmazon SageMakerでモデルを学習させる方法を紹介しました。
このソリューションでは、
Jupyterノートブックを使用してVantageからデータを抽出しS3バケットに書き込み、
SageMaker のトレーニングジョブは S3 バケットからデータを読み込みモデルを生成し、
このモデルをサービスエンドポイントとして AWS にデプロイ
しました。

さらに詳しく

Train ML models in Vantage using only SQL

Teradata Vantageへのお問合せ

Teradata Vantage へのお問合せ

7
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?