システムデザイン株式会社の田頭です。弊社はVieurekaチームと共にVieurekaプラットフォーム拡充を進めて、様々なAIフレームワークを活用したアプリケーション開発に挑戦しております。Neoに対応をしています。Neoは、TensorFlowやPyTorchといった各種AIフレームワークモデルを、精度を損なうことなく変換し、ターゲットハードウェア用にモデルを最適化できる、AWSが提供するサービスです。Neoの詳細についてはAWSの公式HPをご覧ください。(https://aws.amazon.com/jp/sagemaker/neo/)前回の記事では、PyTorchの学習済み画像分類モデル(mobilenet_v2)を例にしてPyTorchを利用したアプリケーションの開発方法をご紹介しました。Neoで推論モデルを変換し、その前後での推論速度の変化について確認していきます。Neo:v1.10.0推論モデルの変換手順は以下の通りです。Neoでは、PyTorch推論モデルを直接変換することも可能です。推論モデルをローカルPC上でOnnx形式に変換」します。ローカルPCにPyTorchの実行環境を用意し、下記のコードを実行します。verbose=True)(1行目)学習済み画像分類モデル(mobilenet_v2)をダウンロードしています。(2行目)変換時にモデルをトレースするために使用するダミー入力値を作成しています。(3行目)PyTorchモデルをOnnx形式へ変換しています。S3バケットへアップロード」します。形式の推論モデルを「.tar.gz」形式で圧縮し、S3バケットへアップロードします。Neoで推論モデルを変換」します。SageMakerのページ内からコンパイルジョブの画面を開き、「コンパイルジョブの作成」を行います。データ入力設定:「{“入力名”:[入力形状]}」の形式で設定します。ここで、設定する入力形状とは、Onnxモデルへ変換した際に使用した、トレース用のダミー入力値の形状のことです。機械学習フレームワーク:今回は「ONNX」を選択します。「出力設定」ターゲットプラットフォームを選択します。OS:LINUXを選択。アーキテクト:ARM64を選択。アクセラレータ:GPU処理に最適化したモデルへ変換するために「MALI」を選択。ステータスに「COMPLETED」と表示されると、コンパイルは成功です。今回のコンパイル済みモデルの名前は「mobilenet_v2-LINUX_ARM64_MALI.tar.gz」です。Neoで変換したモデルを動作させ、推論速度の差を検証しました(表1)。Neoで変換することによって、CPU使用率が、約300pt減少していることが分かります(※2)。推論速度は、およそ2.4s短縮しており、約12倍の高速化を実現しています。以上のことから、推論処理がGPUに委譲され、高速に動作していることがわかります。※2:VieurekaカメラにはCPUが6コア搭載されているため、CPU使用率は最大600%です。これほど高速化するとは予測していなかったため、期待以上の結果に驚いています。推論モデルの変換前は3秒に1枚しか認識処理が出来ず、実運用でのユースケースが限られていました。変換後には1秒間に約5枚の認識処理が出来るようになっています。そのため、カメラの前を動き回ったり横切ったりする物体も認識対象になり、用途が広がっています。Neoを利用してモデル変換することにより、PyTorchモデルの推論速度を大幅に高速化できることがわかりました。Neo導入を検討されてみてはいかがでしょうか?弊社はVieurekaパートナーとして、様々なリアル空間のデジタル化に挑戦し、新たな価値創造を目指していきます。(7)最新記事IoTに潜むセキュリティリスクとその被害事例・セキュリティ対策のポイントとは?IoTにおけるセキュリティ対策の課題・問題点とは?起こり得るリスクとセキュリティ対策のポイントIoT機器にもセキュリティ対策が必要?セキュリティ対策の手順やポイントは?AIとIoTの違いと関係性とは?それぞれの意味や役割、効率的に活用するための注意点についてエッジコンピューティングの活用例は?導入・運用する上で注意しておきたいポイントも解説エッジコンピューティングとは?メリット・デメリット・代表的な活用例などをわかりやすく解説!IoTにおけるエッジコンピューティングとは?その特徴や課題について解説IoTデバイスとは?IoTデバイスによって取得できる情報や活用の具体例を紹介へのご相談お見積もりや製品導入についてお気軽にお問い合わせください。