инструменты 1 мин

Разработчик выжал 543 токена в секунду из Qwen-35B на одной RTX 5090

Энтузиаст собрал с нуля свой inference-движок NInfer, специально заточенный под Qwen3.6-35B-A3B, и добился ~543 токенов/сек на одной RTX 5090 при генерации 65K токенов. Это достигнуто кастомной квантизацией (~5 bpw), ручной оптимизацией ядер CUDA, fusion'ом операций и draft-механизмом для LM head. Код и веса открыты, но движок работает только с двумя точными чекпоинтами Qwen и только на RTX 5090.

Это наглядная демонстрация, что при глубокой оптимизации одна потребительская GPU способна генерировать сотни токенов в секунду из 35B-модели — скорость, которую раньше давал только дорогой кластер. Для локального inference и on-device AI это показывает новый потолок возможного.

Экстремальная оптимизация inference на одной GPU

Разработчик под ником FormOne2615 представил NInfer — полностью переписанный с нуля C++/CUDA inference-движок, заточенный под две модели: Qwen3.6-27B и Qwen3.6-35B-A3B. Главное достижение — 542,8 токена/сек на одной RTX 5090 при генерации полных 65 536 токенов (максимальный длинный reasoning).

Что под капотом

Цель проекта — узнать, насколько быстрым может быть inference, если полностью оптимизировать pipeline под конкретную модель и конкретное железо. Автор применил:

  • Кастомную квантизацию: ~5 bpw (16,3 GB для 27B, 20,8 GB для 35B-A3B)
  • Ручную оптимизацию CUDA-ядер для каждой операции
  • Kernel fusion (слияние операций)
  • Специализированный draft-механизм для LM head (MTP, multi-token prediction)
  • Redesign layout весов под архитектуру GPU

В итоге на смешанных нагрузках (код, перевод, структурированный вывод) скорость колеблется от 395 до 661 токенов/сек в зависимости от типа задачи. Structured output бьёт рекорд — 661 токенов/сек при 87% acceptance rate draft-токенов.

Результаты и ограничения

Для Qwen3.6-27B скорость на long-reasoning — 174 токена/сек (dense-модель медленнее MoE). Движок поддерживает текст, изображения, видео (OpenAI/Anthropic API), prefix caching, INT8 KV-cache до полных 262K токенов контекста.

Но есть жёсткие лимиты:

  • Работает только с двумя точными чекпоинтами Qwen
  • Только RTX 5090 (sm_120a)
  • Нет continuous batching (пока)

Автор открыто бросает вызов: «Покажите мне другой движок, который выдаст такие же или лучшие цифры на той же железке и модели».

Качество не пострадало

Бенчмарки на AIME25/26 и GPQA-Diamond показывают, что квантизация не убила способности: 27B-версия набирает 26-28/30 на AIME, 35B-A3B — 27/30, GPQA-Diamond ~169-172/198.

Вывод: NInfer — proof-of-concept, что глубокая end-to-end оптимизация может выжать из одной карты производительность, недостижимую для универсальных движков. Но за это платишь гибкостью — engine жёстко привязан к модели и GPU.

Ключевые выводы

  • End-to-end оптимизация (квантизация, kernel fusion, draft MTP) выдавливает ~540 tok/s из 35B MoE-модели на одной RTX 5090 — это рекорд для single-GPU inference
  • Специализация под конкретную модель и железо даёт кратный прирост скорости, но убивает универсальность — движок работает только с двумя чекпоинтами Qwen
  • MTP (multi-token prediction) draft с acceptance rate 73-87% — ключевой драйвер скорости на structured output и reasoning-задачах
  • Квантизация ~5 bpw позволяет втиснуть 35B-модель в 32 GB VRAM и сохранить качество на уровне AIME 27/30 и GPQA 169/198
  • Отсутствие continuous batching — сознательный trade-off: проект про максимальную скорость single-request, а не про throughput

Автор: Юлия Тарасова · Источник: reddit.com

Мнение редакции

**Это хардкорный инженерный стант, и он реально впечатляет.** FormOne2615 не просто накрутил флаги компилятора — он переписал весь pipeline с нуля, заточил каждое CUDA-ядро под Qwen и RTX 5090, добавил multi-token prediction draft и выжал из одной карты то, что обычные движки типа vLLM или llama.cpp не дают даже близко. 543 токена/сек на 35B MoE при генерации 65K токенов — это мощно.

**Но есть нюанс:** это не production-ready инструмент, а proof-of-concept. Только два чекпоинта, только одна GPU-архитектура, нет батчинга. Если завтра выйдет Qwen4 или Llama 4, придётся переписывать всё заново. Зато это наглядно показывает, куда может зайти оптимизация, когда ты не гонишься за универсальностью. Для тех, кто запускает inference локально и готов пожертвовать гибкостью ради скорости — это must-see. Для остальных — интересный benchmark, но не решение «из коробки».

Ещё по теме

Комментарии