AWS Batchを用いた機械学習の分散推論 #AWSDevDay
by
ta-ka256
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
© 2021, Amazon Web Services, Inc. or its affiliates. All rights reserved. AWS Batchを⽤いた機械学習の分散推論 ⾼⼭ 将太 株式会社Mobility Technologies D E V D AY
Slide 2
Slide 2 text
• 名前:⾼⼭将太 • ID:@taka_nigoro • 経歴 § DeNA – マンガアプリの開発 – 声の印象に合ったグラフィックを⽣成する”fontgraphy”の開発 § Mobility Technologies(出向) – 機械学習の分散推論のための諸々 • 最近の悩み § もうすぐ⼆歳になる息⼦がイヤイヤ期に⼊り翻弄されています ⾃⼰紹介
Slide 3
Slide 3 text
今⽇の発表内容 • プロジェクトについて • システム構成 • AWS Batchを⽤いた機械学習の分散推論 • AWS Batchを中⼼とした⼯夫点
Slide 4
Slide 4 text
© 2021, Amazon Web Services, Inc. or its affiliates. All rights reserved. プロジェクトについて
Slide 5
Slide 5 text
株式会社Mobility Technologies紹介 「移動で⼈を幸せに。」のミッションのもと事業を展開
Slide 6
Slide 6 text
• タクシーやトラックなど商⽤⾞に向けた、ドライブレコーダを使った 交通事故削減⽀援サービス § 危険シーンを検知して運転⾏動を分析 § 運転⾏動をレポート化 • 契約⾞両は約2.5万台 § プレスリリース • ⼤量のドライブレコーダの動画を収集できる ドライブチャートの紹介
Slide 7
Slide 7 text
プロジェクト概要 • ⽬的:⾃動運転社会を⾒据えて、地図をできるだけ⾼い頻度で更新したい • ⽅法 1. ドライブチャートの動画から標識などの道路上の物体を検出 2. ⾞両から得られるGPS情報を⽤いて検出した道路上の物体の緯度経度を推定 3. 地図と⽐較して差分を⾒つけ、地図会社に差分情報を提供 4. 地図会社が差分をもとに地図を更新 ⼤量のデータと、機械学習の技術⼒と、モビリティのドメイン知識の三つを持つ Mobility Technologiesだからこそできるプロジェクト
Slide 8
Slide 8 text
© 2021, Amazon Web Services, Inc. or its affiliates. All rights reserved. システム構成
Slide 9
Slide 9 text
システム概要 GPS情報 ドライブチャート 道路上の物体を検出し 緯度経度を推定 地図 地図と⽐較 差分を⾒つけ 地図会社に提供
Slide 10
Slide 10 text
システム構成図 動画 ⾞両位置 動画 リクエスト DRIVE CHART ⾞両位置 格納 マップ マッチ 動画格納 ⾞両位置 動画 Amazon S3 物体検出 緯度経度 推定 結果 Amazon Aurora AWS Batch 地図 差分判定 差分情報を 地図会社へ提供 Amazon Aurora AWS Lambda
Slide 11
Slide 11 text
システム構成図 今⽇の内容は この部分の話 動画 ⾞両位置 動画 リクエスト DRIVE CHART ⾞両位置 格納 マップ マッチ 動画格納 ⾞両位置 動画 Amazon S3 物体検出 緯度経度 推定 結果 Amazon Aurora AWS Batch 地図 差分判定 差分情報を 地図会社へ提供 Amazon Aurora AWS Lambda
Slide 12
Slide 12 text
• 物体検出アルゴリズムYOLOv4を使って道路上の物体を検出 § 物体のクラスと画像上の位置を出⼒ § クラス:最⾼速度、⾼さ制限、⾞両通⾏⽌め、路⾯ペイントなど 道路上の物体検出
Slide 13
Slide 13 text
道路上の物体検出
Slide 14
Slide 14 text
道路上の物体検出
Slide 15
Slide 15 text
緯度経度の推定 SLAMの実⾏例 三⾓測量のイメージ 1. SLAMを使ってカメラパラメータとカメラの三次元座標を推定 2. 画像上の物体の位置とカメラパラメータから三⾓測量で物体の三次元座標を計算 3. カメラの三次元座標とGPS座標は座標系が異なるため変換パラメータを求める 4. 検出した物体の三次元座標を変換パラメータを使って緯度経度に変換
Slide 16
Slide 16 text
© 2021, Amazon Web Services, Inc. or its affiliates. All rights reserved. AWS Batchを⽤いた機械学習の分散推論
Slide 17
Slide 17 text
なぜ機械学習の分散推論が必要なのか • ドライブチャートのデータは⼤量であり、 例えば⼀つの性能評価実験で166時間の動画を処理することがある • 166時間の動画をg4dn.xlarge 1並列だと120時間かかるため迅速なトライアンドエ ラーができない • 本番でシステムを稼働させるとなると、10〜100倍のデータを処理することになる
Slide 18
Slide 18 text
AWS Batchの概要 カスタムコンテナの分散実⾏をいい感じにやってくれるサービス • ジョブの要件に基づいてコンピューティングリソースを管理してくれる • Dockerイメージをもとに作成したコンテナ上でジョブを実⾏ • AWS Batchに対する追加料⾦は発⽣しない
Slide 19
Slide 19 text
AWS Batchの構成要素 • ジョブ:実⾏される⼀つの処理 § ジョブ定義、ジョブキューを指定 • ジョブ定義:実⾏するジョブの設定 § Dockerイメージ、実⾏コマンドなどを指定 • ジョブキュー:ジョブをキューイングしておく場所 § コンピューティング環境を指定 • コンピューティング環境:Amazon Elastic Compute Cloudの設定 § インスタンスタイプ、vCPUの数などを設定
Slide 20
Slide 20 text
AWS Batchを⽤いた機械学習の分散推論 • 166時間の動画を2000データユニットに分解する • 2000データユニットを64並列で分散推論することで2時間弱で処理が終わる GPUインスタンス コンテナ 物体検出のソースコード 機械学習モデル 結果 データユニット1 ジョブキュー データユニットIDを指定した ジョブを提出 ジョブ定義 • Dockerイメージ名 • 実⾏コマンド データユニット2 ジョブA • データユニット1のID ジョブB • データユニット2のID GPUインスタンス コンテナ 物体検出のソースコード 機械学習モデル
Slide 21
Slide 21 text
AWS Batchの利点 • インスタンスの起動や停⽌の管理が不要 • ⾃動でスケールイン・スケールアウトするためリソースを有効活⽤できる • 依存関係のあるジョブの分散実⾏が簡単にできる … … 物体検出ジョブ1 緯度経度推定ジョブ1 データユニット1 物体検出ジョブ2 緯度経度推定ジョブ2 データユニット2 物体検出ジョブn 緯度経度推定ジョブn データユニットn
Slide 22
Slide 22 text
© 2021, Amazon Web Services, Inc. or its affiliates. All rights reserved. AWS Batchを中心とした⼯夫点
Slide 23
Slide 23 text
AWS Batchを中⼼とした⼯夫点 • 処理ごとに適したインスタンスの選択 J • Dockerイメージのビルド効率化 J • 物体検出ジョブのインスタンスコスト削減① J • 物体検出ジョブのインスタンスコスト削減② J • 物体検出ジョブのインスタンスコスト削減③ L
Slide 24
Slide 24 text
処理ごとに適したインスタンスの選択 • やりたいこと:コストパフォーマンスが最⼤となるインスタンスを選択したい § 処理は24時間以内に終わればよいので、処理速度はそこまで重要ではない § コストパフォーマンスを以下のように定義 • 実現⽅法 インスタンスタイプごとにコストパフォーマンスを計算し、 コストパフォーマンスが最⼤となるインスタンスを選択 コストパフォーマンス = インスタンスコスト($/h) 秒間処理フレーム数
Slide 25
Slide 25 text
処理ごとに適したインスタンスの選択 物体検出 コストパフォーマンス 秒間処理フレーム数 ÷ インスタンスコスト($/h) 物体検出 処理速度 秒間処理フレーム数 物体検出において、処理速度はp3.2xlargeが最速だが、 コストパフォーマンスはg4dn.xlargeが最適
Slide 26
Slide 26 text
処理ごとに適したインスタンスの選択 緯度経度推定において、コストパフォーマンスはc4.xlargeが最適 • 現状の実装ではSLAM計算はCPUを1コアしか使わないため、 CPUを増やしても速くならない 緯度経度推定 コストパフォーマンス 秒間処理フレーム数 ÷ インスタンスコスト($/h)
Slide 27
Slide 27 text
Dockerイメージのビルド効率化 • 現状:Dockerイメージのビルドにかかる時間 § CUDAに対応したOpenCV 1時間25分 § 物体検出のpythonソースコード 1分 § 物体検出に必要なpythonライブラリ 5分 • 問題点:物体検出のソースコードだけに変更がある場合でも⼀からビルドするため 時間がかかり、トライアンドエラーが迅速にできない • やりたいこと:ソースコードやライブラリだけに変更が⼊る場合のビルド時間を 短縮したい
Slide 28
Slide 28 text
Dockerイメージのビルド効率化 • 実現⽅法:Dockerイメージを⼆段階に分ける • 結果 § ソースコードやライブラリだけに変更が⼊る場合のビルド時間を短縮し、 迅速にトライアンドエラーができるようになった 物体検出の ソースコード 物体検出に必要な ライブラリ 6分 OS OpenCV CUDA 物体検出の ソースコード 物体検出に必要な ライブラリ 1時間31分 1時間25分 OS OpenCV CUDA
Slide 29
Slide 29 text
物体検出ジョブの仕組み 動画 動 画 を 画 像 に 分 解 物 体 検 出 検 出 結 果 の 補 間 結 果 格 納 170秒 1878秒 2秒
Slide 30
Slide 30 text
物体検出ジョブのインスタンスコスト削減① • やりたいこと:物体検出の処理時間を短縮したい 動画 動 画 を 画 像 に 分 解 物 体 検 出 検 出 結 果 の 補 間 結 果 格 納 170秒 1878秒 2秒
Slide 31
Slide 31 text
物体検出ジョブのインスタンスコスト削減① • 実現⽅法 § 物体検出⼿法を精度重視のEfficientDetからより⾼速なYOLOv4に変更 § 画像サイズを縮⼩ • 結果 § 5分の動画で物体検出にかかる時間が1878秒から216秒に短縮 § より⾼速な⼿法に変えたため本来は精度が落ちるはずだが、むしろ精度は向上 – 精度重視の⼿法は学習に時間がかかるため性能を最⼤限引き出せていなかった
Slide 32
Slide 32 text
物体検出ジョブのインスタンスコスト削減② • やりたいこと:動画の画像への分解の処理時間を短縮したい 動画 動 画 を 画 像 に 分 解 物 体 検 出 検 出 結 果 の 補 間 結 果 格 納 170秒 216秒 2秒
Slide 33
Slide 33 text
物体検出ジョブのインスタンスコスト削減② • 実現⽅法:画像フォーマットをpngからjpgに変更 • 結果 § 5分の動画の画像への分解の処理時間が170秒から37秒に短縮 § 画質劣化による精度低下は⾒られず § 副産物として5分の動画を画像に分解した時の容量が5.0GBから1.0GBに削減
Slide 34
Slide 34 text
物体検出ジョブのインスタンスコスト削減③ • やりたいこと:GPUが必要ない処理をオフロードしたい 動画 動 画 を 画 像 に 分 解 物 体 検 出 検 出 結 果 の 補 間 結 果 格 納 37秒 216秒 2秒
Slide 35
Slide 35 text
物体検出ジョブのインスタンスコスト削減③ • 実現⽅法 § 動画の画像への分解を物体検出ジョブから外出ししてCPUインスタンスで実⾏ § 異なるジョブ間で分解した画像を共有する必要があるため、 新たにAmazon FSx for Lustreを準備 動 画 動 画 を 画 像 に 分 解 物 体 検 出 検 出 結 果 の 補 間 結 果 格 納 CPU インスタンス GPUインスタンス
Slide 36
Slide 36 text
物体検出ジョブのインスタンスコスト削減③ • 結果 § 物体検出の処理時間が増加 – 5分の動画でもともと平均216秒で終わっていた物体検出が、 最⻑約60分かかるようになった – 1並列では問題なかったが、64並列で動かすとAmazon FSx for Lustreが ボトルネックとなった。特に画像の書き込みと読み込みが重なるタイミングで 速度が低下した § 分散処理において読み書きする場所を⼀箇所にまとめたときのボトルネックを 懸念していたが、予想以上に性能が劣化したためこの案の採⽤を⾒送った
Slide 37
Slide 37 text
© 2021, Amazon Web Services, Inc. or its affiliates. All rights reserved. まとめ
Slide 38
Slide 38 text
まとめ • プロジェクトの概要 § ドライブチャートの動画とGPS情報から物体を検出し、地図を更新するために必要な物体の緯度経度を推定する • AWS Batchを中⼼とした⼯夫点 § 処理ごとに適したインスタンスの選択 J – コストパフォーマンスが最⼤になるインスタンスを選択 § Dockerイメージのビルド効率化 J – Dockerイメージを⼆段階に分ける § 物体検出ジョブのインスタンスコスト削減① J – 精度重視の検出⼿法から速度重視の検出⼿法に変更 § 物体検出ジョブのインスタンスコスト削減② J – 画像フォーマットの変更 § 物体検出ジョブのインスタンスコスト削減③ L – 動画の画像への分解を物体検出ジョブから外出ししたが、かえってインスタンスコストが増⼤した
Slide 39
Slide 39 text
Thank you! © 2021, Amazon Web Services, Inc. or its affiliates. All rights reserved. ⾼⼭将太 株式会社Mobility Technologies