Quantization-Aware Training (QAT)により、エッジデバイス向けのAIモデルを最適化し、リソースが限られた環境でも高い精度と効率を実現します。
Quantization-Aware Training(QAT)は、以下のようなディープラーニング(DL)モデルを最適化するために使用される強力なテクニックです。 Ultralytics YOLOモデルのようなディープラーニング(DL)モデルを、携帯電話や組み込みシステムのような計算リソースが限られたデバイス上に展開するために最適化するために使用される強力な手法です。標準的なモデルでは、計算に高精度数値(32ビット浮動小数点またはFP32など)を使用することが多く、処理能力とメモリに大きな負荷がかかります。QATは、低精度数(8ビット整数やINT8など)を使用した場合でも優れた性能を発揮できるように学習段階でモデルを準備することで、この要求を軽減し、エッジデバイスにおける 高精度と効率的な性能のギャップを埋めることを目指しています。この最適化は、スマートフォンや IoTセンサーのようなハードウェア上で複雑なAIタスクを直接可能にするために極めて重要です。
モデルが完全に学習された後に量子化する手法とは異なり、QATは量子化効果のシミュレーションを学習プロセスに直接統合する。QATは、学習中にモデル・アーキテクチャ内に「擬似量子化」ノードと呼ばれる操作を導入する。これらのノードは、フォワードパスの間、モデルの重みと活性度に対する低精度(例えばINT8精度)の効果を模倣し、真に量子化されたモデルと同じように値を丸めます。しかし、バックワードパス(バックプロパゲーショ ンを介してモデルが学習する)では、勾配は通常、標準的な高精度浮動小数点 数を使用して計算され、更新が適用されます。これにより、モデルのパラメータは適応し、実際の量子化推論で発生する精度損失に対してロバストに学習することができます。学習中に量子化の影響を「見る」ことで、モデルは、モデルの最適化戦略で議論される重要な側面である、低精度フォーマットでのモデルの展開に関連しがちな精度の低下を最小限に抑えることができます。TensorFlow Liteや PyTorchなどのフレームワークは、QATを実装するためのツールを提供している。
主な違いは、量子化を適用するタイミングにある。モデルの量子化(しばしばPost-Training Quantization (PTQ)と呼ばれる)は、トレーニングが完了した後に、事前にトレーニングされた全精度のモデルを低精度の形式に変換する。PTQは一般的に、再トレーニングや元のトレーニングデータセットへのアクセスを必要としないため、実装が簡単です。しかし、特に物体検出や 画像セグメンテーションのようなタスクを実行する複雑なモデルの場合、モデルの精度が顕著に低下することがあります。これに対してQATは、学習中に量子化をシミュレートするため、モデルの精度低下に対して本質的にロバストになります。その結果、PTQに比べて最終的な量子化モデルの精度が高くなることが多いのですが、より多くの計算資源と 学習データへのアクセスが必要になります。量子化に適したブロックを組み込んだYOLOようなモデルの場合、QATは最小限の精度低下で大きな性能向上をもたらします。
どちらの手法も数値精度を伴いますが、その目的は異なります。混合精度トレーニングは、主に低精度(16ビット浮動小数点またはFP16など)と標準精度(32ビット浮動小数点)のフォーマットを組み合わせて計算と保存に使用することで、トレーニングプロセス自体を高速化し、トレーニング中のメモリ使用量を削減することを目的としています。QATは特に、モデル展開後に低精度整数フォーマット(INT8など)を使用して効率的な推論を行うためにモデルを最適化することに重点を置いている。混合精度は学習時に役立ちますが、QATは、NPU(ニューラル・プロセッシング・ユニット)やTPUなどの量子化された推論ハードウェアの制約下で、最終的なモデルがうまく機能することを保証します。
量子化を考慮したトレーニングは、効率が重要なリソース制約のある環境で高度なAIモデルを展開するために不可欠です。
Ultralytics 、以下のような様々なフォーマットへのモデルのエクスポートをサポートしています。 ONNX, TensorRTなど、QATワークフローと互換性のある様々なフォーマットへのモデルのエクスポートをサポートしており、多様なハードウェアへの効率的なデプロイを可能にしています。QAT に最適化されたモデルは、Ultralytics HUB のようなプラットフォームを使用して管理およびデプロイできます。QAT後に関連するメトリクスを使用してモデル性能を評価することは、精度要件が満たされていることを確認するために不可欠です。