Проблема фрагментации семплирования
Генерация текста в больших языковых моделях (LLM) — это не просто выбор следующего токена. Это сложный комбинаторный процесс, включающий обработку логитов, фильтрацию (top-k, top-p, min-p), применение штрафов (repetition, frequency penalties), логит-байес и верификацию при спекулятивном декодировании. Существующие реализации часто ускоряют только подмножество этих операций или полагаются на множественные запуски ядер (kernel launches). Это создает узкие места, особенно при динамическом обслуживании запросов (dynamic serving), где поведение семплирования различается для каждого запроса в батче, что делает невозможным эффективное использование CUDA Graph.
Решение: SonicSampler
Команда разработчиков (Pragaash Ponnusamy, Shivam Sahni, Jue Wang, Tri Dao) представила SonicSampler — унифицированный набор «плиточных» (tile-aware) ядер на базе Triton. Главная инновация заключается в вертикальном слиянии (vertical fusion) всего пайплайна семплирования в единую, адаптированную к рабочей нагрузке модель выполнения. Это позволяет обрабатывать гетерогенные запросы в одном батче, сохраняя полную совместимость с CUDA Graph.
Ядро поддерживает:
- Грамматически ограниченное декодирование (grammar-constrained decoding);
- Динамические штрафы и логит-байес;
- Фильтрацию top-k / top-p / min-p;
- Спекулятивную верификацию.
Ключевые метрики производительности
Центральным элементом алгоритма стала новая иерархическая двухэтапная версия алгоритма top-k. Она использует низкую энтропию выходов LLM для эффективного выбора токенов в огромных словарях. Результаты бенчмарков демонстрируют прорывные показатели:
| Метрика | Ускорение (Speedup) | Сравнение с |
|---|---|---|
| Выбор токенов (Top-k selection) | до 10x | Конкурентные базовые реализации |
| Спекулятивное декодирование (Speculative Decoding) | до 16x | State-of-the-art решения |
Почему это важно
Для индустрии AI-инференса SonicSampler закрывает критическую проблему неэффективности этапа семплирования. Возможность объединить все операции в одно ядро без потери гибкости (поддержка разных параметров для разных запросов в батче) означает, что провайдеры LLM-сервисов смогут значительно снизить задержки (latency) и увеличить пропускную способность (throughput) своих кластеров GPU, особенно в сценариях с высокими нагрузками и спекулятивным декодированием.
Источник: arXiv cs.AI ↗
