YOLO26の紹介: 次世代のビジョンAI。
Ultralytics
統合

CPU上でGPUクラスのパフォーマンスを実現するNeural MagicのDeepSparseでUltralytics YOLOv5をデプロイ

Neural MagicのDeepSparseを活用し、CPU上でGPUクラスのパフォーマンスを実現することで、Ultralytics YOLOv5モデルのトレーニングとデプロイを強化します。より高速でスケーラブルなYOLOv5のデプロイメントを達成しましょう。

ULUltralyticsチーム
5 min read
Neural MagicのDeepSparseを用いたCPU上でのUltralytics YOLOv5のデプロイ

YOLOv5モデルのトレーニングとデプロイを高速化したいとお考えですか?お任せください!最新のパートナーであるNeural Magicをご紹介します。Neural Magicは、モデルのピークパフォーマンスとワークフローのシンプルさを重視したソフトウェアツールを提供しており、YOLOv5のデプロイプロセスをさらに改善するソリューションを提供するために両社が協力するのは自然な流れです。

DeepSparseは、Neural Magicが提供するCPU向け推論ランタイムです。ニューラルネットワーク内のスパース性(疎性)と低精度演算を活用することで、汎用ハードウェア上で卓越したパフォーマンスを提供します。例えば、ONNX Runtimeのベースラインと比較して、DeepSparseは同一マシン上でYOLOv5sを5.8倍高速化します!

DeepSparseを用いたYOLOv5のスループット比較

ディープラーニングのワークロードにおいて、ハードウェアアクセラレータに伴う複雑さやコストをかけずに、プロダクション環境のパフォーマンス要求を満たすことが初めて可能になりました。簡単に言えば、DeepSparseはGPU並みのパフォーマンスとソフトウェアの簡便さを提供します。

  1. 柔軟なデプロイメント: クラウド、データセンター、エッジを問わず、あらゆるハードウェアプロバイダーで一貫した動作を実現
  2. 無限のスケーラビリティ: 標準的なKubernetesでのスケールアウト、数百コアへの垂直スケーリング、またはサーバーレスによる完全な抽象化が可能
  3. 容易な統合: クリーンなAPIを使用して、アプリケーションへのモデル統合とプロダクション環境でのモニタリングを実現

Link to this section汎用CPU上でGPUクラスのパフォーマンスを実現#

DeepSparseはモデルのスパース性を利用してパフォーマンスの高速化を実現します。

プルーニング(枝刈り)と量子化を通じたスパース化により、高い精度を維持したまま、ネットワーク実行に必要なサイズと計算量を桁違いに削減できます。DeepSparseはスパース性を認識しており、ゼロに対する積和演算をスキップし、フォワードパスにおける計算量を削減します。スパースな計算はメモリバウンドであるため、DeepSparseはネットワークを深さ方向に実行し、キャッシュに収まる「テンソル列(Tensor Columns)」と呼ばれる垂直ストライプ状の計算に分割します。

DeepSparseとUltralytics YOLOv5のネットワーク

圧縮された計算を行い、キャッシュ内で深さ方向に実行されるスパースネットワークにより、DeepSparseはCPU上でGPUクラスのパフォーマンスを実現します!

Link to this sectionカスタムデータでトレーニングされたYOLOv5のスパースバージョンを作成#

Neural MagicのオープンソースモデルリポジトリであるSparseZooには、各YOLOv5モデルの事前スパース化されたチェックポイントが含まれています。Ultralyticsと統合されたSparseMLを使用すれば、単一のCLIコマンドで、カスタムデータに対してスパースチェックポイントのファインチューニングを行うことができます。

Link to this sectionDeepSparseを使用してYOLOv5をデプロイする#

Link to this sectionDeepSparseのインストール#

以下のコマンドを実行してDeepSparseをインストールします。Pythonの仮想環境を使用することを推奨します。

pip install deepsparse[server,yolo,onnxruntime]

Link to this sectionONNXファイルの取得#

DeepSparseは、以下のいずれかの形式で渡されたONNX形式のモデルを受け入れます。

  • ONNXモデルへのローカルパス
  • SparseZoo内のモデルを特定するSparseZooスタブ

標準の密なYOLOv5sと、以下のSparseZooスタブで特定されるプルーニング・量子化済みYOLOv5sを比較します。

zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none
zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none

Link to this sectionモデルのデプロイ#

DeepSparseは、モデルをアプリケーションに統合するための便利なAPIを提供しています。

以下のデプロイ例を試すには、サンプル画像をダウンロードし、次のコマンドでbasilica.jpgとして保存してください。

wget -O basilica.jpg https://raw.githubusercontent.com/neuralmagic/deepsparse/main/src/deepsparse/yolo/sample_images/basilica.jpg

Link to this sectionPython API#

パイプラインはランタイムの前後で前処理と後処理をラップし、DeepSparseをアプリケーションに追加するためのクリーンなインターフェースを提供します。DeepSparseとUltralyticsの統合には、生の画像を受け取ってバウンディングボックスを出力するすぐに使えるパイプラインが含まれています。

パイプラインを作成して推論を実行します。

from deepsparse import Pipeline

# list of images in local filesystem
images = ["basilica.jpg"]

# create Pipeline
model_stub = "zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none"
yolo_pipeline = Pipeline.create(
    task="yolo",
    model_path=model_stub,
)

# run inference on images, receive bounding boxes + classes
pipeline_outputs = yolo_pipeline(images=images, iou_thres=0.6, conf_thres=0.001)
print(pipeline_outputs)

クラウド環境で実行している場合、open-cvがlibGL.so.1を見つけられないというエラーが発生することがあります。Ubuntuで以下を実行するとインストールされます。

apt-get install libgl1-mesa-glx

Link to this sectionHTTPサーバー#

DeepSparse Serverは、人気の高いFastAPIウェブフレームワークとUvicornウェブサーバー上で動作します。単一のCLIコマンドで、DeepSparseを使用したモデルサービスエンドポイントを簡単にセットアップできます。サーバーはYOLOv5を使用した物体検出を含む、DeepSparseのあらゆるパイプラインをサポートしており、エンドポイントに生の画像を送信してバウンディングボックスを受け取ることが可能です。

プルーニング・量子化済みYOLOv5sを使用してサーバーを起動します。

deepsparse.server \
  --task yolo \
  --model_path zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none

Pythonのrequestsパッケージを使用したリクエスト例です。

import requests, json

# list of images for inference (local files on client side)
path = ['basilica.jpg']
files = [('request', open(img, 'rb')) for img in path]

# send request over HTTP to /predict/from_files endpoint
url = 'http://0.0.0.0:5543/predict/from_files'
resp = requests.post(url=url, files=files)

# response is returned in JSON
annotations = json.loads(resp.text)  # dictionary of annotation results
bounding_boxes = annotations["boxes"]
labels = annotations["labels"]

Link to this sectionAnnotate CLI#

annotateコマンドを使用して、エンジンにアノテーション付き写真をディスクに保存させることもできます。--source 0を試して、ライブWebカメラフィードにアノテーションを付けてみてください!

deepsparse.object_detection.annotate --model_filepath zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none --source basilica.jpg

上記のコマンドを実行すると、annotation-resultsフォルダーが作成され、その中にアノテーション付き画像が保存されます。

YOLOv5でアノテーションされたバシリカ

Link to this sectionパフォーマンスのベンチマーク#

DeepSparseのベンチマークスクリプトを使用して、YOLOv5sにおけるDeepSparseのスループットをONNX Runtimeのスループットと比較します。

ベンチマークはAWS c6i.8xlargeインスタンス(16コア)で実行されました。

Link to this sectionバッチサイズ32でのパフォーマンス比較#

Link to this sectionONNX Runtimeのベースライン#

バッチサイズ32において、ONNX Runtimeは標準の密なYOLOv5sで42 images/secを達成します。

deepsparse.benchmark zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none -s sync -b 32 -nstreams 1 -e onnxruntime

Original Model Path: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none Batch Size: 32 Scenario: sync Throughput (items/sec): 41.9025

Link to this sectionDeepSparse(密モデル)のパフォーマンス#

DeepSparseは最適化されたスパースモデルで最高のパフォーマンスを発揮しますが、標準の密なYOLOv5sでも良好な性能を示します。

バッチサイズ32において、DeepSparseは標準の密なYOLOv5sで70 images/secを達成しました。これはORTと比較して1.7倍のパフォーマンス向上です!

deepsparse.benchmark zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none -s sync -b 32 -nstreams 1

Original Model Path: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none Batch Size: 32 Scenario: sync Throughput (items/sec): 69.5546

Link to this sectionDeepSparse(スパースモデル)のパフォーマンス#

モデルにスパース性が適用されると、ONNX Runtimeに対するDeepSparseのパフォーマンス向上はさらに顕著になります。

バッチサイズ32において、DeepSparseはプルーニング・量子化済みYOLOv5sで241 images/secを達成しました。これはORTと比較して5.8倍のパフォーマンス向上です!

deepsparse.benchmark zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none -s sync -b 32 -nstreams 1

Original Model Path: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none Batch Size: 32 Scenario: sync Throughput (items/sec): 241.2452

Link to this sectionバッチサイズ1でのパフォーマンス比較#

DeepSparseは、レイテンシが重視されるバッチサイズ1のシナリオにおいても、ONNX Runtimeに対して高速化を実現できます。

Link to this sectionONNX Runtimeのベースライン#

バッチサイズ1において、ONNX Runtimeは標準の密なYOLOv5sで48 images/secを達成します。

deepsparse.benchmark zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none -s sync -b 1 -nstreams 1 -e onnxruntime

Original Model Path: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/base-none Batch Size: 1 Scenario: sync Throughput (items/sec): 48.0921

Link to this sectionDeepSparse(スパースモデル)のパフォーマンス#

モデルにスパース性が適用されると、ONNX Runtimeに対するDeepSparseのパフォーマンス向上はさらに顕著になります。

バッチサイズ1において、DeepSparseはプルーニング・量子化済みYOLOv5sで135 images/secを達成しました。これはONNX Runtimeと比較して2.8倍のパフォーマンス向上です!

deepsparse.benchmark zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none -s sync -b 1 -nstreams 1

Original Model Path: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned65_quant-none Batch Size: 1 Scenario: sync Throughput (items/sec): 134.9468

c6i.8xlargeインスタンスにはVNNI命令が搭載されているため、重みが4つのブロックでプルーニングされていれば、DeepSparseのスループットをさらに高めることができます。

バッチサイズ1において、DeepSparseは4ブロックプルーニング・量子化済みYOLOv5sで180 items/secを達成しました。これはONNX Runtimeと比較して3.7倍のパフォーマンス向上です!

deepsparse.benchmark zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned35_quant-none-vnni -s sync -b 1 -nstreams 1

Original Model Path: zoo:cv/detection/yolov5-s/pytorch/ultralytics/coco/pruned35_quant-none-vnni Batch Size: 1 Scenario: sync Throughput (items/sec): 179.7375

以上で完了です!DeepSparseを使用してYOLOv5のデプロイメントを最適化する準備が整いました。

Link to this sectionYOLOv5とDeepSparseを使い始める#

私たちに連絡するには、コミュニティに参加して質問やコメントをお寄せください。Ultralytics YOLOv5リポジトリと、YOLOv5をデプロイするためのNeural Magicの全ドキュメントもご確認ください。

Ultralyticsでは、YOLOv5のような優れたオープンソースツールを誰もが無料で利用し続けられるよう、その研究開発資金を調達するために他のスタートアップ企業と商業的なパートナーシップを組んでいます。この記事には、それらのパートナーへのアフィリエイトリンクが含まれている場合があります。

Explore solutions

Real-time AI that works with your team

ロボティクスにおけるAI

Ultralytics YOLOモデルで、よりスマートなマシンを実現しましょう。ロボティクスにおけるビジョンAIは、自律航行、認識、物体追跡、リアルタイム制御を推進します。
詳細はこちら
Real-time AI that works with your team

物流におけるAI

Ultralytics YOLOモデルで物流を効率化しましょう。ビジョンAIにより、荷物の検査、仕分け、車両追跡、リアルタイムの倉庫安全モニタリングが可能になります。
詳細はこちら
Real-time AI that works with your team

小売業界におけるAI

Ultralytics YOLOモデルで小売を再定義しましょう。ビジョンAIは、在庫追跡、棚のモニタリング、キュー管理、そしてより賢明な顧客インサイトを促進します。
詳細はこちら
Real-time AI that works with your team

ヘルスケアにおけるAI

Ultralytics YOLOモデルを使用してヘルスケアソリューションを構築しましょう。ヘルスケア分野におけるビジョンAIは、より高速な医療画像診断、よりスマートな診断、患者モニタリングを推進します。
詳細はこちら
Real-time AI that works with your team

製造におけるAI

Ultralytics YOLOモデルで製造を最適化しましょう。ビジョンAIは、品質管理、欠陥検出、PPEコンプライアンス、組立ラインの自動化を促進します。
詳細はこちら
Real-time AI that works with your operation

自動車におけるAI

Ultralytics YOLOモデルを使用して、自動車分野にコンピュータビジョンを適用しましょう。ビジョンAIは、道路の安全性、運転支援、車両の自動化を向上させ、よりスマートな道路を実現します。
詳細はこちら
Real-time AI tailored to your operation

農業におけるAI

Ultralytics YOLOモデルを使用して、スマート農業にビジョンAIを導入しましょう。作物モニタリング、家畜のトラッキング、精密農業を強化し、より高くスマートな収穫を実現します。
詳細はこちら
Real-time AI that works with your team

ロボティクスにおけるAI

Ultralytics YOLOモデルで、よりスマートなマシンを実現しましょう。ロボティクスにおけるビジョンAIは、自律航行、認識、物体追跡、リアルタイム制御を推進します。
詳細はこちら
Real-time AI that works with your team

物流におけるAI

Ultralytics YOLOモデルで物流を効率化しましょう。ビジョンAIにより、荷物の検査、仕分け、車両追跡、リアルタイムの倉庫安全モニタリングが可能になります。
詳細はこちら
Real-time AI that works with your team

小売業界におけるAI

Ultralytics YOLOモデルで小売を再定義しましょう。ビジョンAIは、在庫追跡、棚のモニタリング、キュー管理、そしてより賢明な顧客インサイトを促進します。
詳細はこちら
Real-time AI that works with your team

ヘルスケアにおけるAI

Ultralytics YOLOモデルを使用してヘルスケアソリューションを構築しましょう。ヘルスケア分野におけるビジョンAIは、より高速な医療画像診断、よりスマートな診断、患者モニタリングを推進します。
詳細はこちら
Real-time AI that works with your team

製造におけるAI

Ultralytics YOLOモデルで製造を最適化しましょう。ビジョンAIは、品質管理、欠陥検出、PPEコンプライアンス、組立ラインの自動化を促進します。
詳細はこちら
Real-time AI that works with your operation

自動車におけるAI

Ultralytics YOLOモデルを使用して、自動車分野にコンピュータビジョンを適用しましょう。ビジョンAIは、道路の安全性、運転支援、車両の自動化を向上させ、よりスマートな道路を実現します。
詳細はこちら
Real-time AI tailored to your operation

農業におけるAI

Ultralytics YOLOモデルを使用して、スマート農業にビジョンAIを導入しましょう。作物モニタリング、家畜のトラッキング、精密農業を強化し、より高くスマートな収穫を実現します。
詳細はこちら
Real-time AI that works with your team

ロボティクスにおけるAI

Ultralytics YOLOモデルで、よりスマートなマシンを実現しましょう。ロボティクスにおけるビジョンAIは、自律航行、認識、物体追跡、リアルタイム制御を推進します。
詳細はこちら
Real-time AI that works with your team

物流におけるAI

Ultralytics YOLOモデルで物流を効率化しましょう。ビジョンAIにより、荷物の検査、仕分け、車両追跡、リアルタイムの倉庫安全モニタリングが可能になります。
詳細はこちら
Real-time AI that works with your team

小売業界におけるAI

Ultralytics YOLOモデルで小売を再定義しましょう。ビジョンAIは、在庫追跡、棚のモニタリング、キュー管理、そしてより賢明な顧客インサイトを促進します。
詳細はこちら
Real-time AI that works with your team

ヘルスケアにおけるAI

Ultralytics YOLOモデルを使用してヘルスケアソリューションを構築しましょう。ヘルスケア分野におけるビジョンAIは、より高速な医療画像診断、よりスマートな診断、患者モニタリングを推進します。
詳細はこちら
Real-time AI that works with your team

製造におけるAI

Ultralytics YOLOモデルで製造を最適化しましょう。ビジョンAIは、品質管理、欠陥検出、PPEコンプライアンス、組立ラインの自動化を促進します。
詳細はこちら
Real-time AI that works with your operation

自動車におけるAI

Ultralytics YOLOモデルを使用して、自動車分野にコンピュータビジョンを適用しましょう。ビジョンAIは、道路の安全性、運転支援、車両の自動化を向上させ、よりスマートな道路を実現します。
詳細はこちら
Real-time AI tailored to your operation

農業におけるAI

Ultralytics YOLOモデルを使用して、スマート農業にビジョンAIを導入しましょう。作物モニタリング、家畜のトラッキング、精密農業を強化し、より高くスマートな収穫を実現します。
詳細はこちら

AIの未来を共に築き上げましょう!

機械学習の未来とともに旅を始めましょう