Ultralytics YOLO27:
インテグレーション

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

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

NUNuvola Ladi6 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を使用したUltralytics YOLOv5のスループット比較

初めて、ディープラーニングのワークロードで、ハードウェアアクセラレーターの複雑さやコストを伴わずに、本番環境のパフォーマンス要件を満たせるようになります。つまり、DeepSparseはGPUのパフォーマンスとソフトウェアのシンプルさを提供します。

  1. 柔軟なデプロイ:任意のハードウェアプロバイダーを使用し、クラウド、データセンター、エッジで一貫して実行できます
  2. 無限のスケーラビリティ:標準のKubernetesで水平スケール、数百コアまで垂直スケール、またはサーバーレスで完全に抽象化できます
  3. 簡単な統合:クリーンなAPIを使用してモデルをアプリケーションに統合し、本番環境で監視できます

コモディティCPUでGPUクラスのパフォーマンスを実現#

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

プルーニングと量子化によるスパース化により、高い精度を維持しながら、ネットワークの実行に必要なサイズと計算量を桁違いに削減できます。DeepSparseはスパース性を認識し、ゼロとの積和演算をスキップして、フォワードパスに必要な計算量を削減します。スパース計算はメモリバウンドであるため、DeepSparseはネットワークを深さ方向に実行し、キャッシュに収まる計算の縦方向のストライプであるTensor Columnsに問題を分割します。

DeepSparseとUltralytics YOLOv5のネットワーク

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

カスタムデータでトレーニングしたUltralytics YOLOv5のスパース版を作成する#

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

DeepSparseでUltralytics YOLOv5をデプロイする#

DeepSparseをインストールする#

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

pip install deepsparse[server,yolo,onnxruntime]

ONNXファイルを収集する#

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

モデルをデプロイする#

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

以下のデプロイ例を試すには、次のコマンドでサンプル画像を取得し、basilica.jpgとして保存します。

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

Python API#

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

Pipelineを作成して推論を実行します。

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

HTTPサーバー#

DeepSparse Serverは、広く利用されているFastAPI WebフレームワークとUvicorn Webサーバー上で動作します。1つのCLIコマンドだけで、DeepSparseを使用したモデルサービスエンドポイントを簡単にセットアップできます。Serverは、Ultralytics YOLOv5による物体検出を含む、DeepSparseの任意のPipelineをサポートしており、エンドポイントに未加工の画像を送信してバウンディングボックスを受け取ることができます。

プルーニング済み・量子化済みYOLOv5sでServerを起動します。

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"]

Annotate CLI#

annotateコマンドを使用して、エンジンに注釈付き写真をディスクへ保存させることもできます。ライブWebカメラ映像に注釈を付けるには、--source 0を試してください!

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

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

Ultralytics YOLOv5で注釈を付けたBasilica

パフォーマンスをベンチマークする#

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

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

バッチ32のパフォーマンス比較#

ONNX Runtimeのベースライン#

バッチ32では、ONNX Runtimeは標準の密なYOLOv5sで毎秒42枚の画像を処理します。

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

DeepSparseの密なモデルでのパフォーマンス#

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

バッチ32では、DeepSparseは標準の密なYOLOv5sで毎秒70枚の画像を処理します。これは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

DeepSparseのスパースモデルでのパフォーマンス#

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

バッチ32では、DeepSparseはプルーニング済み・量子化済みYOLOv5sで毎秒241枚の画像を処理します。これは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

バッチ1のパフォーマンス比較#

DeepSparseは、レイテンシーが重視されるバッチ1のシナリオでも、ONNX Runtimeを上回る高速化を実現できます。

ONNX Runtimeのベースライン#

バッチ1では、ONNX Runtimeは標準の密なYOLOv5sで毎秒48枚の画像を処理します。

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

DeepSparseのスパースモデルでのパフォーマンス#

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

バッチ1では、DeepSparseはプルーニング済み・量子化済みYOLOv5sで毎秒135枚の画像を処理します。これは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項目を処理します。これは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のデプロイを最適化する準備が整いました。

Ultralytics YOLOv5とDeepSparseを始める#

お問い合わせいただくには、コミュニティに参加して、質問やコメントをお寄せください。Ultralytics YOLOv5リポジトリと、YOLOv5のデプロイに関するNeural Magicの完全なドキュメントもご覧ください。

Ultralyticsでは、YOLOv5のような優れたオープンソースツールをすべての人に無料で提供し続けるため、研究開発資金の調達を支援していただく目的で、他のスタートアップと商業的に提携しています。この記事には、提携先へのアフィリエイトリンクが含まれている場合があります。

Explore solutions

航空画像向けコンピュータービジョン

航空画像向けコンピュータービジョン

Ultralytics YOLOを使用して、ドローンや航空画像から農業、水産業、環境モニタリング、保全、地理空間分析向けのリアルタイムなインサイトを生成します。
詳細を見る
航空宇宙におけるコンピュータビジョン

航空宇宙におけるコンピュータビジョン

Ultralytics YOLOモデルを使用して、ビジョンAIを空中モニタリングに導入します。コンピュータビジョンソリューションで、ドローン、航空宇宙ワークフロー、環境保護、および地理空間産業を強力にサポートします。
詳細を見る

Ultralytics YOLOモデルであらゆるサイトを保護します。ビジョンAIは、境界モニタリング、脅威検出、ナンバープレート認識、職場安全をサポートします。
詳細を見る
ロボティクスのコンピュータービジョン

ロボティクスのコンピュータービジョン

Ultralytics YOLOモデルで、よりスマートなマシンを実現します。ロボティクスのVision AIにより、自律ナビゲーション、認識、物体追跡、リアルタイム制御を実現します。
詳細を見る
物流のコンピュータービジョン

物流のコンピュータービジョン

Ultralytics YOLOモデルで物流を効率化します。Vision AIにより、荷物検査、仕分け、車両追跡、倉庫の安全性に関するリアルタイム監視を実現します。
詳細を見る
小売のコンピュータービジョン

小売のコンピュータービジョン

Ultralytics YOLOモデルで小売を再構築します。Vision AIにより、在庫追跡、棚監視、待ち行列管理、より高度な顧客インサイトを実現します。
詳細を見る
ヘルスケア向けコンピュータービジョン

ヘルスケア向けコンピュータービジョン

Ultralytics YOLOモデルでヘルスケアソリューションを構築しましょう。ヘルスケア向けVision AIは、医用画像処理の高速化、より高度な診断、患者モニタリングを実現します。
詳細を見る
製造業向けコンピュータービジョン

製造業向けコンピュータービジョン

Ultralytics YOLOモデルで製造業を最適化しましょう。Vision AIは、品質管理、欠陥検出、PPE遵守、組立ラインの自動化を推進します。
詳細を見る
自動車分野のコンピュータビジョン

自動車分野のコンピュータビジョン

Ultralytics YOLOモデルで自動車分野にコンピュータビジョンを適用します。ビジョンAIにより、道路の安全性、運転支援、車両自動化を向上させ、よりスマートな道路を実現します。
詳細を見る
農業分野のコンピュータビジョン

農業分野のコンピュータビジョン

Ultralytics YOLOモデルでスマート農業にビジョンAIを導入します。作物のモニタリング、家畜の追跡、精密農業を支援し、より高くスマートな収穫量を実現します。
詳細を見る
航空画像向けコンピュータービジョン

航空画像向けコンピュータービジョン

Ultralytics YOLOを使用して、ドローンや航空画像から農業、水産業、環境モニタリング、保全、地理空間分析向けのリアルタイムなインサイトを生成します。
詳細を見る
航空宇宙におけるコンピュータビジョン

航空宇宙におけるコンピュータビジョン

Ultralytics YOLOモデルを使用して、ビジョンAIを空中モニタリングに導入します。コンピュータビジョンソリューションで、ドローン、航空宇宙ワークフロー、環境保護、および地理空間産業を強力にサポートします。
詳細を見る

Ultralytics YOLOモデルであらゆるサイトを保護します。ビジョンAIは、境界モニタリング、脅威検出、ナンバープレート認識、職場安全をサポートします。
詳細を見る
ロボティクスのコンピュータービジョン

ロボティクスのコンピュータービジョン

Ultralytics YOLOモデルで、よりスマートなマシンを実現します。ロボティクスのVision AIにより、自律ナビゲーション、認識、物体追跡、リアルタイム制御を実現します。
詳細を見る
物流のコンピュータービジョン

物流のコンピュータービジョン

Ultralytics YOLOモデルで物流を効率化します。Vision AIにより、荷物検査、仕分け、車両追跡、倉庫の安全性に関するリアルタイム監視を実現します。
詳細を見る
小売のコンピュータービジョン

小売のコンピュータービジョン

Ultralytics YOLOモデルで小売を再構築します。Vision AIにより、在庫追跡、棚監視、待ち行列管理、より高度な顧客インサイトを実現します。
詳細を見る
ヘルスケア向けコンピュータービジョン

ヘルスケア向けコンピュータービジョン

Ultralytics YOLOモデルでヘルスケアソリューションを構築しましょう。ヘルスケア向けVision AIは、医用画像処理の高速化、より高度な診断、患者モニタリングを実現します。
詳細を見る
製造業向けコンピュータービジョン

製造業向けコンピュータービジョン

Ultralytics YOLOモデルで製造業を最適化しましょう。Vision AIは、品質管理、欠陥検出、PPE遵守、組立ラインの自動化を推進します。
詳細を見る
自動車分野のコンピュータビジョン

自動車分野のコンピュータビジョン

Ultralytics YOLOモデルで自動車分野にコンピュータビジョンを適用します。ビジョンAIにより、道路の安全性、運転支援、車両自動化を向上させ、よりスマートな道路を実現します。
詳細を見る
農業分野のコンピュータビジョン

農業分野のコンピュータビジョン

Ultralytics YOLOモデルでスマート農業にビジョンAIを導入します。作物のモニタリング、家畜の追跡、精密農業を支援し、より高くスマートな収穫量を実現します。
詳細を見る
航空画像向けコンピュータービジョン

航空画像向けコンピュータービジョン

Ultralytics YOLOを使用して、ドローンや航空画像から農業、水産業、環境モニタリング、保全、地理空間分析向けのリアルタイムなインサイトを生成します。
詳細を見る
航空宇宙におけるコンピュータビジョン

航空宇宙におけるコンピュータビジョン

Ultralytics YOLOモデルを使用して、ビジョンAIを空中モニタリングに導入します。コンピュータビジョンソリューションで、ドローン、航空宇宙ワークフロー、環境保護、および地理空間産業を強力にサポートします。
詳細を見る

Ultralytics YOLOモデルであらゆるサイトを保護します。ビジョンAIは、境界モニタリング、脅威検出、ナンバープレート認識、職場安全をサポートします。
詳細を見る
ロボティクスのコンピュータービジョン

ロボティクスのコンピュータービジョン

Ultralytics YOLOモデルで、よりスマートなマシンを実現します。ロボティクスのVision AIにより、自律ナビゲーション、認識、物体追跡、リアルタイム制御を実現します。
詳細を見る
物流のコンピュータービジョン

物流のコンピュータービジョン

Ultralytics YOLOモデルで物流を効率化します。Vision AIにより、荷物検査、仕分け、車両追跡、倉庫の安全性に関するリアルタイム監視を実現します。
詳細を見る
小売のコンピュータービジョン

小売のコンピュータービジョン

Ultralytics YOLOモデルで小売を再構築します。Vision AIにより、在庫追跡、棚監視、待ち行列管理、より高度な顧客インサイトを実現します。
詳細を見る
ヘルスケア向けコンピュータービジョン

ヘルスケア向けコンピュータービジョン

Ultralytics YOLOモデルでヘルスケアソリューションを構築しましょう。ヘルスケア向けVision AIは、医用画像処理の高速化、より高度な診断、患者モニタリングを実現します。
詳細を見る
製造業向けコンピュータービジョン

製造業向けコンピュータービジョン

Ultralytics YOLOモデルで製造業を最適化しましょう。Vision AIは、品質管理、欠陥検出、PPE遵守、組立ラインの自動化を推進します。
詳細を見る
自動車分野のコンピュータビジョン

自動車分野のコンピュータビジョン

Ultralytics YOLOモデルで自動車分野にコンピュータビジョンを適用します。ビジョンAIにより、道路の安全性、運転支援、車両自動化を向上させ、よりスマートな道路を実現します。
詳細を見る
農業分野のコンピュータビジョン

農業分野のコンピュータビジョン

Ultralytics YOLOモデルでスマート農業にビジョンAIを導入します。作物のモニタリング、家畜の追跡、精密農業を支援し、より高くスマートな収穫量を実現します。
詳細を見る

AIの未来を一緒に築きましょう!

機械学習の未来への歩みを始めましょう