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