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