4
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

Amazon SageMaker エンドポイント用のサーバーレスフロントエンドを構築する(開発環境: Cloud9版)

はじめに

本記事はAmazon SageMaker エンドポイント用のサーバーレスフロントエンドを構築するを一部変更して実施したものです。

変更内容は、開発環境をEC2からCloud9に変えた事です。

リージョンは「バージニア北部(us-east-1)」でお願いします。

ゴール

機械学習を使って、Sepal Length(がく片の長さ)、Sepal Width(がく片の幅)、Petal Length(花びらの長さ)、Petal Width(花びらの幅)の値からアヤメの品種(Setosa, Versicolor, Virginica)を特定するWebアプリの構築。

iris.PNG

SageMaker - モデル作成~エンドポイント作成

コンソールのTOPページからSageMakerの画面に移動。

モデルの作成

左側のメニューの中の「モデル」をクリックして、「モデルの作成」をクリック。
sagemaker-01.png

「モデル名」にdecision-treesを入力して、IAM ロールは「新しいロールの作成」を選択して、下図設定に合わせて「ロールの作成」をクリック。
sagemaker-02.png

下図画面の様になります。(IAMロール名は若干違いあり)
sagemaker-03.png

そのまま下にスクロールして、「コンテナの定義1」に下記内容を入力して「モデルの作成」をクリック。
- 推論コードイメージの場所: 305705277353.dkr.ecr.us-east-1.amazonaws.com/decision-trees-sample:latest
- アーティファクトの場所 - オプション: s3://aws-machine-learning-blog/artifacts/decision-trees/model.tar.gz

エンドポイント設定の作成

左側のメニューの中の「エンドポイント設定」をクリックして、「エンドポイント設定の作成」をクリック。
sagemaker-04.png

「エンドポイント設定名」にdecision-treesを入力して、「モデルの追加」をクリック。
sagemaker-05.png

decision-treesを選択して、「保存」をクリック。
sagemaker-06.png

元の画面に戻ったら下にスクロールして「エンドポイント設定の作成」をクリック。

エンドポイントの作成

左側のメニューの中の「エンドポイント」をクリックして、「エンドポイントの作成」をクリック。
sagemaker-07.png

エンドポイントの設定を下記の通りに入力して、「エンドポイント設定の選択」をクリック。
- エンドポイント名: decision-trees
- エンドポイント設定のアタッチ: 既存のエンドポイント設定の使用
- エンドポイント設定: decision-trees

sagemaker-08.png

「新しいエンドポイントの設定」が表示されるので内容を確認して、「エンドポイントの作成」をクリック。
sagemaker-09.png

IAM - Credentials(AdministratorAccess)の取得

Cloud9のターミナルでCLIによる操作を実行するための権限を持ったユーザーを作成。

アクセスキーIDとシークレットアクセスキーの取得

コンソールのTOPページからIAMの画面に移動。

左のメニューから「ユーザー」をクリックして、「ユーザーを追加」をクリック。
iam-02.PNG

任意のユーザー名(画面はadmin)を入力して、「アクセスの種類」-「プログラムによるアクセス」にチェックをいれて「次のステップ: アクセス権限」をクリック。
iam-03.PNG

「既存のポリシーを直接アタッチ」をクリックして、「AdministratorAccess」にチェックをつけて「次のステップ: タグ」をクリック。
iam-04.PNG

何も入力せずに「次のステップ: 確認」をクリック。

設定内容を確認して「ユーザーの作成」をクリック。

アクセスキーIDとシークレットアクセスキーをメモして「閉じる」をクリック。(注. シークレットアクセスキーは後で確認できません)

iam-05.PNG

Cloud9

開発環境を構築。

Cloud9の環境構築・設定

コンソールのTOPページからCloud9の画面に移動して、「Create Envionment」をクリック。
cloud9-00.PNG

任意の名前(画面はjaws-ug-ehime20)を入力
cloud9-01.PNG

デフォルトのまま「Next Step」をクリック
cloud9-02.PNG

確認画面が出るので、内容を確認して「Create Environment」をクリック
cloud9-03.PNG

画面右上の「Preferences(歯車のアイコン)」をクリックして、Preferences画面が出現したら、「Python Support」をクリックして、「Python Version」をPython 3に変更。
cloud9-04.PNG

画面下のコンソール画面から呼び出すpythonを3系に変更

画面下のコンソール画面で下記コマンドを実行。

alias python=python36
alias pip=pip-3.6

cloud9-05.PNG

リージョンを設定
「AWS SETTINGS」をクリックして、「AWS Region」をSageMakerのエンドポイントのリージョンに合わせる
cloud9-06.PNG

Chaliceのセットアップ

Chaliceとは: AWS Lambda & API Gatewayを使ったPythonサーバーレスフレームワーク
Chaliceのメリット:ソースコードを解析して、必要なポリシーを特定、作成・更新・削除を自動的に行ってくれる。

Chaliceのインストール・設定

ChaliceとAWS SDK for Python (Boto3) をインストール

画面下のコンソール画面で下記コマンドを実行

sudo pip install chalice boto3

アプリケーションのリージョンをモデルと同じリージョンにする為とアクセス権限を設定する為に、次のコマンドで環境変数を設定

<YOUR_ACCESS_KEY><YOUR_SECRET_ACCESS_KEY>には「AdministratorAccess - Credentialsの取得」でメモした、アクセスキーIDとシークレットアクセスキーをそれぞれ入力

export AWS_ACCESS_KEY_ID=<YOUR_ACCESS_KEY>
export AWS_SECRET_ACCESS_KEY=<YOUR_SECRET_ACCESS_KEY>
export AWS_DEFAULT_REGION=us-east-1

サンプルアプリケーションデータの作成

画面下のコンソール画面で下記コマンドを実行。

wget https://s3.amazonaws.com/aws-machine-learning-blog/artifacts/decision-trees/decision-trees.tgz

取得した圧縮データを解凍。

tar xzvf decision-trees.tgz --warning=no-unknown-keyword

プロジェクトフォルダに移動。

cd decision-trees

サンプルアプリケーションのデプロイ

画面下のコンソール画面で下記コマンドを実行。

chalice deploy

chalice deleteで削除可能

デプロイ後に表示される「Rest API URL」をメモしておくこと。

HTMLユーザーインターフェースの作成

ユーザーがSageMakerを使用するためのHTMLフォームを作成。

Webサイトホスティング用のS3バケットの作成

画面下のコンソール画面で下記コマンド(<bucket name>は任意の値を入力。)を実行。

aws s3api create-bucket --bucket <bucket name> --region us-east-1
aws s3 website s3://<bucket name>/ --index-document index.html --error-document error.html

index.htmlファイルの作成

画面下のコンソール画面で下記コマンドを実行。

wget https://s3.amazonaws.com/aws-machine-learning-blog/artifacts/decision-trees/index.html

<your rest api URL>にはデプロイしたときに記録したURLを入力(index.html内の<your rest api URL>を置換しているだけ)

sed -i s@CHALICE_ENDPOINT@<your rest api URL>@g index.html

S3にアップロード

画面下のコンソール画面で下記コマンドを実行。

aws s3 cp index.html s3://<bucket name>/index.html --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers

機械学習アプリを使ってみる

http://<bucket_name>.s3.amazonaws.com/index.htmlにアクセスすると、冒頭のゴールで記載した通りの4項目が表示されるので、適当な値を入力して、「Submit」ボタンをクリック。
app-01.PNG

アヤメの品種が表示されたら完成です!
app-02.PNG

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
4
Help us understand the problem. What are the problem?