ChatPaper.aiChatPaper

Moltiplicazioni Matriciali Veloci per LLM Quantizzati con Tabella di Ricerca

Fast Matrix Multiplications for Lookup Table-Quantized LLMs

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

Abstract

L'implementazione di modelli linguistici di grandi dimensioni (LLM) è spesso limitata dalla larghezza di banda della memoria, dove il collo di bottiglia principale è il costo del trasferimento dei parametri del modello dalla memoria globale della GPU ai suoi registri. Quando combinati con kernel personalizzati che fondono le operazioni di dequantizzazione e moltiplicazione matriciale (matmul), la quantizzazione solo dei pesi può quindi consentire un'inferenza più rapida riducendo la quantità di movimento di memoria. Tuttavia, lo sviluppo di kernel ad alte prestazioni per LLM con pesi quantizzati presenta sfide significative, specialmente quando i pesi sono compressi in larghezze di bit non uniformemente divisibili (ad esempio, 3 bit) con quantizzazione non uniforme basata su tabelle di ricerca (LUT). Questo articolo descrive FLUTE, un motore flessibile per tabelle di ricerca per LLM quantizzati con LUT, che utilizza una ristrutturazione offline della matrice dei pesi quantizzati per minimizzare le manipolazioni di bit associate all'estrazione, e la vettorizzazione e duplicazione della tabella di ricerca per mitigare i vincoli della larghezza di banda della memoria condivisa. Per dimensioni del batch < 32 e dimensioni del gruppo di quantizzazione di 128 (tipiche nell'inferenza di LLM), il kernel FLUTE può essere da 2 a 4 volte più veloce rispetto ai kernel GEMM esistenti. Come applicazione di FLUTE, esploriamo una semplice estensione alla quantizzazione NormalFloat basata su tabelle di ricerca e la applichiamo per quantizzare LLaMA3 in varie configurazioni, ottenendo prestazioni di quantizzazione competitive rispetto a baseline robuste e un aumento del throughput end-to-end da 1,5 a 2 volte.
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.
PDF133November 28, 2024