SVDQuant: Absorção de Outliers por Componentes de Baixa Posto para Modelos de Difusão de 4 Bits
SVDQunat: Absorbing Outliers by Low-Rank Components for 4-Bit Diffusion Models
November 7, 2024
Autores: Muyang Li, Yujun Lin, Zhekai Zhang, Tianle Cai, Xiuyu Li, Junxian Guo, Enze Xie, Chenlin Meng, Jun-Yan Zhu, Song Han
cs.AI
Resumo
Os modelos de difusão demonstraram ser altamente eficazes na geração de imagens de alta qualidade. No entanto, à medida que esses modelos aumentam em tamanho, exigem significativamente mais memória e sofrem com maior latência, representando desafios substanciais para sua implantação. Neste trabalho, visamos acelerar os modelos de difusão quantizando seus pesos e ativações para 4 bits. Nesse nível agressivo, tanto os pesos quanto as ativações são altamente sensíveis, tornando insuficientes os métodos convencionais de quantização pós-treinamento para grandes modelos de linguagem, como o *smoothing*. Para superar essa limitação, propomos o SVDQuant, um novo paradigma de quantização de 4 bits. Diferente do *smoothing*, que redistribui *outliers* entre pesos e ativações, nossa abordagem absorve esses *outliers* usando um ramo de baixa *rank*. Primeiro, consolidamos os *outliers* deslocando-os das ativações para os pesos e, em seguida, empregamos um ramo de baixa *rank* de alta precisão para absorver os *outliers* dos pesos usando a Decomposição em Valores Singulares (SVD). Esse processo facilita a quantização em ambos os lados. No entanto, executar o ramo de baixa *rank* de forma independente de forma ingênua incorre em sobrecarga significativa devido ao movimento extra de dados das ativações, anulando a aceleração da quantização. Para resolver isso, co-projetamos um motor de inferência, o Nunchaku, que funde os *kernels* do ramo de baixa *rank* naqueles do ramo de baixos bits para eliminar o acesso redundante à memória. Ele também pode suportar perfeitamente *adaptadores de baixa rank* (LoRAs) prontos para uso sem a necessidade de re-quantização. Experimentos extensivos com SDXL, PixArt-Sigma e FLUX.1 validam a eficácia do SVDQuant na preservação da qualidade da imagem. Reduzimos o uso de memória para os modelos FLUX.1 de 12B em 3,5 vezes, alcançando uma aceleração de 3,0 vezes em relação à linha de base quantizada apenas em peso de 4 bits na GPU laptop 4090 de 16 GB, pavimentando o caminho para aplicações mais interativas em PCs. Nossa biblioteca de quantização e motor de inferência são de código aberto.
English
Diffusion models have been proven highly effective at generating high-quality
images. However, as these models grow larger, they require significantly more
memory and suffer from higher latency, posing substantial challenges for
deployment. In this work, we aim to accelerate diffusion models by quantizing
their weights and activations to 4 bits. At such an aggressive level, both
weights and activations are highly sensitive, where conventional post-training
quantization methods for large language models like smoothing become
insufficient. To overcome this limitation, we propose SVDQuant, a new 4-bit
quantization paradigm. Different from smoothing which redistributes outliers
between weights and activations, our approach absorbs these outliers using a
low-rank branch. We first consolidate the outliers by shifting them from
activations to weights, then employ a high-precision low-rank branch to take in
the weight outliers with Singular Value Decomposition (SVD). This process eases
the quantization on both sides. However, na\"{\i}vely running the low-rank
branch independently incurs significant overhead due to extra data movement of
activations, negating the quantization speedup. To address this, we co-design
an inference engine Nunchaku that fuses the kernels of the low-rank branch into
those of the low-bit branch to cut off redundant memory access. It can also
seamlessly support off-the-shelf low-rank adapters (LoRAs) without the need for
re-quantization. Extensive experiments on SDXL, PixArt-Sigma, and FLUX.1
validate the effectiveness of SVDQuant in preserving image quality. We reduce
the memory usage for the 12B FLUX.1 models by 3.5times, achieving
3.0times speedup over the 4-bit weight-only quantized baseline on the 16GB
laptop 4090 GPU, paving the way for more interactive applications on PCs. Our
quantization library and inference engine are open-sourced.