Как обновление llama.cpp ускорило генерацию в 2.4 раза и вернуло к жизни риг на RTX 3090

ED
Редакция
|
Как обновление llama.cpp ускорило генерацию в 2.4 раза и вернуло к жизни риг на RTX 3090

Проблема (Дано)

Тяжелые локальные модели — это всегда боль. Когда я запускал Qwen3.6 27B или 35B-A3B (MoE) на своем риге из нескольких RTX 3090 или на рабочей станции со Strix Halo, я постоянно упирался в низкий tok/s. Ждать ответа приходилось мучительно долго. Более того, при попытке выжать максимум из фермы на четырех RTX 3090, у меня просто выбивало пробки из-за ограничения в 200W на одну линию! Работать с такими задержками и ограничениями по питанию было невозможно, и мне срочно нужно было решение для ускорения вывода без потери качества.

Процесс решения

В середине мая в ветку mainline llama.cpp (PR #22673) наконец-то добавили поддержку MTP speculative decoding. Я сразу понял, что этот кейс нужно протестировать в боевых условиях.

Как я использовал этот инструмент? Все оказалось до смешного просто. Достаточно было обновить сборку и добавить при запуске два флага: `--spec-type draft-mtp` и `--spec-draft-n-max N`.

Чтобы выжать максимум, я стал подбирать идеальное значение `N`. Мой реальный опыт показал, что для RTX 3090 без жестких лимитов питания (на 450W) идеально заходит n=2 (в квантовании Q4). А вот для урезанной по питанию 3090 и для Strix Halo лучше всего отработал параметр n=3.

Что важно: выходной текст оставался побайтово идентичным базовому при тех же сиде и температуре. То есть ускорение достигалось не за счет "отупления" модели.

Результаты

Мой отзыв — это просто отвал башки. Вот конкретные результаты, которые я получил (медиана из 5 прогонов):

Для Qwen3.6 27B:

  • Strix Halo (Q8_0): скорость взлетела с 7.4 до 18.1 tok/s (ускорение в 2.44×)
  • Strix Halo (Q4_K_M): с 11.7 до 21.2 tok/s (1.81×)
  • Dual RTX 3090 (слои разбиты, Q8_0): с 25.7 до 55.9 tok/s (2.17×)
  • Single RTX 3090 (450W, Q4_K_M): с 38.7 до 59.5 tok/s (1.54×)
  • Для MoE-модели Qwen3.6 35B-A3B цифры скромнее, так как при генерации токена задействуются лишь ~3B параметров из 35B (форвард-пасс и так дешевый):

  • Strix Halo: с 49.5 до 69.4 tok/s (1.40×)
  • RTX 3090: с 120.0 до 148.3 tok/s (1.24×)
  • Дополнительно, когда я решил проблему с розеткой и поднял лимиты питания с 200W до 350-450W, плотные модели на 27-32B получили дополнительный буст от +70% до +113%.

    Выводы

    Стоит ли включать MTP? Абсолютно! Этот реальный опыт доказал, что пара простых флагов дает бесплатный буст производительности до 2.44×. Если вы гоняете локальные LLM на карточках вроде RTX 3090 или сидите на Strix Halo, это мастхэв, который экономит кучу времени и нервов.

    ED

    Редакция Tech-Hub

    Мы пишем о самых свежих новостях из мира искусственного интеллекта, гаджетов и программирования. Наша цель — сделать сложные технологии понятными.