llama.cpp b9931リリースは、パフォーマンスを向上させるためにパディング済みエキスパートタイルをスキップするMixture of Experts (MoE) prefillのOpenCL最適化を導入しました。

  • この最適化はトークンをTILESIZE_N=32のper-expertタイルにグループ化し、タイルの上位16スロットがすべてパディングの場合、2番目のdotx16_reduce8ハーフをスキップします。
  • これは2つのhalf-tile dotx16_reduce8呼び出しを4つのdotx8_reduce4呼び出しに置き換え、空の後続スキップグループの独立したスキップを可能にします。
  • この機能はGGML_OPENCL_MOE_RAGGED_GRAN環境変数によって制御され、それぞれ四分、半分、オフの粒度に対して値8、16、32を受け入れます。
  • リリースにはmacOS (Apple SiliconとIntel)、Linux (CPU、Vulkan、ROCm、OpenVINO、SYCL)、Android、Windows (CPU、CUDA、Vulkan、OpenVINO、SYCL、HIP)、openEulerのバイナリが含まれています。

この最適化により、ユーザーは新しい環境変数設定を通じてMoEモデルのパディングデータでの計算を削減できます。