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
推論モデルの変換手順は以下の通りです。
- 推論モデルをローカルPC上でOnnx形式に変換(※1)
- 推論モデルをAmazon S3バケットへアップロード
- 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)。
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推進窓口
専門分野:システム開発、サービス開発