あゝお腹いっぱい、次なに食べよ

機械学習とかAWSとかiPadProとかGalaxynote8とか

iPadでpythonとかディープラーニングもすげー簡単にできちゃうSagemakerがヤバすぎるのでみんな使って!

お疲れ様です、sysopjpです

みんなSagemaker使ってます?

これやばい、ほんとやばい、何がヤバイって もう開発にmac とかいらない当たりがヤバイ

iPadが真のシンクライアントとして目覚める感じのヤバさがすごい

と、煽り気味に書いてみましたが、pythonとして 簡単に環境構築して開発できるあたりは Cloud9より簡単なのでまじsysopjp的にはおススメです

とりあえず今回は Sagemaker でインスタンス立てて
keras の pre-model 使って 好きな画像を
判定してみましょう

Sagemaker 使ってみよう

どんなボンクラでも どんなpcでも
ブラウザさえ使えれば python で開発したり、趣味のプログラムを組めます
今 python は求人多いですしね、学ぶにはオススメですよね!! そう、今回は実は機械学習関係ないです
題名にもありましたね、iPad + Sagemaker のお話です
iPad で ディープラーニングも

はい というわけで AWS ログインして Sagemaker をポチッとしましょう

あ、ちなみに無料期間は インスタンス稼働 250時間くらいです 毎日4時間遊ぶとしても 二ヶ月は無料で遊べますよ。やったー!

インスタンス作成画面

IAMロールだけはじめに作らないといけないので IAMロール作れるユーザーで入りましょう。

S3 へのアクセスどうするの?みたいな事言われるので 気になる人は特定のs3に、どうでもいい人は任意のs3にでもしておきましょう

面倒な人は、ここで作成されるIAMロールに S3 フルアクセスでも付与しましょう

画面右下の ノートブックインスタンスの作成をクリック

ステータス pending 進行するまでお待ちください だいたい5分くらいかかります

TensorFlow の 提供してるアーキテクト

五分待ってるあいだに小話しますね

これは tensorflow の提供してるアーキテクト図ですが

今から Sagemaker で やるのは 丸ついてる

pre-made estimator のところです

そもそも Sagemaker ってなんやねん?

ってところからいきますけど

自分が一ヶ月ほど触った結論として、以下の感じでした

1、機械学習へのとっかかり

Sagemaker には
組み込みアルゴリズムってものがありまして 例えば ラーメン二郎判定とか、アイマスのキャラ判定とか ネットによくありますよね、あれをpythonコード一行も書かないで
実現できるようになっています。
具体的には3ステップ

一, s3に学習データ(画像)を保存
二, s3に教師データ(画像のpath と その画像がなんの画像かを書いた テキストデータ) を保存
三, Sagemaker 組み込みアルゴリズムで実行

以上完了です。

会社でガハハ系の上司に
「最近でぃーぷらーにんぐ が流行りなんだってね! やってみてよ! 」
みたいな事言われて困った場合でもこの組込アルゴリズムだけで
3回ぐらいは会議でどうにかできます(実話

先ほどの図でいくと

pre-made estimator

のさらに上の部分になります、むっちゃ簡単にできます。

2、AWS engineerと機械学習 engineerは別のスキルだから分業しよう

機械学習engineerにAWSは難しすぎるけど、AWS engineerには機械学習が難しすぎます
そう思いませんかね? いや僕はそう思います
だって機械学習のネットワークを修正して精度をあげれる人と
そのモデルをトラブルなく運用できる人は別スキルでしょ? 今だってアプリ engineerとインフラ engineerは別でしょ?
Sagemaker は アプリ engineerとインフラ engineerと機械学習 engineerを結びつける
そんなキューピットなのです!!!

いや、何言ってんのかわからない?

アプリ engineer的な言い方をすると
Sagemakerのインターフェースに適合させれば
モデル作る人はネットワークにだけ集中して
アプリ engineerは インターフェースにだけ集中できるのです
そう Sagemaker を使うと機械学習が分業できるようになるんですね
素晴らしくないですか?

え?もっとわからない?
えー五分たっちゃうから 最後まで読んでからあとで質問にきて!!!

3, 機械学習とかとりあえず置いといて Python実行環境として使う

conda入ってるJupyter がボタン数回で作れるので
とりあえずなんも考えずに開発環境として使えます
今回は この3を実演して とりま次回に 1の分類器実際に作成してもらって
その次 2 の学習 engineerと協業を実際にしてみますね

さて、そろそろ終わったかな? 見てみてください

Sagemaker インスタンス初号機 起動!

InService になりましたね

さぁここの オープンを クリック!!しましょう 当然僕は iPad からやります
気がついてるかもしれませんが、ここまでも ここから先も全部iPad でやってるんですよ?

Jupyter notebook

はい、見慣れた人には見慣れた画面がでましたね

この時点で

こんだけの環境があります。

どうよ?ボタン今何回押しただけよ? それでこれやで? いやわかるよ、わかる
俺だって職場では Mac に Docker いれて Juypter してるもん
それでもできるよ、もちろんできる でもね、ほら考えてみ、これから新規で来る人に
Docker ファイル渡して起動させるのと こっちと どっちのほうが早かった? ねえどっちのほうが早かった?
そして Mac とか買うより どっちのほうが*やすかった? *

実は、自分、物欲が爆発して、 新しくMacbook 買おうと思ったら30万とか普通にして
たっけーなーってなってたんですよね
2018MBPももうすぐ出そうだし今買わないほうがいいなーとか
そうだ 安く買うなら 整備済み!ってそっち探したら日本では英字キーボード整備済みにないし
もう 米アップルから整備済みで輸入するか?って本気で考えてました

でもでも、 これで開発環境としては完全に事足りてるってことに
そう、気がついたんですね。

いやー、ほんと、iPad から簡単に作れて簡単に開発できるって ほんと素晴らしい!

実際に ディープラーニングモデルを一個使ってみる

https://keras.io/ja/

この Keras は日本語ドキュメントが豊富なので 読めばできます
とりあえず、premade estimatorをやるよーって先ほど宣言したので
やってみましょうね

画面右上の New から Conda tensorflow p36 を選択します

ちなみに anaconda と tensorflow が入っている python3.6 環境の意味です

最初のセルに これをいれて Shift+return してください。
コピペするより、手で入れるほうがおススメ
15年以上 engineerしてきた僕からのお勧め
ほんと手で打たないと体が覚えないから
目で見て手で入れたほうがいいよ

from keras.applications.resnet50 import ResNet50
from keras.preprocessing import image
from keras.applications.resnet50 import preprocess_input, decode_predictions
import numpy as np

model = ResNet50(weights='imagenet')

判定したい画像が必要なので ラーメン二郎でも犬でも猫でも神社仏閣でもなんでもいいので グーグルからでもURLをとってきてください

とりあえず 猫でもやりますか、判定してみたい画像のURLをwget します 自分はwikipedia からひっぱってみました

!wget https://upload.wikimedia.org/wikipedia/commons/3/33/Hannibal_Poenaru_-_Nasty_cat_!_(by-sa).jpg 

はい、Jupyter では 頭に ! いれると、Linuxコマンドが実行できます 実行は ふつうに Shift+return ですね

これで ローカルにコピーしてきたら 以下のソースを また書いて見ましょう

img_path='Hannibal_Poenaru_-_Nasty_cat_!_(by-sa).jpg'
img = image.load_img(img_path, target_size=(224, 224))
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
x = preprocess_input(x)

preds = model.predict(x)
print(preds)

print('Predicted:', decode_predictions(preds, top=3)[0])

はい、実行したら こうなりましたね

この画像は一位 クーガー? あー 猫科の肉食獣だと思われたみたいですね たしかに牙が怖いw
著作権がー みたいな話になりそうなので ここには張っていませんが
グーグルで猫画像を検索して wget して色々やった限りでは
けっこーあたりますよ

さて、どうでしょう? ここまで ごちゃごちゃ話しながら実は記事自体は五千文字程度ですね プログラムに至っては何行? 環境構築にいたっては何ステップで終わった?

これで、ディープラーニングが、できちゃった え?あっさり? はいあっさい、終わりました

みんな狐につままれたような顔していますが、えー今日はこれで終わりです
そんな拍子抜けした顔されても自分も困ります。。。
実行だけならこれくらい簡単にできるからSagemakerやってねって記事なんだよ。。。

大丈夫、地獄をみたい人にはちゃんと ネットワーク図をプログラムさせてやるから!
機械学習なんて8割精度検証と事前作業だからそっちで地獄を見せてやるから安心してくれ!!

え?こんなの実務で使えるの?
使えますよ、アンサンブル学習にはむっちゃ使えます
それでは以上!!! 地獄の一丁目一番地 ステップワン! 終わり! よろしくお願いいたします!!!