ChatPaper.aiChatPaper

FlashDecoding++: Inferência Mais Rápida de Modelos de Linguagem de Grande Porte em GPUs

FlashDecoding++: Faster Large Language Model Inference on GPUs

November 2, 2023
Autores: Ke Hong, Guohao Dai, Jiaming Xu, Qiuli Mao, Xiuhong Li, Jun Liu, Kangdi Chen, Hanyu Dong, Yu Wang
cs.AI

Resumo

À medida que os Modelos de Linguagem de Grande Escala (LLMs) se tornam cada vez mais importantes em diversos domínios, os seguintes desafios ainda permanecem sem solução na aceleração da inferência de LLMs: (1) Atualização sincronizada de softmax parcial. A operação de softmax requer uma atualização sincronizada entre cada resultado parcial de softmax, resultando em uma sobrecarga de ~20% para o cálculo de atenção em LLMs. (2) Subutilização da computação de GEMM plana. A forma das matrizes que realizam GEMM na inferência de LLMs é plana, levando à subutilização da computação e a uma perda de desempenho superior a 50% após o preenchimento com zeros em projetos anteriores. (3) Perda de desempenho devido ao fluxo de dados estático. O desempenho do kernel em LLMs depende de diversas características dos dados de entrada, configurações de hardware, etc. Um fluxo de dados único e estático pode levar a uma perda de desempenho de 50,25% para GEMMs de diferentes formas na inferência de LLMs. Apresentamos o FlashDecoding++, um motor de inferência de LLMs rápido que suporta LLMs mainstream e back-ends de hardware. Para enfrentar os desafios mencionados, o FlashDecoding++ propõe de forma criativa: (1) Softmax assíncrono com valor máximo unificado. O FlashDecoding++ introduz uma técnica de valor máximo unificado para diferentes cálculos parciais de softmax, evitando a sincronização. (2) Otimização de GEMM plana com duplo buffer. O FlashDecoding++ aponta que GEMMs planas com diferentes formas enfrentam gargalos variados. Em seguida, técnicas como o duplo buffer são introduzidas. (3) Fluxo de dados heurístico com adaptação de recursos de hardware. O FlashDecoding++ otimiza heuristicamente o fluxo de dados utilizando diferentes recursos de hardware, considerando a dinâmica da entrada. Devido à versatilidade das otimizações no FlashDecoding++, ele pode alcançar acelerações de até 4,86x e 2,18x em GPUs NVIDIA e AMD, respectivamente, em comparação com as implementações do Hugging Face. O FlashDecoding++ também alcança uma aceleração média de 1,37x em relação aos motores de inferência de LLMs state-of-the-art em LLMs mainstream.
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.
PDF373February 7, 2026