Successfully reported this slideshow.
Your SlideShare is downloading. ×

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

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad

Check these out next

1 of 29 Ad
Advertisement

More Related Content

Slideshows for you (20)

Viewers also liked (20)

Advertisement

Similar to ディープラーニングをAWS LambdaとStep Functionで自動化する (20)

Recently uploaded (20)

Advertisement

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

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

×