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

Post on 14-Apr-2017

2.986 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

@mizti

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

GPU 付きサーバが必須

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

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

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

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

1 ~ 2 個買えるくらい

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

数日とかも

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

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

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

一台なら SCP で数分でも

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

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

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

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

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

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

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

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

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

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

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

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

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

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

作ったS3 バケットを作る

Spot Instance をリクエスト

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

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

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

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

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

実行時

こうやって…

実行時

こう

実行時

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

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

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

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

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

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

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

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

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

top related