Квантование llama.cpp Q8_0 получает ускорение в 3.1 раза на видеокартах Intel Arc благодаря исправлению переупорядочивания в SYCL.

Исправление для оптимизации производительности SYCL-бэкенда llama.cpp обеспечивает значительное ускорение работы Q8_0-квантованных моделей на видеокартах Intel Arc. Исправление устраняет проблему с паттерном доступа к памяти, которая ограничивала производительность Q8_0 всего 21% от теоретической пропускной способности.
Проблема производительности и её причина
На видеокарте Intel Arc Pro B70 с 32 ГБ GDDR6 и пропускной способностью 608 ГБ/с модели Q8_0 работали со скоростью всего 4,88 токенов/сек, в то время как Q4_K_M достигала 20,56 токенов/сек. Этот 4-кратный разрыв в производительности был неожиданным, учитывая, что Q8_0 содержит всего в 1,7 раза больше данных, чем Q4_K_M.
После исключения проблем с давлением на видеопамять, драйверами и самим бэкендом, расследование выявило узкое место в пути диспетчеризации SYCL-ядра llama.cpp. SYCL-бэкенд включает оптимизацию "reorder", которая разделяет коэффициенты масштабирования квантования и данные весов для согласованного доступа к памяти GPU. Эта оптимизация была реализована для квантований Q4_0, Q4_K и Q6_K, но Q8_0 так и не был добавлен в фреймворк reorder.
Блоки Q8_0 размером 34 байта (не являющиеся степенью двойки) делали нереорганизованный макет особенно неэффективным для производительности кэша GPU.
Исправление и результаты
Решение потребовало около 200 строк кода для расширения существующего фреймворка reorder для поддержки Q8_0. Самая критическая ошибка заключалась в одной строке: тензорам Q8_0 не выделялась структура "extra" во время инициализации буфера, из-за чего флаг reorder никогда не устанавливался.
Результаты для Qwen3.5-27B (Intel Arc Pro B70):
- Q8_0 до исправления: 4,88 т/с (21% пропускной способности)
- Q8_0 после исправления: 15,24 т/с (66% пропускной способности) — в 3,1 раза быстрее
- Q4_K_M: 20,12 т/с (без изменений)
- Q6_K: 13,83 т/с (без reorder)
С этим исправлением Q8_0 теперь превосходит Q6_K (15,24 против 13,83 токенов/сек), обеспечивая при этом более высокое качество, чем низкобитные квантования.
Проверка и реализация
Перед внедрением исправления команда применила бинарный патч к закрытому исходному коду Intel IPEX-LLM для запуска на GPU B70 (который официально не поддерживается по его PCI device ID). Их оптимизированные ядра Q8_0 достигли 61% пропускной способности, подтвердив, что проблема решаема. Реализация с открытым исходным кодом в llama.cpp достигает 66% пропускной способности.
Исправление было отправлено в виде pull request в репозиторий llama.cpp.
📖 Read the full source: r/LocalLLaMA
👀 Смотрите также

OpenClaw: Погрузитесь в первый AMA на r/clawdbot
В увлекательной сессии AMA команда OpenClaw обсудила будущее ИИ-кодирующих агентов на Reddit в разделе r/clawdbot. Узнайте ключевые идеи и выводы из этого интерактивного события.

Claude Code v2.1.136: Жёсткий запрет для автоматического режима, исправления MCP OAuth и 40+ исправлений ошибок
Anthropic выпустила Claude Code v2.1.136 с настройкой hard_deny для правил классификатора в автоматическом режиме, исправлениями исчезновения MCP-сервера после /clear, проблем с параллельным обновлением OAuth-токенов и более чем 40 другими исправлениями.

OpenClaw предоставляет разработчикам возможности с ИИ-агентами, в то время как GethCity внедряет инновации с помощью мыслящих сетей.
OpenClaw запускает сервис AI-агентов, делая кодирование быстрее и эффективнее, в то время как GethCity представляет сеть, имитирующую человеческие мыслительные процессы. Узнайте об инновациях, которые движут автоматизацией.

Claude Opus 4.6 ломает загрузку файлов из CLAUDE.md
Пользователи сообщают, что Claude Opus 4.6 больше не загружает автоматически файлы, указанные в CLAUDE.md, требуя ручного вмешательства.