Оптимизация бэкенда OpenVINO в llama.cpp b11374: фьюзинг MoE на Intel Arc GPU¶
5.0/10
В релизе llama.cpp b11374 бэкенд OpenVINO обновлен до версии 2026.4.1 с добавлением сквозного фьюзинга MoE-маршрутизации (включая объединенные веса gate/up), кэширования скомпилированных графов и поддержки квантования q4_asym64. На видеокарте Intel Arc B390 при инференсе gemma-4-26B-A4B (с опцией GGML_OPENVINO_REQUANT_KQUANT=q4_asym64_all) скорость обработки промпта pp512 выросла с 66.16 до 1608.73 ток/с при неизменной перплексии, устранив просадки производительности от разрозненных GEMV-операций. Дополнительно реализовано опциональное стейтфул-исполнение (GGML_OPENVINO_STATEFUL_EXECUTION=1), ускоряющее декодирование tg128 до 29.91 ток/с, и исправлена работа с памятью USM на платформах Intel.
Механизм оптимизации¶
Паттерн FuseMoeCompressedFusedGateUp распознает цепочку вычислений с упакованными весами gate и up, объединяя ее в оператор MOECompressed (GEMM3_SWIGLU с GEGLU_ERF) и выполняя срез квантованных весов, шкал и смещений прямым копированием байтов без сбоев StridedSlice на суббайтовых типах. Выходное масштабирование экспертов перед весами роутера математически точно сворачивается прямо в веса маршрутизации, что устраняет необходимость в отдельных вызовах GatherMatmul для каждого токена.
Прирост эффективности¶
Фьюзинг MoE сократил TTFT и ускорил обработку контекста из 512 токенов более чем в 24 раза (с 66.16 до 1608.73 ток/с), а стейтфул-режим повысил темп декодирования на Intel Arc B390 с 25.94 до 29.91 ток/с.