FLOPs(浮動小数点演算)は、機械学習(ML)モデル、特にディープラーニングにおける計算複雑性の基本的な指標です。これは、モデルの1回のフォワード・パス(通常は推論中)に必要な浮動小数点演算(加算、減算、乗算、除算など)の総数を定量化したものです。FLOPを理解することは、モデルの効率を評価し、異なるアーキテクチャを比較し、強力なクラウドサーバーからリソースに制約のあるエッジデバイスまで、さまざまなハードウェアプラットフォームに対するモデルの適合性を判断する上で極めて重要です。
FLOPとは何か?
浮動小数点演算とは、小数点以下の数値(浮動小数点数)を含む数学的計算のことである。ニューラルネットワーク(NN)では、これらの演算は畳み込みや完全接続層などの層で広範囲に発生する。FLOPは、1つの入力(例えば画像)を処理するのに必要なこれらの演算の総数を測定する。
最新のディープラーニング・モデルではこのような演算が何十億回と行われるため、FLOPsはしばしばギガFLOPs(GFLOPs、数十億FLOPs)やテラFLOPs(TFLOPs、数兆FLOPs)で表される。FLOPs(総演算、計算負荷の尺度)とFLOPS(1秒あたりの浮動小数点演算、GPU能力のようなハードウェア処理速度の尺度)を混同しないことが重要です。モデルの複雑さを評価する文脈では、「FLOPs」はほとんどの場合、総演算回数を指します。
AIと機械学習における関連性
FLOPは、AIモデルの計算コストを見積もるための、ハードウェアにとらわれない重要な指標となる。その関連性の主な側面は以下の通りである:
FLOPsと関連概念
FLOPを他の一般的な指標と区別することは有益である:
- FLOPs対パラメータ:パラメータ(またはモデルの重み)の数は、メモリストレージの観点からモデルのサイズを示します。FLOPsは、モデルを実行するための計算コストを測定します。モデルは、パラメータが多いがFLOPsが低い場合(例えば、重みがまばらに使用されている場合)、またはパラメータが少ないがFLOPsが高い場合(例えば、パラメータごとに多くの演算を伴う場合)があります。どちらの指標も効率を評価する上で重要である。例えば、YOLOv9は、いくつかの先行技術と比較して、比較的少ないパラメータとFLOPで高い精度を達成する技術を導入した。
- FLOPsと推論速度:FLOPsは理論的な計算量を表すのに対し、推論速度(多くの場合、Frames Per Second(FPS)または推論あたりのミリ秒単位で測定される)は、特定のハードウェア上で実際に測定された性能である。メモリ帯域幅、ソフトウェアスタック(PyTorch, TensorFlow)、量子化、バッチサイズなどの要素が、実際の速度に大きく影響する。レイテンシ対スループットの最適化は、FLOPsだけでなく、実用的なパフォーマンスをどのように調整できるかを示している。
- FLOPsとMACs/MACCの比較:Multiply-Accumulate Operations(MACsまたはMACC)は、畳み込みニューラルネットワーク(CNN)で一般的な、乗算と加算を融合した演算の数を数える。MACは通常、乗算と加算を1回ずつ行うため、2FLOPと概算されることが多い。研究論文やモデルカードの中には、FLOPsの代わりにMACsを報告するものもある。両者はおよそ2倍異なるため、どちらの指標を使用しているかを確認することは極めて重要です。この違いを理解することが、報告された計算コストに基づいてモデルを比較する際の鍵となります。
応用と実例
FLOPは様々なAIやMLの文脈で広く使われている:
- エッジ展開のためのモデル選択:スマートセキュリティカメラを開発しているある企業は、処理能力が限られたエッジデバイスで効率的に動作する物体検出モデルを必要としています。彼らは、異なるサイズのUltralytics YOLO (例えば、YOLO11nとYOLO11s)を含む複数のモデルを比較しました。各モデルで報告されているFLOPs(Ultralytics YOLO11 ドキュメントにあるようなもの)を調べることで、デバイスの計算予算(ハードウェアFLOPSで測定)を考慮した上で、レイテンシー要件を満たす最大のモデルを選択することができます。YOLO11nのようなFLOPsの低いモデルは、有力な候補です。
- 新しいアーキテクチャのベンチマーク新しいコンピュータビジョンアーキテクチャを開発する研究者は、その効率性を実証する必要があります。COCOのような標準的なベンチマークデータセット上で、モデルの精度(例えばmAP)とGFLOPsを比較します。彼らは、既存の最先端モデル(EfficientNetや様々なYOLO バージョンなど)と共に、精度対FLOPsのグラフ上にモデルをプロットし、改善されたトレードオフを示します。YOLOv9対YOLOXのような多くのモデル比較ページでは、重要な比較ポイントとしてFLOPsが使用されています。
FLOPの計算と見積もり
FLOPは通常、モデルのアーキテクチャをレイヤーごとに分析し、入出力の次元とレイヤーのタイプ(畳み込み、完全接続など)に基づいて各レイヤーに必要な演算を合計することで計算される。fvcoreやディープラーニングフレームワークの組み込みプロファイラなど、さまざまなツールやライブラリが、この計算の自動化や見積もりに役立ちます。入力解像度は、多くのビジョンモデルのFLOP数に大きく影響します。
制限事項
便利ではあるが、FLOPには限界がある:
- これらは、重要なボトルネックとなりうるメモリ・アクセス・コスト(MAC)を考慮していない。
- オペレーションで可能な並列性の程度を把握していないのだ。
- 実際の性能は、ハードウェア固有の最適化と、基盤となるソフトウェア・ライブラリ(cuDNN、Intel MKL)の効率に大きく依存する。
- ある種の演算(例えばReLUのような活性化関数)はFLOP数が少ないが、それでもレイテンシに影響を与える可能性がある。
したがって、FLOPsは、モデル効率の全体像を把握するために、他の性能指標、パラメータ、および実世界のベンチマークと一緒に考慮する必要があります。Ultralytics HUBのようなツールは、モデルを管理し、開発および展開中のさまざまなパフォーマンス側面を追跡するのに役立ちます。