Model Quantization
モデル量子化がUltralytics YOLO26をエッジAI向けに最適化する方法を学びます。メモリとレイテンシを削減し、より高速な推論のためにINT8モデルをエクスポートする方法を解説します。
モデル量子化は、ディープラーニングモデルの実行にかかる計算コストとメモリコストを削減するために使用される、高度なモデル最適化技術です。標準的なトレーニングワークフローでは、ニューラルネットワークは通常、パラメーター(重みとバイアス)やアクティベーションマップを32ビット浮動小数点数(FP32)で格納します。この高い精度によりトレーニング中の計算精度は確保されますが、推論では不要な場合がよくあります。量子化では、これらの値を16ビット浮動小数点数(FP16)や8ビット整数(INT8)などの低精度形式に変換し、精度を大きく損なうことなく、モデルサイズを効果的に縮小して実行速度を向上させます。
量子化が重要な理由#
量子化を推進する主な要因は、リソースに制約のあるハードウェア上で高性能なAIをデプロイする必要性です。YOLO26のようなコンピュータービジョンモデルが複雑になるにつれて、必要な計算量は増加します。量子化は、次の3つの重要なボトルネックに対処します。
- メモリフットプリント: 重みのビット幅を削減することで(32ビットから8ビットなど)、モデルに必要なストレージ容量を最大4分の1に削減できます。これは、アプリケーションサイズに制約があるモバイルアプリにとって重要です。
- 推論レイテンシ: 低精度の演算は計算コストが低くなります。特に専用のニューラルプロセッシングユニット(NPUs)を搭載した最新のプロセッサーは、FP32よりもINT8演算をはるかに高速に実行できるため、推論レイテンシを大幅に短縮できます。
- 消費電力: メモリを介して転送するデータ量を減らし、より単純な算術演算を実行することで、消費エネルギーが減少し、ポータブルデバイスや自律走行車のバッテリー駆動時間を延ばせます。
関連概念との比較#
量子化は他の最適化技術とは異なる方法でモデルを変更するため、両者を区別することが重要です。
- 量子化とプルーニング: 量子化ではパラメーターのビット幅を下げてファイルサイズを縮小しますが、モデルプルーニングでは不要な接続(重み)を完全に削除してスパースネットワークを作成します。プルーニングはモデルの構造を変更する一方、量子化はデータ表現を変更します。
- 量子化と知識蒸留: 知識蒸留は、小さな「生徒」モデルが大きな「教師」モデルを模倣するように学習するトレーニング技術です。量子化は、エッジAIの性能をさらに高めるため、蒸留後の生徒モデルに適用されることがよくあります。
実世界での利用例#
量子化により、効率性が極めて重要なさまざまな業界でコンピュータービジョンとAIを利用できるようになります。
-
自律システム: 自動車業界では、自動運転車がカメラやLiDARからの視覚データをリアルタイムで処理する必要があります。NVIDIA TensorRTエンジンにデプロイされた量子化モデルにより、これらの車両はミリ秒単位のレイテンシで歩行者や障害物を検出し、乗員の安全を確保できます。
-
スマート農業: マルチスペクトルカメラを搭載したドローンは、量子化された物体検出モデルを使用して、作物の病気を特定したり、生育段階を監視したりします。これらのモデルをドローンの組み込みシステム上でローカルに実行することで、遠隔地の農地で信頼性の低い携帯電話回線に依存する必要がなくなります。
Ultralyticsでの量子化の実装#
Ultralyticsライブラリはエクスポートプロセスを簡素化し、開発者が最先端のYOLO26などのモデルを量子化形式に変換できるようにします。Ultralytics Platformには、これらのデプロイメントをシームレスに管理するためのツールも用意されています。
次の例では、INT8量子化を有効にしてモデルをTFLiteにエクスポートする方法を示します。このプロセスにはキャリブレーションステップが含まれます。このステップでは、モデルがサンプルデータを観測し、量子化された値に最適なダイナミックレンジを決定します。
from ultralytics import YOLO
# Load a standard YOLO26 model
model = YOLO("yolo26n.pt")
# Export to TFLite format with INT8 quantization
# The 'int8' argument triggers Post-Training Quantization
# 'data' provides the calibration dataset needed for mapping values
model.export(format="tflite", int8=True, data="coco8.yaml")最適化されたモデルは、ONNXのような相互運用可能な標準や、OpenVINOのような高性能推論エンジンを使用して頻繁にデプロイされ、多様なハードウェアエコシステム間で幅広い互換性を確保します。









