• 大規模言語モデル(LLM)の展開には、メモリ帯域幅の制約による遅延の問題がある
  • 重みのみの量子化を使用して、LLMパラメータを低い精度に圧縮することで、この問題に対処
  • 既存のカーネル(bits and bytes、Marlin、BitBLASなど)は4ビットの量子化に特化しているが、最近の進展ではより柔軟なカーネルが必要とされている

研究者たちは、重みのみの量子化を使用してLLMの展開課題を解決しようとしている。均一量子化は完全精度の重みを低精度の間隔に変換し、非均一な方法(ルックアップテーブル(LUT)量子化)は柔軟性が高い。既存のカーネルは主記憶からオンチップSRAMに量子化重みを移動し、浮動小数点に逆量子化して行列乗算を行うが、LUT-量子化カーネルは性能が低い。SqueezeLLMやNormalFloatのような非均一な方法は、ルックアップテーブルのサイズと量子化の粒度のトレードオフがある。また、非均一に量子化された操作は、浮動小数点演算に最適化されたGPUアクセラレータを利用できない。これは、量子化の利点をハードウェア最適化とバランスよく組み合わせるために、量子化表現を利用してメモリ移動を最小限に抑え、GPUネイティブの浮動小数点行列乗算を行う効率的なカーネルが必要である。

  • FLUTEは、重み量子化LLMの展開において、低ビットと非均一量子化に焦点を当てた柔軟なルックアップテーブルエンジン(FLUTE)を導入する
  • FLUTEは、サブ8ビットの行列の処理、ルックアップテーブルベースの効率的な逆量子化、および小規模バッチと低ビット幅重みのワークロード分配の改善に焦点を当てている
  • FLUTEは、オフライン重みの再構築、効率的な逆量子化のための共有メモリルックアップテーブル、最適化されたワークロード分配のためのStream-Kパーティショニングという3つの主要戦略を通じて、これらの課題を克服している

FLUTEは、LLMの展開において低ビットと非均一量子化の複雑さを効果的に管理し、従来の方法が短所を抱えるシナリオで効率とパフォーマンスを向上させることができる。

元記事: https://www.marktechpost.com/2024/07/26/flute-a-cuda-kernel-designed-for-fused-quantized-matrix-multiplications-to-accelerate-llm-inference/