Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

20,934 views

Published on

Automated deep learning training with AWS Step Functions and AWS Lambda.

Published in: Technology

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

  1. 1. AWS STEP FUNCTIONとLAMBDAで ディープラーニングの訓練を全自動化する @mizti
  2. 2. ディープラーニング 触ってて困ること その1
  3. 3. GPU付きサーバが必須
  4. 4. GPU付きサーバは高い • スポット利用せずに普通に借りると月20万円とか(無理ゲー) • 入札制のAWSのスポットインスタンスを使うと だいぶ安いけど、無視できない価格
  5. 5. 無視できない価格 • 一台あたり一時間ごとにチロルチョコが 1 ~ 2個買えるくらい
  6. 6. しかも訓練時間が長い 半日とか1日とか普通 数日とかも
  7. 7. 訓練が終わったらサーバを ちゃんと削除したい だから
  8. 8. ディープラーニング 触ってて困ること その2
  9. 9. 訓練済みデータの収集が めんどい
  10. 10. 一台ならSCPで数分でも
  11. 11. いろんな条件で並列に 試してると取り出すだけで一仕事 しかも終わるタイミングバラバラだったりする
  12. 12. しまいにはどのサーバがどの 条件かわからなくなる
  13. 13. そしてまだ結果を 取り出してないサーバを消す
  14. 14. 訓練結果を管理しやすい 場所に集約したい だから あと訓練条件とかもちゃんとラベルしたい
  15. 15. サーバレス! • サーバレスコンピューティングって多分こういうの • 必要な時にサーバを立ち上げて使い終わったら捨てる • そのコントローラにもサーバを用いない • だから平時にはサーバを一台も管理せずに必要な時に だけサーバが出現するシステムを作れる • (最近バズワードになりつつあるらしい)
  16. 16. AWSで使えるサーバレスな仕組み • AWS Lambda • Node.js / Python / Java / C#のコードを登録 • AWS内で発生したイベントでフックして起 動(手動起動も可) • 各言語のAWS SDKを使えばAWSの操作を 自動化できる(Labmda専用のライブラリが あるわけではない) • 1Labmdaあたり実行時間は60秒まで => 長い状態遷移を実行するのは向かない
  17. 17. AWSで使えるサーバレスな仕組み • AWS Step Functions • セルオートマトン的な状態遷移を定義 • 条件分岐や並列処理も可 • 個々のStateでの処理はAWS Lambda起動 して処理 / 結果受取する • 状態の遷移状況を可視的に確認可能 • 長時間 / 状態遷移判断の伴う処理を コントロール可能 • ピタゴラスイッチみたいで面白い
  18. 18. こういうものを作りたい 1. 各実行ごとに専用のS3バケットを作成 2. スポットインスタンスに入札 3. インスタンスを落札できたら • AWS SNS (メール or SMS)で成功を通知 • サーバ内に訓練用のモデルや訓練データ等をダウンロード • 訓練を開始 • 訓練途中のモデルダンプや訓練経過データを随時S3にアップロード 4. 訓練が完了したら • AWS SNS (メール or SMS)で完了を通知 • 一定時間経過後にインスタンスを削除する
  19. 19. 作った S3バケットを作る Spot Instanceをリクエスト 入札が通ったか判定 結果を通知 訓練が完了しているか判定 待機 タスク完了を通知 一定時間後、インスタンス削除
  20. 20. 実行時 • こんな感じのjsonをInputにしてStep Functionを起動する • 実行名(=S3バケット名) • 訓練対象のリポジトリ • 入力 / 出力ディレクトリ • 訓練前のデータ取得等準備に必要なコマンド • 訓練実行コマンド
  21. 21. 実行時 こうやって…
  22. 22. 実行時 こう
  23. 23. 実行時 ・実行はWebで確認できる ・結果はS3バケットにどんどん上がってくる
  24. 24. 喜びの声 • 実行を仕掛けておけば、あとは安心して 眠れる • いろんなハイパーパラメータでたくさん 並列実行しても安心 • これを利用するために機械学習側の コードに手を入れる必要はない • たぶんいろんなバッチ処理にも 流用できる
  25. 25. その他 • 細かい話はブログにかきました http://mizti.hatenablog.com/entry/deeplearningwithaws stepfunction • コード https://github.com/mizti/aws_stepfunc_chainer • イラストはいらすとやさんからお借りしました http://www.irasutoya.com/

×