ChatPaper.aiChatPaper

FlashDecoding++: Ускорение вывода больших языковых моделей на графических процессорах

FlashDecoding++: Faster Large Language Model Inference on GPUs

November 2, 2023
Авторы: Ke Hong, Guohao Dai, Jiaming Xu, Qiuli Mao, Xiuhong Li, Jun Liu, Kangdi Chen, Hanyu Dong, Yu Wang
cs.AI

Аннотация

По мере того как крупные языковые модели (LLM) становятся все более важными в различных областях, остаются нерешенными следующие задачи, связанные с ускорением вывода LLM: (1) Синхронизированное частичное обновление softmax. Операция softmax требует синхронизированного обновления между каждым частичным результатом softmax, что приводит к накладным расходам около 20% для вычисления внимания в LLM. (2) Недостаточное использование вычислений в плоских операциях GEMM. Форма матриц, выполняющих GEMM в выводе LLM, является плоской, что приводит к недостаточному использованию вычислений и потере производительности более чем на 50% из-за добавления нулей в предыдущих разработках. (3) Потери производительности из-за статического потока данных. Производительность ядра в LLM зависит от различных характеристик входных данных, конфигураций оборудования и т.д. Единый и статический поток данных может привести к потере производительности на 50,25% для GEMM различных форм в выводе LLM. Мы представляем FlashDecoding++, быстрый механизм вывода LLM, поддерживающий основные LLM и аппаратные платформы. Для решения вышеуказанных задач FlashDecoding++ предлагает следующие инновационные подходы: (1) Асинхронный softmax с унифицированным максимальным значением. FlashDecoding++ вводит технику унифицированного максимального значения для различных частичных вычислений softmax, чтобы избежать синхронизации. (2) Оптимизация плоских GEMM с двойной буферизацией. FlashDecoding++ указывает, что плоские GEMM различных форм сталкиваются с разными узкими местами. Затем применяются такие техники, как двойная буферизация. (3) Эвристический поток данных с адаптацией к аппаратным ресурсам. FlashDecoding++ эвристически оптимизирует поток данных, используя различные аппаратные ресурсы с учетом динамики входных данных. Благодаря универсальности оптимизаций в FlashDecoding++, он может достичь ускорения до 4,86x и 2,18x на GPU NVIDIA и AMD по сравнению с реализациями Hugging Face. FlashDecoding++ также обеспечивает среднее ускорение в 1,37x по сравнению с современными механизмами вывода LLM на основных LLM.
English
As the Large Language Model (LLM) becomes increasingly important in various domains. However, the following challenges still remain unsolved in accelerating LLM inference: (1) Synchronized partial softmax update. The softmax operation requires a synchronized update operation among each partial softmax result, leading to ~20% overheads for the attention computation in LLMs. (2) Under-utilized computation of flat GEMM. The shape of matrices performing GEMM in LLM inference is flat, leading to under-utilized computation and >50% performance loss after padding zeros in previous designs. (3) Performance loss due to static dataflow. Kernel performance in LLM depends on varied input data features, hardware configurations, etc. A single and static dataflow may lead to a 50.25% performance loss for GEMMs of different shapes in LLM inference. We present FlashDecoding++, a fast LLM inference engine supporting mainstream LLMs and hardware back-ends. To tackle the above challenges, FlashDecoding++ creatively proposes: (1) Asynchronized softmax with unified max value. FlashDecoding++ introduces a unified max value technique for different partial softmax computations to avoid synchronization. (2) Flat GEMM optimization with double buffering. FlashDecoding++ points out that flat GEMMs with different shapes face varied bottlenecks. Then, techniques like double buffering are introduced. (3) Heuristic dataflow with hardware resource adaptation. FlashDecoding++ heuristically optimizes dataflow using different hardware resource considering input dynamics. Due to the versatility of optimizations in FlashDecoding++, FlashDecoding++ can achieve up to 4.86x and 2.18x speedup on both NVIDIA and AMD GPUs compared to Hugging Face implementations. FlashDecoding++ also achieves an average speedup of 1.37x compared to state-of-the-art LLM inference engines on mainstream LLMs.
PDF373December 15, 2024