Four Over Six — NVFP4量子化を改善するAdaptive Block Scaling
概要
本リポジトリ「fouroversix」は、論文 “Four Over Six: More Accurate NVFP4 Quantization with Adaptive Block Scaling” の実装コードを収めたものです。目的はNVidiaの4ビット浮動小数点(NVFP4)量子化における精度低下を抑えつつ、効率的な推論を実現することです。リポジトリは、NVFP4への高速なポストトレーニング量子化(PTQ)処理と、量子化表現を利用した高速な行列乗算カーネルを提供します。Adaptive Block Scalingというキーアイディアにより、重みや活性化をブロック単位でスケーリングして表現レンジを最適化し、量子化による誤差を低減します。
リポジトリの統計情報
- スター数: 11
- フォーク数: 0
- ウォッチャー数: 11
- コミット数: 3
- ファイル数: 11
- メインの言語: Python
主な特徴
- NVFP4(NVIDIA 4-bit FP)フォーマット向けの効率的な量子化カーネルと行列乗算カーネルを含む。
- Adaptive Block Scaling によるブロック単位スケーリングで量子化誤差を低減。
- ポストトレーニング量子化(PTQ)を速く簡便に行えるワークフローを提供。
- 軽量で実験的な実装により、論文結果の再現や改良のベースとして利用可能。
技術的なポイント
本プロジェクトの中心的な技術は「NVFP4量子化」と「Adaptive Block Scaling」にあります。NVFP4は4ビットの浮動小数点表現(NVIDIAが提案/利用する低精度FP形式)で、極めて限られたビット幅で数値範囲を表現するため、モデルの重みや活性化を直接このフォーマットに落とすと精度が大きく劣化することが知られています。Adaptive Block Scalingはこの問題に対する現実的な対策です。大まかな流れは次のとおりです。
- ブロック化: 大きな行列(例えば重み行列)を複数の小さなブロックに分割する。各ブロックは局所的に値の分布が似ていることが多く、スケール調整の有効性が高い。
- ブロック毎のスケーリング係数算出: 各ブロックの統計(最大値や分位点、二乗平均など)に基づいて最適スケールを決定し、値をスケーリングしてNVFP4が表現しやすいレンジへマップする。
- 量子化とデスケーリングの組込み: スケーリングをかけた後にNVFP4へ量子化し、行列乗算時に逆スケールを適用するか、カーネル内でスケーリングを吸収して精度を回復する。これによりエンドツーエンドの精度低下を抑える。
- 高速カーネル: スケーリングやNVFP4フォーマットを前提にした専用の行列乗算カーネルを用意することで、量子化後のモデルでも高いスループットを実現する。カーネルはGPU上での効率的なビットパッキングやSIMD処理を想定している(リポジトリには効率的なカーネルの実装が含まれる旨が記載されています)。
さらに、この手法は「ポストトレーニング量子化(PTQ)」に適しており、事前に大規模な再学習を行わずに学習済みモデルを低ビット実行に移行できます。実装面ではPythonのユーティリティと、効率化のための低レベルカーネル(C/C++やCUDAの可能性)を組み合わせ、実験や既存モデルへの適用を容易にしています。論文とともにカーネルコードが提供されているため、実際の推論環境での速度・精度トレードオフを評価しやすい点もポイントです。
プロジェクトの構成
主要なファイルとディレクトリ:
- .github: dir
- .gitignore: file
- .gitmodules: file
- LICENSE.md: file
- README.md: file
…他 6 ファイル
(READMEにはセットアップや簡単な使用例、論文リンク(arXiv:2512.02010)および説明図が含まれています。)
まとめ
NVFP4の実用性を高める実験実装で、PTQ環境での低ビット推論研究に有用。
リポジトリ情報:
- 名前: fouroversix
- 説明: Code for the paper “Four Over Six: More Accurate NVFP4 Quantization with Adaptive Block Scaling”
- スター数: 11
- 言語: Python
- URL: https://github.com/mit-han-lab/fouroversix
- オーナー: mit-han-lab
- アバター: https://avatars.githubusercontent.com/u/39571499?v=4
READMEの抜粋:
Four Over Six (4/6)
A method for improving the accuracy of NVFP4 quantization with Adaptive Block Scaling.
This repository contains kernels for efficient NVFP4 quantization and matrix multiplication, and fast post-training quantization with our method, 4/6. If you have any questions, please get in touch or submit an issue.
Setup
git clone --de...