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

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

ta-ka256
October 01, 2021

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

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

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

ta-ka256

October 01, 2021
Tweet

Other Decks in Technology

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. © 2021, Amazon Web Services, Inc. or its affiliates. All

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

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

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

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

    格納 マップ マッチ 動画格納 ⾞両位置 動画 Amazon S3 物体検出 緯度経度 推定 結果 Amazon Aurora AWS Batch 地図 差分判定 差分情報を 地図会社へ提供 Amazon Aurora AWS Lambda
  8. © 2021, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. AWS Batchを⽤いた機械学習の分散推論
  9. AWS Batchの構成要素 • ジョブ:実⾏される⼀つの処理 § ジョブ定義、ジョブキューを指定 • ジョブ定義:実⾏するジョブの設定 § Dockerイメージ、実⾏コマンドなどを指定

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

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

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

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

    J • 物体検出ジョブのインスタンスコスト削減② J • 物体検出ジョブのインスタンスコスト削減③ L
  14. Dockerイメージのビルド効率化 • 現状:Dockerイメージのビルドにかかる時間 § CUDAに対応したOpenCV 1時間25分 § 物体検出のpythonソースコード 1分 §

    物体検出に必要なpythonライブラリ 5分 • 問題点:物体検出のソースコードだけに変更がある場合でも⼀からビルドするため 時間がかかり、トライアンドエラーが迅速にできない • やりたいこと:ソースコードやライブラリだけに変更が⼊る場合のビルド時間を 短縮したい
  15. 物体検出ジョブの仕組み 動画 動 画 を 画 像 に 分 解

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

    5分の動画で物体検出にかかる時間が1878秒から216秒に短縮 § より⾼速な⼿法に変えたため本来は精度が落ちるはずだが、むしろ精度は向上 – 精度重視の⼿法は学習に時間がかかるため性能を最⼤限引き出せていなかった
  17. 物体検出ジョブのインスタンスコスト削減③ • 結果 § 物体検出の処理時間が増加 – 5分の動画でもともと平均216秒で終わっていた物体検出が、 最⻑約60分かかるようになった – 1並列では問題なかったが、64並列で動かすとAmazon

    FSx for Lustreが ボトルネックとなった。特に画像の書き込みと読み込みが重なるタイミングで 速度が低下した § 分散処理において読み書きする場所を⼀箇所にまとめたときのボトルネックを 懸念していたが、予想以上に性能が劣化したためこの案の採⽤を⾒送った
  18. まとめ • プロジェクトの概要 § ドライブチャートの動画とGPS情報から物体を検出し、地図を更新するために必要な物体の緯度経度を推定する • AWS Batchを中⼼とした⼯夫点 § 処理ごとに適したインスタンスの選択

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

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