FLOPs
FLOPsがAIモデルの計算量を測定する方法を学べます。Ultralytics YOLO26のFLOPsを計算し、Edge AI向けに性能を最適化する方法をご確認ください。
FLOPs、つまり浮動小数点演算数は、機械学習モデルの計算複雑性を測定するために使用される標準的な指標です。具体的には、画像や文章などの単一の入力を処理するためにニューラルネットワークが実行する必要のある数学的計算(主に小数を扱う加算と乗算)の回数を数えます。ディープラーニングの世界では、FLOPsはモデルがどの程度「重い」、つまり計算コストが高いかを推定するための理論的な基準となります。一般に、FLOPsの値が大きいほどモデルは複雑で、実行により多くの処理能力とエネルギーを必要とすることを示し、値が小さいほど効率性を重視して設計された軽量なアーキテクチャであることを示します。
モデル選択におけるFLOPsの役割#
人工知能アプリケーションを開発する際、エンジニアは精度と速度のトレードオフに直面することがよくあります。FLOPsは推論レイテンシのハードウェアに依存しない代替指標として機能するため、あらゆるデバイスでベンチマークを実施しなくても、開発者は異なるアーキテクチャを比較できます。この指標は、特定のデプロイシナリオに適したモデルを選択するうえで不可欠です。例えば、高性能なクラウドコンピューティングサーバーで実験を行う研究者は、効率性よりも精度を優先し、FLOPsの高いモデルを使用する場合があります。一方、エッジAIデバイス向けのシステムを構築するエンジニアは、厳しい電力および熱制限の中でアプリケーションをスムーズに動作させるため、FLOPsの低さを優先する必要があります。
実世界での利用例#
FLOPsがもたらす実際的な影響は、計算リソースが重要な要素となるさまざまな業界で明らかです。
- 自律型ドローン: 農業ロボティクスなどの分野では、カメラを搭載したドローンが作物の健康状態をリアルタイムで分析します。ドローンのバッテリー容量には限りがあるため、消費電力のわずかな違いも重要です。エンジニアは、搭載プロセッサーの電力消費を最小限に抑え、飛行時間と運用範囲を最大化するため、YOLO26のNanoバリアントのようなFLOPsの低いモデルを特に選択します。
- モバイル拡張現実: セキュリティ目的で顔認識を使用したり、ARフィルターを適用したりするスマートフォンアプリケーションは、効率的な処理に大きく依存しています。これらのアプリは、デバイスを過熱させたり、動作を遅延させたりすることなく機能する必要があります。開発者は、SnapdragonシリーズやAppleのAシリーズチップなどのモバイルチップセットの性能に無理なく収まる軽量モデルを選択するため、FLOPsの推定値を使用します。
FLOPsとFLOPS(1秒あたりの浮動小数点演算数)の違い#
「FLOPs」(FLOPの複数形)と「FLOPS」(すべて大文字)を区別することが重要です。見た目はほとんど同じですが、測定する対象は異なります。FLOPs(小文字の「s」)は、モデルが必要とする演算の総 量 を指し、複雑性を静的に測定する指標です。FLOPS(大文字の「S」)は、1秒あたりの浮動小数点演算数を表し、GPUなどのハードウェアの 速度 または処理性能を測定します。FLOPsは車が走行する必要のある距離(実行すべき作業)、FLOPSは車の最高速度(ハードウェアがその作業を実行する能力)と考えることができます。
Pythonで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")効率性を高めるためのFLOPs削減#
モデルをよりデプロイしやすくするため、研究者は精度を大きく損なうことなくFLOPsを削減する複数の手法を使用します。モデルプルーニングでは、ニューラルネットワーク内の重要度が低い接続を削除し、ネットワークを実質的にスリム化します。もう1つの手法は量子化で、計算に使用する数値の精度を下げます(例: 32ビット浮動小数点数から8ビット整数へ)。Ultralytics Platformで利用できるツールは、これらの最適化プロセスを効率化し、TensorRTやOpenVINOなどのターゲットに効率的なモデルをデプロイしやすくします。FLOPsを理解して最適化することで、開発者は高性能で持続可能なAIシステムを構築できます。









