ディープラーニングをaws lambdaとstep functionで自動化する

29
AWS STEP FUNCTION と LAMBDA と ととととととととととととととととととと Keita Shimizu

Upload: keita-shimizu

Post on 21-Feb-2017

257 views

Category:

Data & Analytics


0 download

TRANSCRIPT

Page 1: ディープラーニングをAWS LambdaとStep Functionで自動化する

AWS STEP FUNCTION と LAMBDA でディープラーニングの訓練を全自動化するKeita Shimizu

Page 2: ディープラーニングをAWS LambdaとStep Functionで自動化する

自己紹介• 清水敬太• 趣味 : 釣りとかボードゲームとか• お仕事 : IT 系のサービス開発

(@通信系某社)• ここ数年で機械学習

(特に Deep Learning )を趣味で触っています

Page 3: ディープラーニングをAWS LambdaとStep Functionで自動化する

自己紹介• 清水敬太• 趣味 : 釣りとかボードゲームとか• お仕事 : IT 系のサービス開発

(@通信系某社)• ここ数年で機械学習

(特に Deep Learning )を趣味で触っています

Page 4: ディープラーニングをAWS LambdaとStep Functionで自動化する

趣味 = 自腹

Page 5: ディープラーニングをAWS LambdaとStep Functionで自動化する

今日のお話

「いかに小遣いの目減りを抑えるか」を巡る汗と涙の戦いなので、たぶんJAWSUG HPC 部会のビジョン「クラウドでだれでも HPC 」に沿ったものだと思います ..

Page 6: ディープラーニングをAWS LambdaとStep Functionで自動化する

ディープラーニング触ってて困ることその1

Page 7: ディープラーニングをAWS LambdaとStep Functionで自動化する

GPU 付きサーバが必須

Page 8: ディープラーニングをAWS LambdaとStep Functionで自動化する

GPU 付きサーバは安くない• スポット利用せずに普通に借りると月 20 万円とか(無理ゲー)

• 入札制の AWS のスポットインスタンスを使うとだいぶ安いけど、無視できない価格

Page 9: ディープラーニングをAWS LambdaとStep Functionで自動化する

無視できない価格• 一台あたり一時間ごとにチロルチョコが

2 ~ 3 個買えるくらい(安いとき)

塵も積もれば、なので放置は避けたい

Page 10: ディープラーニングをAWS LambdaとStep Functionで自動化する

しかも訓練時間が長い半日とか 1 日とか普通

数日とかも

Page 11: ディープラーニングをAWS LambdaとStep Functionで自動化する

訓練が終わったらサーバをちゃんと削除したいだから

Page 12: ディープラーニングをAWS LambdaとStep Functionで自動化する

ディープラーニング触ってて困ることその 2

Page 13: ディープラーニングをAWS LambdaとStep Functionで自動化する

訓練済みデータの収集がめんどい

Page 14: ディープラーニングをAWS LambdaとStep Functionで自動化する

一台なら SCP で数分でも

Page 15: ディープラーニングをAWS LambdaとStep Functionで自動化する

いろんな条件で並列に試してると取り出すだけで一仕事

しかも終わるタイミングバラバラだったりする

Page 16: ディープラーニングをAWS LambdaとStep Functionで自動化する

しまいにはどのサーバがどの条件かわからなくなる

Page 17: ディープラーニングをAWS LambdaとStep Functionで自動化する

そしてまだ結果を取り出してないサーバを消す

Page 18: ディープラーニングをAWS LambdaとStep Functionで自動化する

訓練結果を管理しやすい場所に集約したいだから

あと訓練条件とかもちゃんとラベルしたい

Page 19: ディープラーニングをAWS LambdaとStep Functionで自動化する

サーバレス!• サーバレスコンピューティングって多分こういうの

• 必要な時にサーバを立ち上げて使い終わったら捨てる• そのコントローラにもサーバを用いない• だから平時にはサーバを一台も管理せずに必要な時に

だけサーバが出現するシステムを作れる• (最近バズワードになりつつあるらしい)

Page 20: ディープラーニングをAWS LambdaとStep Functionで自動化する

AWS で使えるサーバレスな仕組み• AWS Lambda• Node.js / Python / Java / C# のコードを登録• AWS 内で発生したイベントでフックして起動(手動起動も可)• 各言語の AWS SDK を使えば AWS の操作を自動化できる( Labmda 専用のライブラリがあるわけではない)• 1 Labmda あたり実行時間は 60 秒まで=> 長い状態遷移を実行するのは向かない

Page 21: ディープラーニングをAWS LambdaとStep Functionで自動化する

AWS で使えるサーバレスな仕組み• AWS Step Functions• セルオートマトン的な状態遷移を定義• 条件分岐や並列処理も可• 個々の State での処理は AWS Lambda 起動して処理 / 結果受取する• 状態の遷移状況を可視的に確認可能• 長時間 / 状態遷移判断の伴う処理をコントロール可能• ピタゴラスイッチみたいで面白い

Page 22: ディープラーニングをAWS LambdaとStep Functionで自動化する

こういうものを作りたい1. 各実行ごとに専用の S3 バケットを作成

2. スポットインスタンスに入札

3. インスタンスを落札できたら SNS 通知

4. 訓練データ等をデータバケットからダウンロード

0.8 $ / h

5. 訓練の中間物 / 成果物を随時 S3 にアップロード6. 完了したら AWS SNS (メール or SMS )で通知一定時間経過後にインスタンスを削除する

New

Page 23: ディープラーニングをAWS LambdaとStep Functionで自動化する

作ったS3 バケットを作る

Spot Instance をリクエスト

入札が通ったか判定結果を通知

訓練が完了しているか判定待機

タスク完了を通知一定時間後、インスタンス削除

Page 24: ディープラーニングをAWS LambdaとStep Functionで自動化する

実行時• こんな感じの json を Input にして Step Function を起動する

• 実行名( =S3 バケット名)• 訓練対象のリポジトリ• 入力 / 出力ディレクトリ• 訓練前のデータ取得等準備に必要なコマンド• 訓練実行コマンド

Page 25: ディープラーニングをAWS LambdaとStep Functionで自動化する

実行時

こうやって…

Page 26: ディープラーニングをAWS LambdaとStep Functionで自動化する

実行時

こう

Page 27: ディープラーニングをAWS LambdaとStep Functionで自動化する

実行時

・実行は Web で確認できる・結果は S3 バケットにどんどん上がってくる

Page 28: ディープラーニングをAWS LambdaとStep Functionで自動化する

喜びの声• 実行を仕掛けておけば、あとは安心して眠れる• 出先でもスマホで進捗を確認できる( S3 ブラウザ)• いろんなハイパーパラメータ設定でたくさん並列実行しても安心• これを利用するために機械学習側のコードに手を入れる必要はない• つまりたぶんほとんどのバッチ処理に流用できる

Page 29: ディープラーニングをAWS LambdaとStep Functionで自動化する

その他• 細かい話はブログにかきました

http://mizti.hatenablog.com/entry/deeplearningwithawsstepfunction

• コードhttps://github.com/mizti/aws_stepfunc_chainer

• イラストはいらすとやさんからお借りしましたhttp://www.irasutoya.com/