Amazon SageMaker エンドポイント用のサーバーレスフロントエンドを構築する(開発環境: Cloud9版)
Amazon SageMaker エンドポイント用のサーバーレスフロントエンドを構築する(開発環境: Cloud9版):
本記事はAmazon SageMaker エンドポイント用のサーバーレスフロントエンドを構築するを一部変更して実施したものです。
変更内容は、開発環境をEC2からCloud9に変えた事です。
機械学習を使って、Sepal Length(がく片の長さ)、Sepal Width(がく片の幅)、Petal Length(花びらの長さ)、Petal Width(花びらの幅)の値からアヤメの品種(Setosa, Versicolor, Virginica)を特定するWebアプリの構築。
コンソールのTOPページからSageMakerの画面に移動。
左側のメニューの中の「モデル」をクリックして、「モデルの作成」をクリック。
「モデル名」に
下図画面の様になります。(IAMロール名は若干違いあり)
そのまま下にスクロールして、「コンテナの定義1」に下記内容を入力して「モデルの作成」をクリック。
- 推論コードイメージの場所:
- アーティファクトの場所 - オプション:
左側のメニューの中の「エンドポイント設定」をクリックして、「エンドポイント設定の作成」をクリック。
「エンドポイント設定名」に
元の画面に戻ったら下にスクロールして「エンドポイント設定の作成」をクリック。
左側のメニューの中の「エンドポイント」をクリックして、「エンドポイントの作成」をクリック。
エンドポイントの設定を下記の通りに入力して、「エンドポイント設定の選択」をクリック。
- エンドポイント名:
- エンドポイント設定のアタッチ:
- エンドポイント設定:
「新しいエンドポイントの設定」が表示されるので内容を確認して、「エンドポイントの作成」をクリック。
Cloud9のターミナルでCLIによる操作を実行するための権限を持ったユーザーを作成。
コンソールのTOPページからIAMの画面に移動。
左のメニューから「ユーザー」をクリックして、「ユーザーを追加」をクリック。
任意のユーザー名(画面は
「既存のポリシーを直接アタッチ」をクリックして、「AdministratorAccess」にチェックをつけて「次のステップ: タグ」をクリック。
何も入力せずに「次のステップ: 確認」をクリック。
設定内容を確認して「ユーザーの作成」をクリック。
アクセスキーIDとシークレットアクセスキーをメモして「閉じる」をクリック。(注. シークレットアクセスキーは後で確認できません)

開発環境を構築。
コンソールのTOPページからCloud9の画面に移動して、「Create Envionment」をクリック。
任意の名前(画面は
デフォルトのまま「Next Step」をクリック
確認画面が出るので、内容を確認して「Create Environment」をクリック
画面右上の「Preferences(歯車のアイコン)」をクリックして、Preferences画面が出現したら、「Python Support」をクリックして、「Python Version」を
画面下のコンソール画面から呼び出すpythonを3系に変更
画面下のコンソール画面で下記コマンドを実行。

リージョンを設定
「AWS SETTINGS」をクリックして、「AWS Region」をSageMakerのエンドポイントのリージョンに合わせる
Chaliceとは: AWS Lambda & API Gatewayを使ったPythonサーバーレスフレームワーク
Chaliceのメリット:ソースコードを解析して、必要なポリシーを特定、作成・更新・削除を自動的に行ってくれる。
ChaliceとAWS SDK for Python (Boto3) をインストール
画面下のコンソール画面で下記コマンドを実行
アプリケーションのリージョンをモデルと同じリージョンにする為とアクセス権限を設定する為に、次のコマンドで環境変数を設定
画面下のコンソール画面で下記コマンドを実行。
取得した圧縮データを解凍。
プロジェクトフォルダに移動。
画面下のコンソール画面で下記コマンドを実行。
※
デプロイ後に表示される「Rest API URL」をメモしておくこと。
ユーザーがSageMakerを使用するためのHTMLフォームを作成。
画面下のコンソール画面で下記コマンド(
画面下のコンソール画面で下記コマンドを実行。
にはデプロイしたときに記録したURLを入力(index.htmlのを置換しているだけ)
画面下のコンソール画面で下記コマンドを実行。
アヤメの品種が表示されたら完成です!

はじめに
本記事はAmazon SageMaker エンドポイント用のサーバーレスフロントエンドを構築するを一部変更して実施したものです。変更内容は、開発環境をEC2からCloud9に変えた事です。
ゴール
機械学習を使って、Sepal Length(がく片の長さ)、Sepal Width(がく片の幅)、Petal Length(花びらの長さ)、Petal Width(花びらの幅)の値からアヤメの品種(Setosa, Versicolor, Virginica)を特定するWebアプリの構築。
SageMaker - モデル作成~エンドポイント作成
コンソールのTOPページからSageMakerの画面に移動。
モデルの作成
左側のメニューの中の「モデル」をクリックして、「モデルの作成」をクリック。「モデル名」に
decision-treesを入力して、IAM ロールは「新しいロールの作成」を選択して、下図設定に合わせて「ロールの作成」をクリック。下図画面の様になります。(IAMロール名は若干違いあり)
そのまま下にスクロールして、「コンテナの定義1」に下記内容を入力して「モデルの作成」をクリック。
- 推論コードイメージの場所:
305705277353.dkr.ecr.us-east-1.amazonaws.com/decision-trees-sample:latest- アーティファクトの場所 - オプション:
s3://aws-machine-learning-blog/artifacts/decision-trees/model.tar.gz
エンドポイント設定の作成
左側のメニューの中の「エンドポイント設定」をクリックして、「エンドポイント設定の作成」をクリック。「エンドポイント設定名」に
decision-treesを入力して、「モデルの追加」をクリック。decision-treesを選択して、「保存」をクリック。元の画面に戻ったら下にスクロールして「エンドポイント設定の作成」をクリック。
エンドポイントの作成
左側のメニューの中の「エンドポイント」をクリックして、「エンドポイントの作成」をクリック。エンドポイントの設定を下記の通りに入力して、「エンドポイント設定の選択」をクリック。
- エンドポイント名:
decision-trees- エンドポイント設定のアタッチ:
既存のエンドポイント設定の使用- エンドポイント設定:
decision-trees「新しいエンドポイントの設定」が表示されるので内容を確認して、「エンドポイントの作成」をクリック。
IAM - Credentials(AdministratorAccess)の取得
Cloud9のターミナルでCLIによる操作を実行するための権限を持ったユーザーを作成。
アクセスキーIDとシークレットアクセスキーの取得
コンソールのTOPページからIAMの画面に移動。左のメニューから「ユーザー」をクリックして、「ユーザーを追加」をクリック。
任意のユーザー名(画面は
admin)を入力して、「アクセスの種類」-「プログラムによるアクセス」にチェックをいれて「次のステップ: アクセス権限」をクリック。「既存のポリシーを直接アタッチ」をクリックして、「AdministratorAccess」にチェックをつけて「次のステップ: タグ」をクリック。
何も入力せずに「次のステップ: 確認」をクリック。
設定内容を確認して「ユーザーの作成」をクリック。
アクセスキーIDとシークレットアクセスキーをメモして「閉じる」をクリック。(注. シークレットアクセスキーは後で確認できません)
Cloud9
開発環境を構築。
Cloud9の環境構築・設定
コンソールのTOPページからCloud9の画面に移動して、「Create Envionment」をクリック。任意の名前(画面は
jaws-ug-ehime20)を入力デフォルトのまま「Next Step」をクリック
確認画面が出るので、内容を確認して「Create Environment」をクリック
画面右上の「Preferences(歯車のアイコン)」をクリックして、Preferences画面が出現したら、「Python Support」をクリックして、「Python Version」を
Python 3に変更。画面下のコンソール画面から呼び出すpythonを3系に変更
画面下のコンソール画面で下記コマンドを実行。
alias python=python36
alias pip=pip-3.6
リージョンを設定
「AWS SETTINGS」をクリックして、「AWS Region」をSageMakerのエンドポイントのリージョンに合わせる
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
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」ボタンをクリック。アヤメの品種が表示されたら完成です!
コメント
コメントを投稿