Новый метод ускоряет вывод LLM на GPU до 1.64 раза за счёт разреженных матриц

Исследователи представили новый метод ускорения вывода больших языковых моделей (LLM) на GPU, основанный на работе с разреженными матрицами. В статье, опубликованной на arXiv, описывается подход, который позволяет эффективно использовать разреженность весовых матриц, возникающую после прунинга (прореживания) нейросети.

Проблема заключается в том, что существующие GPU-ядра для умножения разреженных матриц (SpMM) часто не могут превзойти по скорости плотные аналоги при уровне разреженности около 50%, который типичен для сохранения качества модели. Авторы предложили трёхслойный формат хранения матриц, включающий слой Sparse-TC для работы с тензорными ядрами, слой Slot-Filling для сжатия и декодирования на чипе, а также легковесный Residual Layer для корректности вычислений.

На основе этого формата разработано SpMM-ядро, которое совместно использует разреженные тензорные ядра и CUDA-ядра. Это позволяет организовать эффективный конвейер выполнения и перекрывать вычисления на чипе с обращениями к памяти.

Эксперименты показали, что предложенное решение впервые превосходит плотное умножение матриц на современных GPU с высокопропускной памятью (HBM). На уровне ядра ускорение достигает 1.64 раза по сравнению с SpInfer (обладателем лучшей статьи на EuroSys'25), а сквозное ускорение относительно FlashLLM (VLDB'24) составляет до 1.41 раза.

Разработчики опубликовали исходный код метода на GitHub. Метод может быть полезен для снижения затрат на инференс LLM и повышения пропускной способности серверов.

Прунинг весов — перспективная техника сжатия моделей, но её применение на GPU часто ограничено из-за неэффективной работы с разреженными матрицами. Новая работа предлагает практическое решение для ускорения вывода без потери точности.