Elastic BeansTalk の Django チュートリアル【初心者向け】

はじめに

前回ご紹介した、Elastic BeansTalkの理解をより深める為に
公式ドキュメントのチュートリアルを使ってDjangoアプリをデプロイしてみました!

前提条件は長くなってしまうので割愛させていただきます。
Python 3.6と Windows 10 を使用しています。

 

0.Windows で EB CLI をインストール

pip を使用して EB CLI をインストールします。コマンドプロンプトに以下を入力。

C:\Users\ユーザー名>pip install awsebcli --upgrade --user

Windows キーを押し、「環境変数」と入力します。[環境変数を編集] を選択します。

image.png

変数 Path を選択して、[ 編集 ]をクリック。
image.png

[新規]を選択。[ %USERPROFILE%\AppData\roaming\Python\Python37\scripts ]を追加します。

[OK] を 2 回選択して、新しい設定を適用します。

image.png

実行中のコマンドプロンプトのウィンドウを exit で閉じて、再度開きます。

EB CLI が正しくインストールされたかを確認します。以下をコマンドに入力します。

C:\Users\ユーザー名> eb --version

2020-01-28_15h44_13.png

1.Python 仮想環境のセットアップと Django のインストール

1. [ eb-virt ] という名前の仮想環境を作成します。

C:\> virtualenv %HOMEPATH%\eb-virt

2. 仮想環境をアクティブ(実行状態)にします

C:\> %HOMEPATH%\eb-virt\Scripts\activate

3. [ pip ]というコマンドを使用して Django をインストールします。

(eb-virt)~$ pip install

4. Django がインストールされたことを確認するには、以下のように入力します。

(eb-virt)~$ pip freeze

2. Django プロジェクトを作成する

1. 仮想環境をアクティブ化します。

C:\> %HOMEPATH%\eb-virt\Scripts\activate

コマンドプロンプトの先頭に[ eb-virt ]が表示され、仮想環境を使用していることが分かります。
image.png

2. [ django-admin startproject ]コマンドを使用して、[ ebdjango ]という名前の Django のプロジェクトを作成します。

(eb-virt) C:\Users\ユーザー名>django-admin startproject ebdjango

3. [ manage.py runserver ] で Django サイトをローカルで実行します。

(eb-virt) C:\Users\ユーザー名>cd ebdjango

(eb-virt) C:\Users\ユーザー名>python manage.py runserver

4. ウェブブラウザで http://127.0.0.1:8000/ を開いて、サイトを表示します。
2020-01-29_13h23_09.png

5. ウェブサーバを停止して仮想環境に戻るには、キーボードの[ Ctrl+C ]を押します。

3. Elastic Beanstalk 用に Django アプリケーションを設定する

ローカルシステムに作成したサイトを、Elastic Beanstalk でのデプロイ用に設定します。
アプリケーションの環境を調整して、アプリケーションのモジュールをロードできるように、環境変数を設定します。

1. 仮想環境をアクティブ化します。
C:\Users\ユーザー名\ebdjango>%HOMEPATH%\eb-virt\Scripts\activate

2. [ pip freeze ] を実行して、出力を requirements.txt という名前のファイルに保存します。

(eb-virt) ~/ebdjango> pip freeze > requirements.txt

Elastic Beanstalk は requirements.txt を使用して、アプリケーションを実行する EC2 インスタンスにどのパッケージをインストールするかを判断します。
3. [ .ebextensions ] という名前のディレクトリを作成します。

(eb-virt) ~/ebdjango> mkdir .ebextensions

4. [ .ebextensions ]ディレクトリ内に、[ django.config ]という名前の 設定ファイルを作成します。

C:\Users\USERNAME\ebdjango>type nul > django.config

CLIで操作したパスの通りにファイルを開いていきます。
エクスプローラーを開いて、Windows(C:) ドライブにあるユーザーから自分のユーザー名のフォルダを開きます。
「 ~/ebdjango/.ebextensions/django.config 」
django.config を見つけたらメモ帳で開いて設定事項を書きます。

django.config
[crayon-5e85e75b4949a800998188/]

この設定 WSGIPath は、アプリケーションを起動するのに Elastic Beanstalk が使用する WSGI スクリプトの場所を指定します。

deactivate コマンドを使用して、仮想環境を非アクティブ化します。

(eb-virt) ~/ebdjango> deactivate

4. EB CLI でサイトをデプロイする

※Elastic Beanstalk コンソールを使用して .zip ファイルをアップロードして展開することもできます。
アプリケーション環境を作成し、設定済みのアプリケーションを Elastic Beanstalk を使用してデプロイします。

1. eb init コマンドを使用して EB CLI リポジトリを初期化します。
このコマンドでは、django-tutorial という名前のアプリケーションを作成します。
また、ローカルリポジトリ(ファイルやディレクトリの履歴を管理する場所)を設定し、最新の Python 3.6 プラットフォームバージョンで環境を作成します。

~/ebdjango> eb init -p python-3.6 django-tutorial
Application django-tutorial has been created.

eb init を再度実行してデフォルトのキーペアを設定し、アプリケーションを実行している EC2 インスタンスに SSH を使用して接続できるようにします。

~/ebdjango> eb init
Do you want to set up SSH for your instances?
(y/n): y
Select a keypair.
1) my-keypair
2) [ Create new KeyPair ]

このコマンドは、django-env という名前のロードバランシング Elastic Beanstalk 環境を作成します。環境の作成には約 5 分かかります。
Elastic Beanstalk はアプリケーションを実行するのに必要なリソースを作成してくれます。

環境の作成プロセスが完了したら、eb status を実行して新しい環境のドメイン名を見つけます。

~/ebdjango> eb status
Environment details for: django-env
Application name: django-tutorial
...
CNAME: eb-django-app-dev.elasticbeanstalk.com
...

環境のドメイン名は、CNAME プロパティの値です。

settings.py ディレクトリの ebdjango ファイルを開きます。
ALLOWED_HOSTS 設定を見つけ、前のステップで見つけたアプリケーションのドメイン名を設定の値に追加します。この設定がファイルで見つからない場合は、それを新しい行に追加します。

...
ALLOWED_HOSTS = ['eb-django-app-dev.elasticbeanstalk.com']

ファイルを保存し、eb deploy を実行してアプリケーションをデプロイします。
eb deploy を実行すると、EB CLI はプロジェクトディレクトリのコンテンツをまとめて、ユーザーの環境にデプロイします。

~/ebdjango> eb deploy

環境の更新プロセスが完了したら、eb open でウェブサイトを開きます。

~/ebdjango> eb open

これにより、アプリケーション用に作成されたドメイン名を使用してブラウザウィンドウが開きます。
ローカルで作成してテストしたのと同じ Django ウェブサイトが表示されます。

2020-02-04_17h14_19.png

クリーンアップ方法

他の AWS リソースを保存するには、eb terminate を入力。 Elastic Beanstalk 環境を終了します。

~/ebdjango> eb terminate django-env

このコマンドは、環境とその中で実行されているすべての AWS のリソースを終了します。
アプリケーションが削除されることはありません。
eb create を再び実行することで、同じ設定でさらに環境を作成することができます。

アプリケーションが必要なくなった場合は、プロジェクトフォルダーと仮想環境を削除することもできます。

~$ rm -rf ~/eb-virt
~$ rm -rf ~/ebdjango

リソースを確認してみる

中では CloudFormation の「スタック」からアプリケーションのデプロイ環境が作られています。

EC2
image.png
S3
2020-03-06_16h05_51.png
Cloud formation
2020-03-06_16h08_30.png

所感

確かにコンソールでポチポチとサービス画面を行き来しながら、環境を一から構築するよりは、一つの画面で操作できて一式リソースが用意されるこの仕組みは便利だと思いました。
ただコマンドプロンプトや CLI の操作に慣れないと、ちょっと難しい部分もありますので、サンプルアプリケーションを作成できるコンソール操作から使ってみるほうが入りやすいかもしれません。

公式サイトリンク

ドキュメント
製品紹介


IT初心者がAmazon Forecast を使ってシャンプーの売上傾向を予測【誰でも出来る】

はじめに

2020年!AIぽいことしたいなーということでAWSのMachineLearningらしいサービスを使ってみました。
初心者さん、機械学習が詳しくない方でも使えるので、その使い方を分かりやすくご紹介していきます!
※2020年1月15日追記しました。

 

Amazon Forecastとは?

過去の何らかの時間単位で整列されたデータ(時系列データ)から価格、PR、経済的業績指標などを利用し、予測をすることができるサービスです。
AutoML機能によって予測できるのでモデルを構築するための機械学習の専門知識はいりません。

  • 完全マネージド型
  • サーバーをたてたり、機械学習モデルの構築、トレーニング、デプロイも不要
  • 実際に使用した分に対してのみ料金が発生
  • 自動的にデータのロードと検査、適切なアルゴリズムの選択、モデルのトレーニング、正確なメトリクスの提供、予測の生成
  • 予測をコンソールで可視化できる
  • バッチでエクスポートしたり、API を使用してビジネスアプリケーションに統合ができる

小売業の活用例

ある企業は、製品の需要、リソースのニーズ、あるいは財務業績といった将来のビジネス成果を正確に予測するために、
簡単なスプレッドシートから複雑な財務計画ソフトウェアに至るまで、あらゆるツールを活用しています。
機械学習を利用して価格、PR、来店者数などと関連する製品の特徴、陳列場所、店舗の場所などのデータを組み合わせ、それらの間の複雑な関係を判断します。

製品の機能や店舗の場所などの、可変的なデータと時系列データとがお互いにどのように影響し合うかまで確認することができるのです。

やってみる

予測に必要なのは過去のデータと、予測に影響を与える可能性があるデータです。
できるだけ多く、長い期間のデータがあると精度の良い予測ができそうです。
さっそくフリーデータセットを使ってマネージメントコンソールからシャンプーの売上予測をしてもらいました!

ステップ 0:データの準備

使用するデータは、予測したい内容によって中身を整える必要があります。
以下のデータセットドメインがサポートされています。

  • RETAIL – 小売の需要予測。特定の日に商品が受け取った価格やウェブヒット数など、関連するデータセットを Forecast に提供できます。情報が多いほど、予測はより正確になります。
  • INVENTORY_PLANNING – 原材料の需要を予測し、特定の商品の在庫をどれだけ確保するかを決められます。
  • EC2 CAPACITY – Amazon Elastic Compute Cloud (Amazon EC2) キャパシティの予測
  • WORK_FORCE – 従業員の労働力の需要がどのくらいかを予測します。
  • WEB_TRAFFIC – 今後のウェブプロパティまたは一連のウェブプロパティへのウェブトラフィック(情報量)の見積もり
  • METRICS – 収益、売上、キャッシュフローなどの収益予測
  • CUSTOM – その他すべての時系列予測のタイプ

 

今回は売上予測なので、METRICSドメインを使っていきます。
CSVファイルのデータを必須カラムのみ含まれているように、以下の列名を加えます。

  • metric_name (文字列)
  • timestamp (タイムスタンプ) 後ほどのタイムスタンプのフォーマット設定に合わせる必要がある
  • metric_value (浮動小数点整数) Forecast が予測を生成する target フィールド(例:特定の日に生成される収益額)

 

名前のカラムと、日付と秒単位の時間を付け加えました。
metric_name 「shampoo」
timestamp 「1998-01-01 00:00:00」
metric_value 「266.0」(売上数)

 

2020-01-07_16h34_56.png

 

S3にデータをアップロードしていきます。バケットを作成。

2019-12-27_11h05_34.png

 

今回はデフォルトのままで大丈夫です。
バケット名を決めて東京リージョンで設定し、そのまま左下の作成ボタンを押してください。

2019-12-27_11h06_40.png

作ったバケットのリンクを押してCSVデータのアップロードへ

2019-12-27_12h45_18.png

アップロードを押したら

2019-12-27_12h42_41.png

CSVデータを追加したらこちらもデフォルトの設定のままでOKなので左下のアップロードを押していきます。

image.png

追加したデータのチェックマークを押すと右にポップアップが出てきます。
後ほど使いますので、パスをコピーしておきます。

image.png

ステップ 1:トレーニングデータをインポート

Amazon Forecast コンソールからCreate dataset group (データセットグループの作成)を選択。
Dataset group name (データセットグループ名)の名前を入力し、ドロップダウンメニューから使用する予測ドメインを選択。今回使うのはMetrics。
2020-01-06_09h25_12.png

 

次にCreate target time series dataset (ターゲット時系列データセットの作成)
グループの名前を入力します。
Frequency of your data (データの頻度) この設定は、入力時系列データの設定と一致している必要があります。
デフォルトの 1 のままにして、今回のサンプルデータは一日ごとなのでドロップダウンメニューから [day] を選択します。
データスキーマはデータタイプと順序を設定します。事前に準備した時系列データの列に一致するように更新します。

 

2020-01-06_09h58_46.png

 

次はImport target time series data (ターゲット時系列データセットのインポート)ページの Dataset import job details (データセットインポートジョブの詳細) に情報を入力します。

データセットの名前を入力。Timestamp format (タイムスタンプ形式)はデフォルトのままにしておきます。
この形式は、入力時系列データの設定と一致している必要があります。
IAM ロールはデフォルトのままか新しく作成でOK。
Data location (データの場所)はデータの準備でコピーしたS3のパスを貼り付け。

2020-01-06_11h06_26.png

 

Start importを押したら作成が始まりダッシュボードページに変わります。

 

2019-12-27_09h58_08.png

Create pendingからActiveになれば、次のステップのトレーニングのstartができるようになります。

2019-12-27_10h05_17.png

ステップ 2: トレーニングモデルの作成

予測に使うトレーニングモデルをつくります。
予測子の名前を入力します。Forecast horizon で今後予測したい期間を選択。
この数値に、ステップ1で指定したデータ入力頻度 (day) を乗算して、今後予測を実行する期間が決定されます。

 

注:予測できる期間は与えたデータ期間の3分の1の期間でしか指定できません。なので与えたデータと同じ期間分予測しようとするとエラーになります。

 

私自身画像のように90日で指定しましたが、予測できる範囲を超えてしまったのでエラーになりました。
Forecast frequency で予測頻度を指定。デフォルト値の 1 のままでドロップダウンメニューから [Day] を選択。
この設定は、入力時系列データの設定と一致している必要があります。

 

2019-12-27_10h06_44.png

Algorithm selection でアルゴリズムの選択。 Automatic (AutoML) を使います。これで機械学習はおまかせあれ。
他はいじらずに train predictor をクリック。

2019-12-27_10h13_50.png

 

予測子のトレーニングが完了するまで(データのインポート同様Activeになる)時間が結構かかります。30分以上は待ちました。

 

ステップ 3: 予測を作成

Predictor trainingがActiveになったら推論データの作成にかかります。
Create a forecast (予測の作成)ページの Forecast details (予測の詳細)に予測の名前を入力します。
ドロップダウンメニューから、ステップ2のTrain a Predictor で作成した予測子を選択します。
残りの設定はオプションなので、デフォルトのまま create a Forecast を押します。

2019-12-27_13h18_41.png

ステップ 4: 予測を取得

ダッシュボードでForecast generation がActiveになったら予測のルックアップを選択します。

ここでまたエラー。開始日はデータの最終日と被せなければならないようです。
ステップ2のForecast horizon の設定と同じく、2ヶ月半のデータなので予測できる期間も20日間がMAXです。

2019-12-27_14h35_10.png

 

ドロップダウンメニューから、ステップ3の Create a Forecast で作成した予測を選択。
start date-開始日とend date-終了日を指定して、範囲はステップ2のTrain a Predictor で指定した予測期間に合わせます。
Choose which keys (予測キー)の追加を選択。Forecast keyでドロップダウンメニューから [metric_name] を選択します。
Valueで特定したいデータ項目、[shampoo]を入力。

 

2019-12-27_14h43_21.png

 

結果がこちら。真ん中が平均的な予測で、上が上位10%の予測で下が下位10%の予測です。
P50 の予測値が、実際の需要にもっとも近い値であるようです。
上位と下位でかなり差が出ていますが、月半ばと給料日前あたりが売上が下がっていきそうなのが予測できました。
この時期を目処に前もって対策できれば売上を下げるのを抑止できて、
平均的に見ると毎日300は売れそうなので、仕入れの最低数なども考えられそうですね。

 

2019-12-27_14h46_00.png

感想

3パターンのグラフ予測のおかげで、最高売上と最低売上が予測できるので、特定日の対策も考えやすくなり、仕入れの需要数なども簡単に予想できるサービスでした。
データをより詳細になるべく多く用意すること、データの形式と予測する期間や頻度さえ気をつければとても手軽に予測ができたのでぜひとも皆様もお試しください!

他のAWS AI系のサービスの検証なども多数、弊社の技術ブログで記載しているので、ぜひともこちらもご参照ください。
ナレコムレシピ

公式サイトリンク

Amazon Forecast 開発者ガイド
Amazon Forecast


【これからプログラミング&クラウドを始める人向け】AWS Cloud9 を利用して Ruby の開発環境を作ってみる② - AWS Cloud9 の環境構築

はじめに

この記事は 【これからプログラミング&クラウドを始める人向け】AWS Cloud9 を利用して Ruby の開発環境を作ってみる① - AWSアカウント準備編 の続きになります。

 

AWS Cloud9 のセットアップ

  • 前回作成した IAM ユーザーを利用してコンソールに入り Cloud9 と検索し選択

image.png

 

  • AWS Cloud9 のコンソールから「Create environment」を選択

image.png

 

  • 環境名を入力 (説明文は任意入力なので無しでもOK)

image.png

 

  • 以下図のように Configure settings を行い「Next step」を選択

image.png

 

  • 確認画面が表示され、「Create enviroment」を選択

image.png

 

  • 選択後以下のような画面が表示される (今回は約2分ほどで構築が完了)

image.png

 

  • 完了後、以下のような画面が表示される。これで環境構築は完了です。

image.png

 

AWS Cloud9 の画面説明

  • 左側がファイル、右側がテキストエディタ、右下がターミナルとなります

image.png

 

  • エディタ領域はタブ型になっています

image.png

 

  • これらの設定については右側の歯車アイコンで操作が可能です

image.png

 

  • ちなみにブラウザでの表記なので Chrome の翻訳アドオンで日本語化ができます

image.png

 

その他 Tips

  • 次回以降コンソールからアクセスした場合、「Open IDE」から構築した環境にアクセス可能です

image.png

 

  • EC2 のコンソール画面から自動停止を待たずに環境停止(=課金停止)を行うことも可能です

image.png

 

  • Tab Size の設定
    テキストファイルのタブを開いた状態で右下の「Spaces」をクリックすると「Tab Size」が変更できます
    ここで Tab Size を「2」に変更することでタブキーを押したときのスペースの入力回数が設定できます

image.png

 

  • スペース等の不可視文字の可視化
    スペースや改行に印をつける設定です。これもテキストファイルのタブを開いた状態で行います
    右下の歯車キーをクリックして Show Invisibles にチェックマークをつけます

image.png

 

まとめ

前回作成した IAM ユーザー を使用してクラウド上に IDE を構築し初期設定を行いました。
びっくりするくらいサクッと立ち上がるのでこれからプログラミングを勉強していきたい人に是非試してみてほしいです。
次回以降はプログラムのバージョン管理について説明していきたいと思います。お楽しみに!


【これからプログラミング&クラウドを始める人向け】AWS Cloud9 を利用して Ruby の開発環境を作ってみる① - AWSアカウント準備編

はじめに

前置き

プログラミングを勉強しよう!と思ったときに躓くポイントでもある開発環境の構築
今回は AWS を利用してクラウド上に開発環境を作っていく手法を紹介していきます
勉強をスタートしたタイミングで同時にクラウドを触ることでモダンな開発環境も理解していきましょう

 

AWS Cloud9 とは

  • Cloud9 というブラウザで利用できる IDE (統合開発環境)をAWSが買収
  • AWS の各種サービスと連携しやすいサービスとして2017年末にリリース
  • クラウド最大手からクラウド上での開発サービスを提供し、開発環境もクラウド上で持つトレンドが出来つつある

利用にあたって必要なもの

  • AWS 登録のために以下の登録が必要です
    • メールアドレス
    • クレジットカード(課金が発生しない無料利用も可能)
    • ユーザー認証用の電話番号
    • ブラウザの設定
    • 広告ブロック用のアドオンを導入している場合はオフ

AWS Cloud9 の利用料金の話

  • 課金の仕様
    • AWS Cloud9 の利用そのものは課金対象外(=無料)
    • AWS Cloud9 の実行環境であるサーバ料金(EC2)は課金対象(=有料)
      • ただし無料利用枠内であれば無料
    • 新規アカウント作成から12ヶ月の期間、月間750時間まで無料利用枠で利用可能
      • 1ヶ月間1日24時間利用したとしても無料利用枠内で使用可能
  • 無料利用枠についての参考情報 (公式)

AWS アカウントの準備

ここからは AWS のアカウントが作成できていることを前提に進めていきます

AWS を利用する際に使うアカウントについて

  • ルートアカウント (初回登録で作成されたアカウント)
    • 請求に関連する操作も含め権限範囲が非常に広く、日常利用をしないことが推奨されます
  • IAM ユーザー (このあとに作成するアカウント)
    • 開発など日常的に使用するアカウント
    • IAM ( Identity and Access Management ) という機能を利用して権限の制御が可能

今回作成する IAM ユーザーについて

  • AWS の管理者ユーザー を作成
    • AWS 初学者が一人で利用することが前提
    • 今回作成するユーザーで権限のない操作はルートアカウントで操作を行う

IAM ユーザーの作成

  • ログイン後に検索窓から「IAM」と入力

image.png

 

  • IAM の管理画面遷移後に左側のユーザーを選択し、「ユーザーを追加」をクリック

image.png

 

  • ユーザー名を入力
  • AWS マネジメントコンソールへのアクセスを選択
  • パスワードのリセットが必要を選択

image.png

 

  • グループの作成をクリック

image.png

 

  • グループ名を入力し、ポリシー(今回は「AdoministratorAccess」を選択)

image.png

 

  • 作成したグループを選択し、次のステップに進みます

image.png

 

  • 今回はタグの項目は空欄で進めます

image.png

 

  • 内容を確認して「ユーザーの作成」をクリックします

image.png

 

  • これでユーザーの作成が完了します。.csv のダウンロードでアカウント情報をDLできます

image.png

 

  • .csv ファイルはこのようになっています。今回はプログラムによるアクセスを想定していないいので一部空欄となっています

image.png

 

  • 該当情報でアクセスできることを確認しましょう。(初回のパスワード修正が要求されます)

image.png

 

  • IAM ユーザーのアクセスは右上にユーザー名が表示されます

image.png

 

利用料アラートの設定 (無料利用枠内のため)

 

目的

  • 想定外の請求を防ぐために設定を推奨します (特に個人利用の場合)
  • 無料利用枠範囲内でのアラートを受信
    • メールをチェックしないと意味がなくなるので要注意

 

設定方法

  • ルートアカウントでサインインをして「マイ請求ダッシュボードをクリック」

image.png

 

  • ダッシュボードから「Biling の設定」をクリック

image.png

 

  • 設定項目で各種チェック項目にチェック並びにメールアドレスを入力し「設定の保存」をクリック

image.png

 

まとめ

この記事では開発環境構築のために AWS のアカウント作成と無料で使い切るための設定を紹介していきました。
入門者には手間に感じる部分かもしれませんがクラウド上の開発環境を利用する AWS Cloud9 は非常に強力なサービスなので、ぜひ試してみてください!
次回以降の記事から AWS Cloud9 の構築を進めていきます。お楽しみに!

続き→ 【これからプログラミング&クラウドを始める人向け】AWS Cloud9 を利用して Ruby の開発環境を作ってみる② - AWS Cloud9 の環境構築


本日はクリスマス・イブということであのお菓子の分類をML初心者がAmazon Rekognition Custom Labelsを使って挑戦してみた

はじめに

今回は、先日公開がされたこちらの記事https://qiita.com/KC_NN/items/d265eddcbdc8a47ed88c
をML初心者の私が見ながらでもできるものなのかを試してみた記事になります。その為新技術などの情報はないですが、そこはご容赦ください。

今回の背景

今日(投稿日)がクリスマス・イブということで、せっかくだからクリスマスにちなんだ記事にしようと思いました。そこで、クリスマスのお菓子で定番のあのお菓子を画像分類してみようと思いました。
images (1).jpg

そう!あの「ジンジャーマンクッキー」です!
ラベル付けの際にジンジャーマンクッキーに名前を付けて名前による分類ができるんじゃないか。この企画ならいける!と思い、早速ジンジャーマンクッキーを購入しようと思いました。が、みんな見た目一緒じゃないか…

↓私の中のイメージ
images (1).jpg

↓現実
images.jpg

これじゃあ分類ができない!いっそ自分で作るかとも少しだけ思いましたが料理を普段しない私にはできるはずもなく…
そこで、形が違って、クッキーっぽいものはないかと探したところ。このお菓子にたどり着きました!

78660943_624.jpg

これなら要望を満たせる!ということで、たべっ子どうぶつビスケットの画像分類をML初心者の私が、先日公開された記事を見ながらAWSのRekognition Custom Labelsで挑戦してみました。

いざ実践!

まず、記事の手順通りに素材を集めるところからということで素材写真をiphoneで撮影しました。今回は、全体画像の角度を変えたものを7枚ほど撮影しました。

MicrosoftTeams-image (5).png
MicrosoftTeams-image (8).png
MicrosoftTeams-image (9).png

こんな感じで7枚ほど撮影

記事の手順通りに、「プロジェクト名作成、S3バケット作成、画像をS3に保存」を実施していきます。
次に、保存した画像にラベリングをしていきます。
ラベリングは、自分で入力をしていくのですが、この数は結構めんどいなーと思ったので、OCR(Amazon Rekognition text in image)を使って画像内のテキストを抽出し、こんな感じに2画面にし、抽出したテキストをコピペして作業を簡略化してみました。(下記画像の左がCustom labels、右がtext in imageの画面です。)

2019-12-24_10h16_20.png

ラベリング名の登録も済んだので、実際に写真にラベル付けをしていきたいと思います。
ラベル付けも記事の手順通りに、ラベル付けしたい画像を選んで、画像内のオブジェクトに対してラベル名のついたドローイングボックスをただひたすらにこんな感じで囲っていきます。
2019-12-24_10h31_21.png
2019-12-24_10h35_31.png

こうして撮影した全部で7枚の写真にラベルを付けていきます。
ここまでだいたい30分前後で作業は終わりました。(画像のアップロードから数えて)

作業が終わるとダッシュボードがカラフルになります。
記事では、ラベル付けをした後に、「save change」を選択後「Train model」を選択するとありましたが、
実際は、「save change」を選択した後に隣の「Exit」を選択しないと「Train model」のボタンがに切り替わらないので、ご注意を。
2019-12-24_10h48_31.png

ここまで簡単に画像認識のモデルを作れるとは思いませんでした。技術的にあまり詳しくない私でもこんなに簡単にできるとは、AWSはすごいですね!

あとは、推論するだけ。ってここにきてまさかのCLI!

CLIでモデルを使って推論した結果こんな感じになりました。

[crayon-5e85e75b49ca6828699795/]

result test4.png

HORN-OWLを判定しているみたいですが、今回用意したデータセットが少ないせいか信頼スコア(Confidence)がかなり高いように見えます。もう少しデータセットを増やすべきでしたね…
結果を視覚的に見せるのには、結果コードと画像を使ってプログラムを書く必要があるとのことなので、ここだけは社内のメンバーに手伝ってもらいました。

まとめ

トータル的に見て、ほとんど技術を知らない人でも簡単に画像認識の予測モデルができて推論までできてしまうすごいサービスがリリースされたなーと感じずにはいられません。
こんなに簡単にライトにできるのであれば、もっといろんな画像分析を試してみたいと思いました。
最後まで、読んでいただきありがとうございました!メリークリスマス!


AWS re:Invent 2019 – Healthcare and life sciences industry recap 和訳してみた

はじめに

2019年12月19日に、David Niewolny 氏と Kelli Jonakin 氏が掲載した 「AWS re:Invent 2019 – Healthcare and life sciences industry recap」の記事を翻訳し、まとめてみました。

■本記事リンク
AWS re:Invent 2019 – Healthcare and life sciences industry recap
image.png

HCL に関する新情報トップ5

AWS における HCL(Healthcare and life sciences)関連の新情報トップ5を紹介していきたいと思います。

1. Amazon Transcribe Medical

  • 医療スピーチをテキストに翻訳
  • 医師が効率的に臨床文書を作成可能
  • 患者へのフィードバックがより効率的に

2. AWS Data Exchange

  • クラウド内にあるサードパーティのデータ検索や利用が簡単に実現可能
  • 製薬会社、医療提供者、そして健康保険会社は臨床試験の計画や保険制度の構築が簡単に実現可能

3. Amazon SageMaker

Amazon SageMaker では HCLS 関連で以下の3つの情報が発表されました。

  • Amazon SageMaker Studio
    • 機械学習用の完全に統合された開発環境
    • モデルの構築、トレーニング、デバッグ、トラッキングをプログラム化
  • Amazon SageMaker Notebooks
    • 数秒で機会学習ノートブックを立ち上げ可能
    • ワンクリックでノートブックの共有も可能
  • Amazon SageMaker Debugger
    • リアルタイムで機械学習モデルの解析とデバックが可能
    • トレーニングモデルにおける複雑な問題を自動的に判別可能

4. AWS Outposts

  • フルマネージドサービス
  • AWS のインフラストラクチャとサービスをオンプレミスで実行可能なハイブリッドエクスペリエンスを実現
  • オンプレ環境で解析や機械学習 AWS サービスをヘルスマネジメントシステムに利用可能

5. Amazon Kendra

  • 非常に正確で簡単に使用できるエンタープライズ
  • 強力な自然言語の検索機能を駆使して、膨大な情報の中から必要な情報を見つけることが可能

HCLS に関連する重要サービスの情報

Amazon EC2 Inf1 Instances

  • 機械学習推論アプリケーションをサポートするために新規に構築された新しいインスタンス
  • Amazon EC2 G4インスタンスよりも、推論あたり最大3倍高いスループットと最大40%低いコストを提供

Amazon Braket

  • フルマネージドサービスで、一箇所にある複数の量子ハードウェアプロバイダをコンピュータを使って実験が可能
  • 将来の計画に向け、量子コンピューティングハードウェアを探索、評価、および実験することで経験をつむことが可能

Amazon Connect & Contact Lens for Connect

  • Amazon Connect は低価格で顧客にサービスを提供することができるオムニチャネルクラウドコンタクトセンター
  • Contact Lens for Amazon Connect は ML 解析機能を統合することでAmazon Connect の機能を拡大

AWS Nitro Enclaves

  • 隔離されたコンピュータ環境を構築可能
  • ヘルスケアやバイオファーマ、ゲノミクスにおける個人を特定できる情報(PII)などのデータをセキュアに保護

AQUA for Amazon Redshift

  • 新しい分散型ハードウェア
  • Redshift を他のクラウドデータウェアハウスよりも最大10倍高速で実行可能

AWS Identity and Access Management Access Analyzer

  • AWSアカウントの外部からアクセスできるリソースを識別可能な包括的な結果を生成
  • 最高レベルのセキュリティ保証と継続的な監視を提供
  • 重要なヘルスケア、およびライフサイエンスデータに不適切にアクセスされないようユーザで権限を調整

関連動画

おわりに

AWS re:Invent 2019 – Healthcare and life sciences industry recap の翻訳まとめは以上となります。
ヘルスケア関連で AWS サービスの利用を考えている方、ぜひこちらの本記事で紹介されているサービスを利用してみて下さい。


AWS DeepComporser について

はじめに

この記事は株式会社ナレッジコミュニケーションが運営する Amazon AI by ナレコム Advent Calendar 2019 の21日目の記事です。

今回の re:Invent で発表された DeepComposer についてご紹介します。

 

AWS 機械学習スキル学習のインターフェイス

機械学習モデルの学習ツールとして、DeepLensDeepRacerDeepComposer の三種がラインナップされたことになります。

左上がDeepLens、右上がDeepRacer
そして下が今回の re:Invent で発表された DeepComposer
image.png

DeepLens

DeepLens は昨今社会実装が進んでいるコンピュータービジョンのモデルを搭載可能なビデオカメラです。

  • 深層学習モデルに対応したビデオカメラ
  • 2017年の AWS re:Invent で発表
  • クラウドで深層学習モデルの学習、ローカルのカメラにモデルを搭載
  • オブジェクトの検出、行動認識、顔認識、頭部姿勢の検出など、撮影した動画の分析や処理が可能
  • 実機の価格は 249 ドル

 

DeepRacer

DeepRacer は誤解を恐れずにいえば強化学習を学ぶための最先端ラジコン。実機の値段もさることながら、モデルの学習にかなりの計算資源を要します。継続的に学習できる方は限られるのではないでしょうか?

  • 強化学習のモデルを搭載できる自走型のレーシングカー
  • 2018年の AWS re:Invent で発表
  • 高度な機械学習テクニックである強化学習モデルのトレーニング方法を楽しみながら学習
  • 世界各地でリーグ開催中。2019年11月には新モデル AWS DeepRacer Evo 発表
  • 実機の価格は 399ドル

DeepComposer

DeepComposer は Generative AI を楽しみながら学べる、機械学習を搭載した世界初のキーボードです。

  • 敵対的生成ネットワーク(GAN)モデルのトレーニングと最適化を通して、オリジナルの音楽を作曲
  • 2019年の AWS re:Invent で発表
  • 物理的なキーボードだけではなく、仮想キーボードを用いて、どこでも作曲・学習可能
  • 実機の価格は 99 ドル

DeepComposer、なにができる?

もう少し DeepComposer について見ていきましょう

 

image.png

 

無料利用枠 (12か月間)でできること

無料枠の範囲内で、事前にトレーニングされたモデルを活用でき、以下が実行可能です。
AWS クラウド上の仮想キーボードであれば、すぐにでも使えます。

  • 音楽のジャンル (ロックやポップなど) のサンプルモデルを用いることで、コード記述不要でモデル構築可能
  • キーボードを使ってメロディを入力すると、AWS DeepComposer はクラウドで機械学習の推論を実行し、4 つのパートの伴奏を生成
  • 音源に対し、ポップ、ロック、ジャズなど編曲が可能

無料トライアル (3か月間) でできること

無料利用枠に加えて、30 日間の AWS DeepComposer 無料試用版を利用できます。

  • 最大 4 つのモデルのトレーニングと、それらのモデルを使用した新しい音楽作品の生成を最大 40 回まで実行
  • Amazon SageMaker を用いて、独自のGANアーキテクチャを構築可能。
  • 手元の DAW (デジタルで音声の編集や編曲などできるシステム)を使用して、楽曲のカスタム可能
  • Amazon.com で AWS DeepComposer キーボードを購入すると、さらに 3 か月間の無料試用期間が追加
  • Generative AI Talent Show (気になりますね!)に提出する楽曲の作成

まとめ

DeepComposer は、DeepLens、DeepRacerに比べて、要する知識レベル・コストともに学習のハードルがかなり下がっている印象を受けました。今が旬の差の Generative AI (また別の記事でご紹介しようと思います) について学習できるのもポイントです。

そもそも音楽はパーソナルなものなので、アウトプットそのものに優劣をつける性質自体が希薄です。個人学習との親和性も高そうですし、モデルの派生系、例えば特定のアーティストの楽曲傾向をシュミレートするモデルや、特定ジャンル(デスメタルとかエレクトロニカとか)のモデルを作る人が出てくると面白そうです。

一刻も早く実機を触ってみたいですね。仮想キーボードであればすぐにでも使用可能なので、休暇中に遊んでみるのも良いのではないでしょうか。


Amazon SageMaker Studio の導入と Autopilot について #2

Amazon SageMaker Studioの導入とAutopilotについて#1の続きです。

前回は、SageMaker Studioの導入とAutopilotによるパイプラインを開始したところまで終わりました。

Amazon SageMaker Autopilot –高品質な機械学習モデルをフルコントロールかつ視覚的に自動生成

 

Amazon SageMaker Studio-Amazon SageMaker AutoPilot(パート2)

part2は、Future Engineeringについての話です。

studio26.PNG

 

「Open data exploration notebook」には、データセットに関する情報が書かれています。

1.どのように特徴量を選択するために分析されたのか
2.データセットからAutoMLパイプラインの修正と改善について

トレーニングデータセットから39128行を読み取ります。データセットには21個の列があり、yという名前の列がターゲット列として使用されます。これはBinaryClassificationの問題として識別されます。ラベルの2つの例を次に示します:['no'、 'yes']。

21項目からなる39128個のトレーニングサンプルがあり、「y」が推論対象。これはyesかnoを推論する二項分類の問題です。

データセットのサンプル

次の表は、トレーニングデータセットの10行のランダムサンプルです。表示を簡単にするために、データセットの21列のうち20列のみを表示しています。

10個のサンプルを表示しています。21項目中20項目のみ表示しています。

カラム分析

AutoMLジョブは21の入力列を分析して、各データタイプを推測し、各トレーニングアルゴリズムの機能処理パイプラインを選択しました。

AutoMLジョブが21項目を分析します。

欠損値の割合

21列のうち1列に欠損値が含まれていることがわかりました。次の表は、欠損値の割合が最も高い1列を示しています。

1項目について欠損値を見つけたようです
。poutcomeが86.33%欠損しているそう。

カウント統計

データがカテゴリカルならone-hot encodingを実施したり、テキストならtf-idfなどを実行するようです。

次の表は、一意のエントリの数でランク付けされた21列のうち21列を示しています。

各項目の独立した値の数を一覧表にしてくれています。

 

studio27.PNG

記述統計

数値データの場合は、正規化、log、quantile、binningなどにより外れ値やスケールを調整してくれます。

 

studio28.PNG

Amazon SageMaker Studio-Amazon SageMaker AutoPilot(パート3)

part3は、Model Tuningの話です。

「Open候補世代ノートブック」には、SageMaker Autopilotジョブの詳細情報(各試行の情報、データ前処理ステップなど)が書かれています。すべてのコードは利用可能な状態で、実験を重ねる際のとっかかりになるらしい。

データセットには21個の列があり、yという名前の列がターゲット列として使用されます。これはBinaryClassificationの問題として扱われています。データセットには2つのクラスもあります。このノートブックは、トレーニングされたモデルの「精度」品質メトリックを最大化するBinaryClassificationモデルを構築します。「ACCURACY」メトリックは、モデルが正しいクラスを予測した回数の割合を提供します。

ACCURACY(正確度)が最大になるように二項分類のモデル作ったそうです。

セージメーカーのセットアップ

SageMakerのセットアップ

  • Jupyter:JupyterLab 1.0.6、jupyter_core 4.5.0およびIPython 6.4.0でテスト済み
  • カーネル:conda_python3
  • 必要な依存関係sagemaker-python-sdk> = v1.43.4

生成された候補のダウンロード

データ変換とAutopilotに関するモジュールをダウンロードします。

SageMaker自動操縦ジョブとAmazon Simple Storage Service(Amazon S3)の構成

Autopilot JobとS3の設定を行います。

 

候補パイプライン

生成された候補

SageMaker Autopilot Jobはデータセットを分析し、2つのアルゴリズムを使用する10の機械学習パイプラインを生成しました。各パイプラインには、一連の機能トランスフォーマーとアルゴリズムが含まれています。

2つのアルゴリズムを用いた10個のパイプラインを生成し、分析したそうです。

dpp0-xgboost:このデータ変換戦略は、まずRobustImputerを使用して「数値」機能を変換し(欠損値をnanに変換)、ThresholdOneHotEncoderを使用して「カテゴリ」機能を変換します。生成されたすべての機能をマージし、RobustStandardScalerを適用します。変換されたデータは、xgboostモデルの調整に使用されます。定義は次のとおりです。

10個がそれぞれどのようなパイプラインかの説明が書いてあります。上記は、内1つの例です。

選択された候補者

SageMakerのtraining jobとバッチ変換を含む特徴エンジニアリングを行います。

候補パイプラインの実行

データ変換ステップを実行する

データ変換を実施します。

マルチアルゴリズムハイパーパラメーターチューニング

データ変換されたら、Multi-Algo Tuning jobにより最適な推論モデルを探します。

モデルの選択と展開

ジョブ結果の調整の概要

Pandas dataframeを用いて各パイプラインの可視化を行います。

モデル展開

最後にデプロイします。

Amazon SageMaker Studio-Amazon SageMaker AutoPilot(パート4)

part4は、モデルの比較やデプロイまでの話です。

Autopilotが完了すると、さまざまなモデルができています。Trialsタブ
を見ると、トレーニングジョブと精度の一覧が見れます。

studio29.PNG

 

Job Profileでは、学習時間や設定の情報、ベストなモデルの候補が挙げられています。

studio30.PNG

studio31.PNG

トレーニングジョブを右クリックして、トライアルコンポーネントリストをクリックすると、詳細のリストが見れます。
studio33.PNG

 

トレーニングジョブを右クリックして、試用版で開く詳細をクリックすると、ジョブの詳細が見れます。

studio32.PNG

 

デプロイモデルをクリックすると、エンドポイントが作成されます。

studio34.PNG

 

監視を有効にするをクリックすると、

studio35.PNG

 

ノートブックを利用して、モデルの監視ができるみたいです。

studio36.PNG

 

Amazon SageMaker Experiments –機械学習モデルの整理、追跡、比較、評価
Amazon SageMaker Model Monitor –機械学習モデルのためのフルマネージドな自動監視

まとめ

ざっくりとした説明になってしまいましたが、SageMaker Autopilotの続きをやってみました。SageMaker Autopilotにより、モデルを自動で最適でやつを作ってくれます。さらに、どのようなプロセスでモデルを作ったあるのかや、モデルの比較や監視までできるようです。

その他


Amazon SageMaker Studio が起動できなかった時の対処法

はじめに

Amazon SageMaker Studio が AWS re:Invent 2019 でプレビューリリースとなりました。
さあ、早速検証!と思いましたが、SageMaker Studio が開けないエラーが発生しました。
再起動を試そうにも、SageMaker Studio の削除方法がわからず...

実は、現時点(2019/12/18時点)では、コンソール上からSageMaker Studio の作成し直し等はできません。
そのため AWS CLI を利用して、SageMaker Studio を削除する必要があります。
domain の削除にもいくつか手順があったので、今回はその方法をご紹介いたします。

 

SageMaker Studio の削除方法

私の場合は以下の画面から動けなくなり、Restart Now を押しても、起動ができない状況でした。

 

2019-12-17_15h40_54.png

SageMaker Studio のドメインに関連するアプリケーションが存在するか確認し削除

関連するアプリケーションが存在することで、ドメインが削除できない場合があります。
以下のコードでアプリケーションの有無を確認します。

 

[crayon-5e85e75b49f65653882863/]

 

もし、関連するアプリケーションがあった場合は、以下のコードでアプリケーションを削除します。

 

[crayon-5e85e75b49f72218877623/]

SageMaker Studio のドメインに関連するユーザープロファイルが存在するか確認し削除

関連するユーザープロファイルが存在すると、ドメインが削除できません。
以下のコードで ユーザープロファイルの有無を確認します。
※ユーザープロファイルは、コンソールからも確認できます。

 

image.png

[crayon-5e85e75b49f7c262286154/]

 

関連するユーザープロファイルがある場合には、以下のコマンドで削除します。

 

[crayon-5e85e75b49f86101260713/]

SageMaker Studioの削除

これでようやく、Sagemaker Studio 削除ができます。
以下のコマンドを実行し、SageMaker Studio を削除します。

 

[crayon-5e85e75b49f8f878303406/]

最後に

これで、SageMaker Studio を削除することができました。
SageMaker Studio をまた利用したい場合は新たに SageMaker Studio を立ち上げてください。


AWS Compute Optimizer を試してみた

はじめに

この記事は株式会社ナレッジコミュニケーションが運営する Amazon AI by ナレコム Advent Calendar 2019 の18日目の記事になります。
18日目である今日は AWS Compute Optimizer について書いていきます。

 

インスタンスタイプ最適化の難しさ

突然ですが皆さん、サービスを運用するにあたってこんなことに直面したこと、思ったことはありませんか?

  • サービス稼働しているけどなんとなく重い
  • メトリクス見る限りでは全然余裕がありそう。1つ下のスペックに下げてもいいんじゃ?
  • そもそも今利用しているインスタンスってサービスにあった最適なものを選べているのか

インスタンスサイズが小さすぎればアプリケーションのパフォーマンスが低下し、ユーザの顧客満足度を得ることが出来ません。
かといってインスタンスサイズが大きすぎればコストがかかる。
サービス運用者にとっては悩みのタネの一つです。

しかし最適なインスタンスを選ぶのは中々に大変な作業。
平常時とピーク時のリソース利用状況を把握し、インスタンスタイプを選択。そしてまたリソース利用状況を取得し検証。 と繰り返しの作業になり期間を要するためです。

コスト削減のためにインスタンス最適化をしようにも、その結論を出すまでの工数が費用に見合ってなければ本末転倒ですしね。

今回はそんな悩みを解決してくれそうなサービスがAWSから発表されたので使ってみたいと思います。

 

AWS Compute Optimizerとは

AWS Compute Optimizer は AWS re:Invent 2019 の期間中に発表された新サービスです。
AWSアカウント内の Amazon EC2 リソース利用状況に対して機械学習を行い、最適なインスタンスタイプを返してくれるといったサービスになります。

似たようなサービスである Cost Explorer の Resource Optimization Recommendations がありますが、こちらとの違いとして、AWS Compute Optimizer は異なるインスタンスファミリーへのレコメンドをしてくれる点があげられます。

 

対応リージョン/対応言語

今回は AWS コンソールからサービスを利用してみたいと思います。
対応リージョンは下記の5つです。(2019年12月17日時点)

  • 米国東部 (バージニア北部) us-east-1
  • 米国西部 (オレゴン) us-west-2
  • 米国東部 (オハイオ) us-east-2
  • 欧州 (アイルランド) eu-west-1
  • 南米 (サンパウロ) sa-east-1

また現時点では日本語非対応のようで左下の言語選択から「English(US)」を選択する必要があります。

 

AWS Compute Optimizer を使ってみる

それでは早速使ってみましょう!
AWSコンソールへログイン後「AWS Compute Optimizer」と検索し開くと、新サービスを開始する際のお馴染みの画面が表示されるので右上の「ご利用開始」から設定をしていきます。

 

2019-12-16_18h38_36.png

セットアップ

アカウントのセットアップ画面が開くので「オプトイン」を押下します。
画像の下にも記載がありますが、分析対象となるCloudWatchメトリクスは直近2週間のものが対象となるそうです。
またレコメンドには最低30時間分のメトリクスが必要とのこと。

 

2019-12-16_18h39_01.png

ダッシュボード

セットアップが終わったので分析結果を見てみます。
※分析完了までの時間はリソース量によって異なります。

ダッシュボードからは分析の結果、利用中のインスタンスが「スペック不足・最適・過剰スペック」なのかを一覧として確認することが出来ます。
今回のテスト用に立てたサーバは「Optimized」の結果が出ていました。

 

2019-12-17_16h03_46.png

結果画面

先程のダッシュボード画面では「Optimized」と出ていたので特に何もないかなと思ってましたが、詳細を確認すると最新世代のt3シリーズへ切り替えることで費用が抑えられますよ。と勧められているのがわかるかと思います。

2019-12-17_15h56_41.png

比較画面

現在利用しているインスタンスと推奨インスタンスへ変更した際の比較をみることができます。
料金のほかメトリクスについても確認ができるためスペック変更の指標とできそうですね。
ちなみにこのテストサーバには、 CloudWatch Agent が入ってないためメモリのグラフが空白となっていますが、メモリ利用率も分析対象とすることが可能です。

2019-12-17_16h31_09.png

まとめ

インスタンスサイズの最適化にはサーバチューニングなどもありますが、
数クリックで推奨スペックが提示される上にこれが無料でできるというのだから驚きです。
東京リージョン対応が待ち遠しいですね。

 

参考リンク

公式サイト
ユーザガイド