Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AWS Batchを用いた機械学習の分散推論 #AWSDevDay

340200dd7c5ce6a975d9e06120c423c8?s=47 ta-ka256
October 01, 2021

AWS Batchを用いた機械学習の分散推論 #AWSDevDay

AWS Dev Day Online Japan 2021で発表した資料です。

ドライブレコーダの映像から道路上の物体を検出し、検出した物体の緯度経度を推定するシステムをAWS Batchで構築しました。
AWS Batchを用いた機械学習の分散推論システムの構築方法や開発における工夫点などを紹介しています。

340200dd7c5ce6a975d9e06120c423c8?s=128

ta-ka256

October 01, 2021
Tweet

Transcript

  1. © 2021, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. AWS Batchを⽤いた機械学習の分散推論 ⾼⼭ 将太 株式会社Mobility Technologies D E V D AY
  2. • 名前:⾼⼭将太 • ID:@taka_nigoro • 経歴 § DeNA – マンガアプリの開発

    – 声の印象に合ったグラフィックを⽣成する”fontgraphy”の開発 § Mobility Technologies(出向) – 機械学習の分散推論のための諸々 • 最近の悩み § もうすぐ⼆歳になる息⼦がイヤイヤ期に⼊り翻弄されています ⾃⼰紹介
  3. 今⽇の発表内容 • プロジェクトについて • システム構成 • AWS Batchを⽤いた機械学習の分散推論 • AWS

    Batchを中⼼とした⼯夫点
  4. © 2021, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. プロジェクトについて
  5. 株式会社Mobility Technologies紹介 「移動で⼈を幸せに。」のミッションのもと事業を展開

  6. • タクシーやトラックなど商⽤⾞に向けた、ドライブレコーダを使った 交通事故削減⽀援サービス § 危険シーンを検知して運転⾏動を分析 § 運転⾏動をレポート化 • 契約⾞両は約2.5万台 §

    プレスリリース • ⼤量のドライブレコーダの動画を収集できる ドライブチャートの紹介
  7. プロジェクト概要 • ⽬的:⾃動運転社会を⾒据えて、地図をできるだけ⾼い頻度で更新したい • ⽅法 1. ドライブチャートの動画から標識などの道路上の物体を検出 2. ⾞両から得られるGPS情報を⽤いて検出した道路上の物体の緯度経度を推定 3.

    地図と⽐較して差分を⾒つけ、地図会社に差分情報を提供 4. 地図会社が差分をもとに地図を更新 ⼤量のデータと、機械学習の技術⼒と、モビリティのドメイン知識の三つを持つ Mobility Technologiesだからこそできるプロジェクト
  8. © 2021, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. システム構成
  9. システム概要 GPS情報 ドライブチャート 道路上の物体を検出し 緯度経度を推定 地図 地図と⽐較 差分を⾒つけ 地図会社に提供

  10. システム構成図 動画 ⾞両位置 動画 リクエスト DRIVE CHART ⾞両位置 格納 マップ

    マッチ 動画格納 ⾞両位置 動画 Amazon S3 物体検出 緯度経度 推定 結果 Amazon Aurora AWS Batch 地図 差分判定 差分情報を 地図会社へ提供 Amazon Aurora AWS Lambda
  11. システム構成図 今⽇の内容は この部分の話 動画 ⾞両位置 動画 リクエスト DRIVE CHART ⾞両位置

    格納 マップ マッチ 動画格納 ⾞両位置 動画 Amazon S3 物体検出 緯度経度 推定 結果 Amazon Aurora AWS Batch 地図 差分判定 差分情報を 地図会社へ提供 Amazon Aurora AWS Lambda
  12. • 物体検出アルゴリズムYOLOv4を使って道路上の物体を検出 § 物体のクラスと画像上の位置を出⼒ § クラス:最⾼速度、⾼さ制限、⾞両通⾏⽌め、路⾯ペイントなど 道路上の物体検出

  13. 道路上の物体検出

  14. 道路上の物体検出

  15. 緯度経度の推定 SLAMの実⾏例 三⾓測量のイメージ 1. SLAMを使ってカメラパラメータとカメラの三次元座標を推定 2. 画像上の物体の位置とカメラパラメータから三⾓測量で物体の三次元座標を計算 3. カメラの三次元座標とGPS座標は座標系が異なるため変換パラメータを求める 4.

    検出した物体の三次元座標を変換パラメータを使って緯度経度に変換
  16. © 2021, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. AWS Batchを⽤いた機械学習の分散推論
  17. なぜ機械学習の分散推論が必要なのか • ドライブチャートのデータは⼤量であり、 例えば⼀つの性能評価実験で166時間の動画を処理することがある • 166時間の動画をg4dn.xlarge 1並列だと120時間かかるため迅速なトライアンドエ ラーができない • 本番でシステムを稼働させるとなると、10〜100倍のデータを処理することになる

  18. AWS Batchの概要 カスタムコンテナの分散実⾏をいい感じにやってくれるサービス • ジョブの要件に基づいてコンピューティングリソースを管理してくれる • Dockerイメージをもとに作成したコンテナ上でジョブを実⾏ • AWS Batchに対する追加料⾦は発⽣しない

  19. AWS Batchの構成要素 • ジョブ:実⾏される⼀つの処理 § ジョブ定義、ジョブキューを指定 • ジョブ定義:実⾏するジョブの設定 § Dockerイメージ、実⾏コマンドなどを指定

    • ジョブキュー:ジョブをキューイングしておく場所 § コンピューティング環境を指定 • コンピューティング環境:Amazon Elastic Compute Cloudの設定 § インスタンスタイプ、vCPUの数などを設定
  20. AWS Batchを⽤いた機械学習の分散推論 • 166時間の動画を2000データユニットに分解する • 2000データユニットを64並列で分散推論することで2時間弱で処理が終わる GPUインスタンス コンテナ 物体検出のソースコード 機械学習モデル

    結果 データユニット1 ジョブキュー データユニットIDを指定した ジョブを提出 ジョブ定義 • Dockerイメージ名 • 実⾏コマンド データユニット2 ジョブA • データユニット1のID ジョブB • データユニット2のID GPUインスタンス コンテナ 物体検出のソースコード 機械学習モデル
  21. AWS Batchの利点 • インスタンスの起動や停⽌の管理が不要 • ⾃動でスケールイン・スケールアウトするためリソースを有効活⽤できる • 依存関係のあるジョブの分散実⾏が簡単にできる … …

    物体検出ジョブ1 緯度経度推定ジョブ1 データユニット1 物体検出ジョブ2 緯度経度推定ジョブ2 データユニット2 物体検出ジョブn 緯度経度推定ジョブn データユニットn
  22. © 2021, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. AWS Batchを中心とした⼯夫点
  23. AWS Batchを中⼼とした⼯夫点 • 処理ごとに適したインスタンスの選択 J • Dockerイメージのビルド効率化 J • 物体検出ジョブのインスタンスコスト削減①

    J • 物体検出ジョブのインスタンスコスト削減② J • 物体検出ジョブのインスタンスコスト削減③ L
  24. 処理ごとに適したインスタンスの選択 • やりたいこと:コストパフォーマンスが最⼤となるインスタンスを選択したい § 処理は24時間以内に終わればよいので、処理速度はそこまで重要ではない § コストパフォーマンスを以下のように定義 • 実現⽅法 インスタンスタイプごとにコストパフォーマンスを計算し、

    コストパフォーマンスが最⼤となるインスタンスを選択 コストパフォーマンス = インスタンスコスト($/h) 秒間処理フレーム数
  25. 処理ごとに適したインスタンスの選択 物体検出 コストパフォーマンス 秒間処理フレーム数 ÷ インスタンスコスト($/h) 物体検出 処理速度 秒間処理フレーム数 物体検出において、処理速度はp3.2xlargeが最速だが、

    コストパフォーマンスはg4dn.xlargeが最適
  26. 処理ごとに適したインスタンスの選択 緯度経度推定において、コストパフォーマンスはc4.xlargeが最適 • 現状の実装ではSLAM計算はCPUを1コアしか使わないため、 CPUを増やしても速くならない 緯度経度推定 コストパフォーマンス 秒間処理フレーム数 ÷ インスタンスコスト($/h)

  27. Dockerイメージのビルド効率化 • 現状:Dockerイメージのビルドにかかる時間 § CUDAに対応したOpenCV 1時間25分 § 物体検出のpythonソースコード 1分 §

    物体検出に必要なpythonライブラリ 5分 • 問題点:物体検出のソースコードだけに変更がある場合でも⼀からビルドするため 時間がかかり、トライアンドエラーが迅速にできない • やりたいこと:ソースコードやライブラリだけに変更が⼊る場合のビルド時間を 短縮したい
  28. Dockerイメージのビルド効率化 • 実現⽅法:Dockerイメージを⼆段階に分ける • 結果 § ソースコードやライブラリだけに変更が⼊る場合のビルド時間を短縮し、 迅速にトライアンドエラーができるようになった 物体検出の ソースコード

    物体検出に必要な ライブラリ 6分 OS OpenCV CUDA 物体検出の ソースコード 物体検出に必要な ライブラリ 1時間31分 1時間25分 OS OpenCV CUDA
  29. 物体検出ジョブの仕組み 動画 動 画 を 画 像 に 分 解

    物 体 検 出 検 出 結 果 の 補 間 結 果 格 納 170秒 1878秒 2秒
  30. 物体検出ジョブのインスタンスコスト削減① • やりたいこと:物体検出の処理時間を短縮したい 動画 動 画 を 画 像 に

    分 解 物 体 検 出 検 出 結 果 の 補 間 結 果 格 納 170秒 1878秒 2秒
  31. 物体検出ジョブのインスタンスコスト削減① • 実現⽅法 § 物体検出⼿法を精度重視のEfficientDetからより⾼速なYOLOv4に変更 § 画像サイズを縮⼩ • 結果 §

    5分の動画で物体検出にかかる時間が1878秒から216秒に短縮 § より⾼速な⼿法に変えたため本来は精度が落ちるはずだが、むしろ精度は向上 – 精度重視の⼿法は学習に時間がかかるため性能を最⼤限引き出せていなかった
  32. 物体検出ジョブのインスタンスコスト削減② • やりたいこと:動画の画像への分解の処理時間を短縮したい 動画 動 画 を 画 像 に

    分 解 物 体 検 出 検 出 結 果 の 補 間 結 果 格 納 170秒 216秒 2秒
  33. 物体検出ジョブのインスタンスコスト削減② • 実現⽅法:画像フォーマットをpngからjpgに変更 • 結果 § 5分の動画の画像への分解の処理時間が170秒から37秒に短縮 § 画質劣化による精度低下は⾒られず §

    副産物として5分の動画を画像に分解した時の容量が5.0GBから1.0GBに削減
  34. 物体検出ジョブのインスタンスコスト削減③ • やりたいこと:GPUが必要ない処理をオフロードしたい 動画 動 画 を 画 像 に

    分 解 物 体 検 出 検 出 結 果 の 補 間 結 果 格 納 37秒 216秒 2秒
  35. 物体検出ジョブのインスタンスコスト削減③ • 実現⽅法 § 動画の画像への分解を物体検出ジョブから外出ししてCPUインスタンスで実⾏ § 異なるジョブ間で分解した画像を共有する必要があるため、 新たにAmazon FSx for

    Lustreを準備 動 画 動 画 を 画 像 に 分 解 物 体 検 出 検 出 結 果 の 補 間 結 果 格 納 CPU インスタンス GPUインスタンス
  36. 物体検出ジョブのインスタンスコスト削減③ • 結果 § 物体検出の処理時間が増加 – 5分の動画でもともと平均216秒で終わっていた物体検出が、 最⻑約60分かかるようになった – 1並列では問題なかったが、64並列で動かすとAmazon

    FSx for Lustreが ボトルネックとなった。特に画像の書き込みと読み込みが重なるタイミングで 速度が低下した § 分散処理において読み書きする場所を⼀箇所にまとめたときのボトルネックを 懸念していたが、予想以上に性能が劣化したためこの案の採⽤を⾒送った
  37. © 2021, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. まとめ
  38. まとめ • プロジェクトの概要 § ドライブチャートの動画とGPS情報から物体を検出し、地図を更新するために必要な物体の緯度経度を推定する • AWS Batchを中⼼とした⼯夫点 § 処理ごとに適したインスタンスの選択

    J – コストパフォーマンスが最⼤になるインスタンスを選択 § Dockerイメージのビルド効率化 J – Dockerイメージを⼆段階に分ける § 物体検出ジョブのインスタンスコスト削減① J – 精度重視の検出⼿法から速度重視の検出⼿法に変更 § 物体検出ジョブのインスタンスコスト削減② J – 画像フォーマットの変更 § 物体検出ジョブのインスタンスコスト削減③ L – 動画の画像への分解を物体検出ジョブから外出ししたが、かえってインスタンスコストが増⼤した
  39. Thank you! © 2021, Amazon Web Services, Inc. or its

    affiliates. All rights reserved. ⾼⼭将太 株式会社Mobility Technologies