• 日本語
    • English (英語)
Avinton JapanAvinton JapanAvinton JapanAvinton Japan
  • サービス
    • Avinton Data Platform
    • エッジAIカメラ
      • 自動車ナンバープレート自動認識システム
    • プライベートクラウド
    • AIサービス開発
    • AIカメラ/画像解析無料体験版
  • 最新情報
    • ニュースリリース&イベント情報
    • 技術ブログ&インタビュー
  • アカデミー
    • Avintonアカデミー
    • Academy on Campus
    • Academy with Platform
  • 採用情報
    • Avintonジャパン 採用ページ
    • 求人一覧
    • よくある質問
    • 新卒採用
  • 企業情報
    • 会社概要
    • 代表からご挨拶
    • SDGsへの貢献
  • お問い合わせ
AIモデルの最適化

AIモデルの最適化

By Avinton rk | 技術解説, 技術ブログ&インタビュー | Comments are Closed | 11 7月, 2024 | 1

AIモデルの利用は急速に拡大しており、その多様性もまた増しています。同じアーキテクチャのモデルであっても異なるランタイム環境で実行すると、驚くほどのパフォーマンスの違いが現れることがあります。これは主にモデル変換やランタイム、ハードウェアへの最適化によるものです。

モデル変換とは、同じ機能や結果を提供する異なる形式のAIモデルへの変換を指します。例えば、TensorFlowからONNXへの変換や、PyTorchからTensorRTへの変換などがあります。これは、異なるフレームワークやハードウェアでの利用を可能にするものであり、効率的なリソース利用や高速な推論が期待されます。

しかしながら、同じ結果を返すモデルでも、変換された後の性能は大きく異なることがあります。これは主に、変換後のモデルがオリジナルとは異なる最適化や実装を持っているためです。たとえば、GPUで効率的に動作するモデルが、CPU上で変換された後は遅延が発生し、パフォーマンスが低下することがあります。

過去にあった事例として2022年9月に、画像生成AIのStable DiffusionがTensorFlowとKerasCVによる実装で約30%高速になったという報告がありました。それまでのStable DiffusionはPyTorchベースで実装されており、アーキテクチャを異なるフレームワークに移植したことでこれだけの高速化が達成されたそうです。
参照:https://keras.io/guides/keras_cv/generate_images_with_stable_diffusion/

 

そこで今回はYOLOv8を例に、実際にパフォーマンスを比較してみたいと思います。 モデルはYOLOv8n.ptを使用し、公式ドキュメントを参考にモデルの変換と推論を実行します。

モデルの変換:

1
2
3
4
5
6
7
from ultralytics import YOLO
 
# Load a model
model = YOLO('yolov8n.pt')  # load an official model
 
# Export the model
model.export(format='onnx')

推論:

1
2
3
4
5
6
7
from ultralytics import YOLO
 
# Load a model
model = YOLO('yolov8n.pt')  # load an official model
 
# Predict with the model
results = model('https://ultralytics.com/images/bus.jpg')  # predict on an image

使用したCPU:

Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz

比較した結果

ランタイム

PyTorch(defualt)

ONNX

OpenVINO

TensorFlow

TensorFlow Lite

preprocess(ms)

18.0

22.0

7.2

19.4

21.0

inference(ms)

242.1

158.2

60.5

390.9

233.7

postprocess(ms)

1.9

31.7

2.8

2.7

2.5

※使用したCPUがIntel製のため、macOS用のCoreML、CUDA用TensorRTは未検証
※デフォルトのPyTorchの場合、letterboxと呼ばれる32ピクセルの倍数かつ余計な余白をなるべく作らないように画像サイズを自動で調整されるため、すべてのモデルで640✕640サイズに固定

OpneVINOはIntelが開発・提供しているランタイムであり、Intel製CPUに最適化されているため、今回の検証で最も早い速度を記録しました。
preprocessやpostprocessで差が発生している理由に、numpy ⇔ Tensorといったフォーマットの変換による影響が考えられます。例えば、PyTorchの場合、一部のpreprcessを除くその他の処理をTorch Tensorとして処理されます。OpenVINOの場合は、すべての処理でnumpy配列として処理されます。

この他にもGPUを用いる場合や複数画像で検証する場合、最適化を考慮すべき箇所が増えます。
GPUを用いるとき、前処理の一部をGPUメモリ上で行うように変更することで高速化が可能です。さらに複数の画像をバッチ化して処理することで、1枚の画像を推論するときとほぼ同じ速度で複数の画像を同時に処理することができます。これはCPUよりも並列処理能力の高いGPUを効率的に活用するための最適化ともとれます。

まとめ

AIモデルの最適化は、異なるランタイム環境やハードウェアでの実行において重要な役割を果たします。同じモデルでも、適切な変換や最適化を行うことで性能が大幅に向上する場合があります。例えば、異なるフレームワークやランタイム環境に変換することで、処理速度の改善やリソースの効率的な利用が可能になります。
この比較では、YOLOv8モデルをPyTorchからONNX、OpenVINO、TensorFlow、TensorFlow Liteに変換し、それぞれのランタイム環境での性能を評価しました。その結果、異なるランタイム環境によって処理速度に大きな差が現れることが明らかになりました。特に、Intel製CPU向けに最適化されたOpenVINOが最も高速であることが確認されました。
最適なランタイム環境の選択は、特定のユースケースや利用環境に依存します。また、前処理や後処理のフォーマット変換などの要因も性能に影響を与えることがあります。最終的には、特定のニーズや制約に応じて、最適なランタイム環境を選択することが重要です。

Avintonでは、ITエンジニアリングトレーニングとチームメンバーの継続的な教育に特に重点を置いています。この分野でのスキルの活用、最先端のテクノロジーへの取り組み、国際的なクライアントへのソリューション提供に興味がある場合は、採用情報のページをご覧ください。ご連絡をお待ちしております!

Avintonで働く魅力
機械学習, PyTorch, 技術, YOLOv8

Related Post

  • G検定合格体験記

    G検定合格体験記

    By Avinton rk | Comments are Closed

    Read more

  • Kubernetes入門:初心者からプロフェッショナルへ – 学び方とおすすめリソース

    Kubernetes入門:初心者からプロフェッショナルへ – 学び方とおすすめリソース

    By Avinton rk | Comments are Closed

    Read more

  • deploying-postgresql-operator-in-Kubernetes

    PostgreSQL Operator on Kubernetes

    By Avinton rk | Comments are Closed

    Read more

  • Pytorch Datasets & DataLoaders

    PyTorch – Datasets & DataLoaders

    By Avinton rk | Comments are Closed

    Read more

  • Katib(ハイパーパラメータチューニング)

    By Avinton rk | Comments are Closed

    Read more

採用情報

採用情報

Categories

  • 相互学習
  • 採用
  • 社員インタビュー
  • 学習&資格取得
  • 技術解説
  • イベント告知
  • 学内説明会&講義
  • 産学連携
  • 就職活動
  • イベントレポート
  • その他
  • 技術ブログ&インタビュー
  • mainpage
  • New Graduates Interviews
  • 中途エンジニア
  • カテゴリーなし
  • ニュースリリース&イベント

Avinton SDGs

SDGsへの貢献

Search

タグ

AIエンジニア AI導入 Apatch AvintonAcademy CKA DevOps KiX Kubernetes Notion PM&PMO PyTorch SDGs Innnovation Hub UI YOLOv5 アカウントマネージャー インタビュー インフラエンジニア エッジAIカメラ セキュリティエンジニア ソフトスキル ツール開発 データサイエンティスト ネットワークエンジニア フルスタックエンジニア フロントエンド ベテランエンジニア ボランティア マイクロサービス モーフィング ローカルイベント 中瀬幸子、サーバークラスター 中途採用 人材育成 協働パートナー 国際自動制御連盟 地域創生 基本情報技術者 強化学習 技術 新卒、キャリア 新卒採用 田中研之輔 社会貢献 経団連 顔認証
© 2023 Avinton | All Rights Reserved | プライバシーポリシー
  • サービス
    • Avinton Data Platform
    • エッジAIカメラ
      • 自動車ナンバープレート自動認識システム
    • プライベートクラウド
    • AIサービス開発
    • AIカメラ/画像解析無料体験版
  • 最新情報
    • ニュースリリース&イベント情報
    • 技術ブログ&インタビュー
  • アカデミー
    • Avintonアカデミー
    • Academy on Campus
    • Academy with Platform
  • 採用情報
    • Avintonジャパン 採用ページ
    • 求人一覧
    • よくある質問
    • 新卒採用
  • 企業情報
    • 会社概要
    • 代表からご挨拶
    • SDGsへの貢献
  • お問い合わせ
  • 日本語
    • English (英語)
Avinton Japan