ChatPaper.aiChatPaper

Multiplicaciones Rápidas de Matrices para LLMs Cuantificados con Tablas de Búsqueda.

Fast Matrix Multiplications for Lookup Table-Quantized LLMs

July 15, 2024
Autores: Han Guo, William Brandon, Radostin Cholakov, Jonathan Ragan-Kelley, Eric P. Xing, Yoon Kim
cs.AI

Resumen

La implementación de modelos de lenguaje grandes (LLMs, por sus siglas en inglés) suele estar limitada por el ancho de banda de memoria, donde el cuello de botella principal es el costo de transferir los parámetros del modelo desde la memoria global de la GPU a sus registros. Al combinar esto con núcleos personalizados que fusionan las operaciones de descuantificación y multiplicación de matrices, la cuantificación solo de pesos puede permitir una inferencia más rápida al reducir la cantidad de movimiento de memoria. Sin embargo, desarrollar núcleos de alto rendimiento para LLMs cuantificados por pesos presenta desafíos sustanciales, especialmente cuando los pesos se comprimen a anchos de bits no uniformemente divisibles (por ejemplo, 3 bits) con cuantificación de tabla de búsqueda no uniforme. Este artículo describe FLUTE, un motor de tabla de búsqueda flexible para LLMs cuantificados por LUT, que utiliza una reestructuración offline de la matriz de pesos cuantificados para minimizar las manipulaciones de bits asociadas con el desempaquetado, y la vectorización y duplicación de la tabla de búsqueda para mitigar las restricciones de ancho de banda de memoria compartida. Con tamaños de lote < 32 y un tamaño de grupo de cuantificación de 128 (típico en la inferencia de LLM), el núcleo FLUTE puede ser de 2 a 4 veces más rápido que los núcleos GEMM existentes. Como aplicación de FLUTE, exploramos una extensión simple a la cuantificación NormalFloat basada en tabla de búsqueda y la aplicamos para cuantificar LLaMA3 en varias configuraciones, obteniendo un rendimiento de cuantificación competitivo frente a bases sólidas y un aumento de rendimiento de extremo a extremo de 1.5 a 2 veces.
English
The deployment of large language models (LLMs) is often constrained by memory bandwidth, where the primary bottleneck is the cost of transferring model parameters from the GPU's global memory to its registers. When coupled with custom kernels that fuse the dequantization and matmul operations, weight-only quantization can thus enable faster inference by reducing the amount of memory movement. However, developing high-performance kernels for weight-quantized LLMs presents substantial challenges, especially when the weights are compressed to non-evenly-divisible bit widths (e.g., 3 bits) with non-uniform, lookup table (LUT) quantization. This paper describes FLUTE, a flexible lookup table engine for LUT-quantized LLMs, which uses offline restructuring of the quantized weight matrix to minimize bit manipulations associated with unpacking, and vectorization and duplication of the lookup table to mitigate shared memory bandwidth constraints. At batch sizes < 32 and quantization group size of 128 (typical in LLM inference), the FLUTE kernel can be 2-4x faster than existing GEMM kernels. As an application of FLUTE, we explore a simple extension to lookup table-based NormalFloat quantization and apply it to quantize LLaMA3 to various configurations, obtaining competitive quantization performance against strong baselines while obtaining an end-to-end throughput increase of 1.5 to 2 times.

Summary

AI-Generated Summary

PDF123November 28, 2024