HOME > ブログ > Vieurekaプラットフォーム > Amazon SageMaker Neoを利用したPyTorchモデルの推論速度の高速化

2022年04月25日

  • カメラ
  • 画像認識

Amazon SageMaker Neoを利用したPyTorchモデルの推論速度の高速化

パナソニック システムデザイン株式会社の田頭です。弊社はVieurekaチームと共にVieurekaプラットフォーム拡充を進めて、様々なAIフレームワークを活用したアプリケーション開発に挑戦しております。

Vieurekaカメラは、Amazon SageMaker Neoに対応をしています。Amazon SageMaker Neoは、TensorFlowやPyTorchといった各種AIフレームワークモデルを、精度を損なうことなく変換し、ターゲットハードウェア用にモデルを最適化できる、AWSが提供するサービスです。
Amazon SageMaker Neoの詳細についてはAWSの公式HPをご覧ください。
https://aws.amazon.com/jp/sagemaker/neo/

前回の記事では、PyTorchの学習済み画像分類モデル(mobilenet_v2)を例にしてPyTorchを利用したアプリケーションの開発方法をご紹介しました。そこで今回は、Amazon SageMaker Neoで推論モデルを変換し、その前後での推論速度の変化について確認していきます。

「バージョン情報」

  • PyTorch:v1.10.2
  • Amazon SageMaker Neo:v1.10.0

推論モデルの変換手順は以下の通りです。

  1. 推論モデルをローカルPC上でOnnx形式に変換(※1)
  2. 推論モデルをAmazon S3バケットへアップロード
  3. Amazon SageMaker Neoで推論モデルを変換

※1:Amazon SageMaker Neoでは、PyTorch推論モデルを直接変換することも可能です。ですが今回は、より推論速度の高速化を見込んで、一度Onnx形式に変換した後にAmazon SageMaker Neoで変換します。

まず、「1. 推論モデルをローカルPC上でOnnx形式に変換」します。
ローカルPCにPyTorchの実行環境を用意し、下記のコードを実行します。

model = torchvision.models.mobilenet_v2(pretrained=True)
dummy_input = torch.randn((1, 3, 224, 224))
torch.onnx.export(model, dummy_input, "./models/mobilenet_v2.onnx", verbose=True)

(1行目)学習済み画像分類モデル(mobilenet_v2)をダウンロードしています。
(2行目)変換時にモデルをトレースするために使用するダミー入力値を作成しています。
(3行目)PyTorchモデルをOnnx形式へ変換しています。

続いて、「2. 推論モデルをAmazon S3バケットへアップロード」します。
形式の推論モデルを「.tar.gz」形式で圧縮し、S3バケットへアップロードします。

最後に、「3. Amazon SageMaker Neoで推論モデルを変換」します。 Amazon SageMakerのページ内からコンパイルジョブの画面を開き、「コンパイルジョブの作成」を行います。

「入力設定」

  • アーティファクトの場所:アップロード済み推論モデルのS3 URIを指定します。
  • データ入力設定:「{“入力名”:[入力形状]}」の形式で設定します。ここで、設定する入力形状とは、Onnxモデルへ変換した際に使用した、トレース用のダミー入力値の形状のことです。
  • 機械学習フレームワーク:今回は「ONNX」を選択します。

「出力設定」
ターゲットプラットフォームを選択します。

  • OS:LINUXを選択。
  • アーキテクト:ARM64を選択。
  • アクセラレータ:GPU処理に最適化したモデルへ変換するために「MALI」を選択。
  • S3 出力先:コンパイル済みモデルを出力するS3 URIを指定。

ステータスに「COMPLETED」と表示されると、コンパイルは成功です。

今回のコンパイル済みモデルの名前は
「mobilenet_v2-LINUX_ARM64_MALI.tar.gz」です。

上記の推論モデルをVieurekaカメラアプリケーションパッケージに導入し、変換前のPyTorch推論モデルと、Amazon SageMaker Neoで変換したモデルを動作させ、推論速度の差を検証しました(表1)。

表1.推論モデルの推論処理結果の比較(VRK-C301)

PyTorch推論モデルをAmazon SageMaker Neoで変換することによって、CPU使用率が、約300pt減少していることが分かります(※2)。そして、推論速度は、およそ2.4s短縮しており、約12倍の高速化を実現しています。以上のことから、推論処理がGPUに委譲され、高速に動作していることがわかります。
※2:VieurekaカメラにはCPUが6コア搭載されているため、CPU使用率は最大600%です。

正直、これほど高速化するとは予測していなかったため、期待以上の結果に驚いています。推論モデルの変換前は3秒に1枚しか認識処理が出来ず、実運用でのユースケースが限られていました。しかし、変換後には1秒間に約5枚の認識処理が出来るようになっています。そのため、カメラの前を動き回ったり横切ったりする物体も認識対象になり、用途が広がっています。

今回の検証を通じて、Vieurekaカメラでは、Amazon SageMaker Neoを利用してモデル変換することにより、PyTorchモデルの推論速度を大幅に高速化できることがわかりました。皆さんもこれを機に、PyTorch推論モデル高速化のためにAmazon SageMakar Neo導入を検討されてみてはいかがでしょうか?

弊社はVieurekaパートナーとして、様々なリアル空間のデジタル化に挑戦し、新たな価値創造を目指していきます。


パナソニック システムデザイン株式会社

https://panasonic.co.jp/cns/psd/

ソリューション

ご専門分野: システム開発、サービス開発

問い合わせ先:
 〒222-0033 神奈川県横浜市港北区新横浜3丁目1番9号 アリーナタワー
TEL:(045)471-9160
(Webサイトの問い合わせフォームをご利用ください)
担当:Vieureka推進窓口
専門分野:システム開発、サービス開発