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

25
AWS STEP FUNCTION と LAMBDA と ととととととととととととととととととと @mizti

Upload: mizugokoro

Post on 14-Apr-2017

2.986 views

Category:

Technology


0 download

TRANSCRIPT

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

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

@mizti

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

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

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

GPU 付きサーバが必須

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

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

ー)• 入札制の AWS のスポットインスタンスを使うと

だいぶ安いけど、無視できない価格

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

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

1 ~ 2 個買えるくらい

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

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

数日とかも

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

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

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

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

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

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

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

一台なら SCP で数分でも

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

こういうものを作りたい1. 各実行ごとに専用の S3 バケットを作成2. スポットインスタンスに入札3. インスタンスを落札できたら

• AWS SNS (メール or SMS )で成功を通知• サーバ内に訓練用のモデルや訓練データ等をダウンロード• 訓練を開始• 訓練途中のモデルダンプや訓練経過データを随時 S3 にアップロード

4. 訓練が完了したら• AWS SNS (メール or SMS )で完了を通知• 一定時間経過後にインスタンスを削除する

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

作ったS3 バケットを作る

Spot Instance をリクエスト

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

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

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

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

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

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

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

実行時

こうやって…

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

実行時

こう

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

実行時

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

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

喜びの声• 実行を仕掛けておけば、あとは安心して

眠れる• いろんなハイパーパラメータでたくさん

並列実行しても安心• これを利用するために機械学習側の

コードに手を入れる必要はない• たぶんいろんなバッチ処理にも流用できる

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

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

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

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

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