llama.cppのリリースb12073では、VulkanでNVFP4データからUE4M3のスケール値を参照する際のバグが修正された。特定のスケール値では、共有メモリ上のルックアップテーブルの範囲外を読み取る可能性があった。テーブルは128件だった一方、元のバイト値は256通りを表せるためだ。
修正ではテーブルとメモリ割り当てを256件分に拡張した。各NVFP4パイプラインで共有メモリを512 bytes多く使用する。リリースノートによると、llama.cppで量子化されたモデルには影響しない。変換コードが、範囲外参照を引き起こすビットを設定しないためだ。
なぜ重要か
VulkanでNVFP4の処理を実行する場合、範囲外参照が起きないよう保護される。一方、リリースノートによると、llama.cppで量子化されたモデルはこのバグの影響を受けない。