FLOPs
FLOPsがどのようにAIモデルの計算複雑性を測定するか学びましょう。Ultralytics YOLO26のFLOPsを計算し、エッジAI向けにパフォーマンスを最適化する方法を発見してください。
FLOPs(Floating Point Operations:浮動小数点演算)は、機械学習モデルの計算複雑性を測定するために使用される標準的な指標です。これは、画像や文章などの単一の入力を処理するためにニューラルネットワークが実行しなければならない数学的計算(主に小数を含む加算と乗算)の数を具体的にカウントします。ディープラーニングの世界において、FLOPsはモデルがどれほど「重い」か、あるいは計算コストが高いかを推定するための理論的な基準として機能します。一般的に、FLOPsのカウントが高いほどモデルは複雑であり、実行により多くの処理能力とエネルギーを必要とすることを示唆します。一方でカウントが低いほど、効率性を重視して設計された軽量なアーキテクチャであることを示します。
Link to this sectionモデル選択におけるFLOPsの役割#
人工知能アプリケーションを開発する際、エンジニアは多くの場合、精度と速度のトレードオフに直面します。FLOPsは推論レイテンシのハードウェア非依存の指標として機能し、開発者がすべての可能なデバイスでベンチマークを取ることなく、異なるアーキテクチャを比較することを可能にします。この指標は、特定のデプロイメントシナリオに適したモデルを選択するために不可欠です。例えば、強力なクラウドコンピューティングサーバーで実験を実行する研究者は、高いFLOPsを持つモデルを利用して、効率性よりも精度を優先する場合があります。逆に、エッジAIデバイス向けに構築するエンジニアは、アプリケーションが厳しい電力制限および熱制限内でスムーズに動作するように、低いFLOPsを優先する必要があります。
Link to this section実社会での応用#
FLOPsの実践的な意味合いは、計算リソースが重要な要素となるさまざまな業界において明らかです。
- 自律型ドローン: 農業ロボットのような分野では、カメラを搭載したドローンがリアルタイムで作物の健全性を分析します。ドローンのバッテリーには制限があるため、わずかな電力消費も重要になります。エンジニアは、オンボードプロセッサへの負荷を最小限に抑え、飛行時間と運用範囲を最大化するために、YOLO26のNanoバリエーションのようにFLOPsが低いモデルを意図的に選択します。
- モバイル拡張現実: セキュリティのために顔認識を使用したり、ARフィルターを適用したりするスマートフォンアプリケーションは、効率的な処理に大きく依存しています。これらのアプリは、デバイスが過熱したりラグが発生したりすることなく機能しなければなりません。開発者はFLOPsの推定値を使用して、SnapdragonシリーズやAppleのAシリーズチップのようなモバイルチップセットの能力内に無理なく収まる軽量なモデルを選択します。
Link to this sectionFLOPs vs. FLOPS(1秒あたりの浮動小数点演算回数)#
「FLOPs」(FLOPの複数形)と「FLOPS」(すべて大文字)を区別することは重要です。これらはほぼ同じに見えますが、測定対象が異なります。FLOPs(小文字の's')は、モデルが必要とする演算の総量を指し、複雑性の静的な尺度です。FLOPS(大文字の'S')は「Floating Point Operations Per Second(1秒あたりの浮動小数点演算回数)」の略であり、GPUなどのハードウェアの速度や性能能力を測定します。FLOPsは車が移動する必要がある距離(実行すべき作業)、FLOPSは車の最高速度(作業を行うためのハードウェアの能力)であると考えてください。
Link to this sectionPythonでのFLOPsの測定#
Pythonを使用して、Ultralyticsモデルの計算コストを簡単に計算できます。これは、ニューラルネットワークがハードウェアの予算内に収まるようにするためのモデル最適化フェーズにおいて特に有用です。以下の例では、YOLO26モデルをロードし、そのFLOPsを測定する方法を示します。
from ultralytics import YOLO
from ultralytics.utils.torch_utils import get_flops
# Load a lightweight YOLO26 model
model = YOLO("yolo26n.pt")
# Calculate and print the model's FLOPs (Billions of operations)
# This gives you a hardware-independent complexity metric
flops = get_flops(model)
print(f"Model FLOPs: {flops:.2f} Billion")Link to this section効率向上のためのFLOPsの削減#
モデルをよりデプロイしやすくするために、研究者は精度を大幅に犠牲にすることなくFLOPsを削減するためのいくつかの技術を使用します。モデルプルーニングでは、ニューラルネットワーク内の重要度の低い接続を削除し、実質的にネットワークをスリム化します。別の技術である量子化では、計算に使用される数値の精度を低下させます(例:32ビット浮動小数点数から8ビット整数へ)。Ultralytics Platformで利用可能なツールは、これらの最適化プロセスを効率化し、TensorRTやOpenVINOなどのターゲットに対して効率的なモデルをより容易にデプロイできるようにします。FLOPsを理解し最適化することで、開発者は強力かつ持続可能なAIシステムを構築できます。






