記事検索

検索ワードを入力してください。
Sky Tech Blog
ルーフラインモデルに​ついての​ご紹介

ルーフラインモデルに​ついての​ご紹介

ルーフラインモデルは、AIモデルやGPUの並列処理の性能を可視化する手法で、演算性能やメモリ帯域幅を基にアプリケーションの特性を評価します。メモリ律速と演算律速の概念を用いて、性能の制約要因を明確にします。

はじめに

こんにちは!
今日は、ルーフラインモデル(モデルの性能を可視化する手法/考え方)について、紹介いたします。

ルーフラインモデルとは

ルーフラインモデルは、AIモデル等のアプリケーションやGPUの並列処理のプロセス等の性能を見るために使用されるモデルです。 一般的には以下のような図で表されます。 ※簡易的に分かりやすくした図です。正確な内容等は書籍などをご参考ください。

用語は以下の通りです。

  • 演算性能:単位時間あたりの演算回数
  • 演算強度:1データに対しての演算回数
  • メモリ帯域幅:単位時間あたりに転送できるデータ量(メモリ⇔プロセッサ)
  • FLOPS:1秒間あたりの浮動小数点演算回数
  • FLOPs:総浮動小数点演算回数(FLOPSとややこしいので注意)

メモリ律速、​演算律速とは

ルーフラインモデルを扱う上で重要なのがメモリ律速/演算律速という概念です。

演算強度が小さい場合、1データに対する演算量は少ないため、多くのデータの演算を行うことができます。 ただし、メモリから演算器へ転送できるデータ量はハードウェアのメモリ帯域幅に依存しています。 このため、演算器側で演算が終わっていたとしても、データ転送待ちが発生する場合があります。 このデータの転送待ちが発生している状態を、アプリケーションの性能がメモリに制限されていることから、メモリ律速(英語ではmemory bound)といいます。 ルーフラインモデル上で斜めの部分にプロットされた場合は、メモリ律速です。

これに対して、演算強度が大きい場合、1データに対する演算量が大きいため、データ転送が間に合い、フルで演算器を動かすことができます。 この状態を、アプリケーションの性能が演算器の性能に制限されることから、演算律速(英語ではcompute bound)といいます。 ルーフラインモデルの並行になっている部分にプロットされた場合は、演算律速です。

ルーフラインモデルで​見る​CNN

イメージがしにくいと思うので、実際にCNNのルーフラインモデルの例を見てみましょう 下記はCNNの各モデルをルーフラインモデルにプロットした結果です。

引用:(PDF) Theoretical Scalability Analysis of Distributed Deep Convolutional Neural Networks

この図だとほとんどのモデルが演算律速であることが分かります。 Inception v3は、最後の方で畳み込みレイヤーのサイズやカーネル数が小さくなるため、メモリ律速となりがちなようです。

ルーフラインモデルで​見る​LLM

次にLLMのルーフラインモデルの例です。 Context StageがLLMへの入力に対して処理している部分、 Generation Stageが、入力に対してトークンを1つずつ生成している部分です。

引用: [2306.00978] AWQ: Activation-aware Weight Quantization for LLM Compression and Acceleration

Generation Stageはメモリ律速であることが分かります。 LLMでは自己回帰的に次のトークンを生成する都合上、並列実行ができないため、Generation Stageではメモリ律速になりやすいようです。 よくLLMを高速化するために重みだけを量子化するケースがありますが、これは重みを量子化することで、演算器に転送するデータ量が減り、データの転送待ちが軽減されるためです。

※ちなみに、多くの演算器は同じ精度(FP16とFP16、FP4とFP4等)の計算しか受け付けていないため、重みのみを量子化では、量子化した重みを演算前に逆量子化することになります。

最後に

以上のように、ルーフラインモデルにプロットすることによって、モデルや処理によってどういった特性を持つか確認できることが分かりました。 nsight compute等のプロファイリングツールでは、自分で実装したカーネルをルーフラインモデル上で確認することができます。 是非活用してみてはいかがでしょうか? 以上、ルーフラインモデルのご紹介でした。


\シェアをお願いします!/
  • X
  • Facebook
  • LINE
キャリア採用募集中!

入社後にスキルアップを目指す若手の方も、ご自身の経験を幅広いフィールドで生かしたいベテランの方も、お一人おひとりの経験に応じたキャリア採用を行っています。

Sky株式会社のソフトウェア開発や製品、採用に関するお問い合わせについては、下記のリンクをご確認ください。
お問い合わせ
ホーム