Modellkomprimierungs-Toolbox für große Sprachmodelle und Diffusionsmodelle
[2024/11] ? Unsere neueste W4A4- Diffusionsmodell-Quantisierungsarbeit, der SVDQuant- Algorithmus und das Nunchaku -System, werden öffentlich veröffentlicht! Schauen Sie sich unser Papier an!
[2024/05] ? Unsere neueste W4A8KV4 LLM-Quantisierungsarbeit, der QoQ -Algorithmus und das QServe- System, werden öffentlich veröffentlicht! QoQ ist die Abkürzung für quattuor-octō-quattuor, was im Lateinischen 4-8-4 bedeutet. Schauen Sie sich unser Papier an!
DeepCompressor ist eine Open-Source-Toolbox zur Modellkomprimierung für große Sprachmodelle und Diffusionsmodelle auf Basis von PyTorch. DeepCompressor unterstützt derzeit gefälschte Quantisierung mit jedem Ganzzahl- und Gleitkomma-Datentyp innerhalb von 8 Bits, z. B. INT8, INT4 und FP4_E2M1. Hier sind Beispiele, die die folgenden Algorithmen implementieren.
Quantisierung nach dem Training für große Sprachmodelle:
QoQ (W4A8KV4)
SmoothQuant (W8A8)
AWQ (W4A16)
GPTQ (W4A16)
Quantisierung nur nach Gewicht
Gewichtsaktivierungsquantisierung
Gewichtsaktivierung und KV-Cache-Quantisierung
Quantisierung nach dem Training für Diffusionsmodelle:
SVDQuant (W4A4)
Gewichtsaktivierungsquantisierung
DeepCompressor enthält auch Beispiele, die sich in andere Inferenzbibliotheken integrieren lassen.
Stellen Sie mit TinyChat nur gewichtete quantisierte LLMs bereit
Stellen Sie quantisierte LLMs mit QServe bereit
Stellen Sie quantisierte Diffusionsmodelle mit Nunchaku bereit
Klonen Sie dieses Repository und navigieren Sie zum Deepcompressor-Ordner
git clone https://github.com/mit-han-lab/deepcompressor cd deepcompressor
Paket installieren
conda env create -f environment.yml poetry install
[Website][Papier][Nunchaku-Inferenzsystem]
Diffusionsmodelle haben sich bei der Erzeugung hochwertiger Bilder als äußerst effektiv erwiesen. Wenn diese Modelle jedoch größer werden, benötigen sie deutlich mehr Speicher und leiden unter einer höheren Latenz, was die Bereitstellung vor erhebliche Herausforderungen stellt. In dieser Arbeit wollen wir Diffusionsmodelle beschleunigen, indem wir ihre Gewichte und Aktivierungen auf 4 Bit quantisieren. Auf einem so aggressiven Niveau reagieren sowohl Gewichtungen als auch Aktivierungen sehr empfindlich, sodass herkömmliche Quantisierungsmethoden nach dem Training für große Sprachmodelle wie Glättung nicht mehr ausreichen. Um diese Einschränkung zu überwinden, schlagen wir SVDQuant vor, ein neues 4-Bit-Quantisierungsparadigma. Anders als beim Glätten, bei dem Ausreißer zwischen Gewichtungen und Aktivierungen neu verteilt werden, absorbiert unser Ansatz diese Ausreißer mithilfe eines Zweigs mit niedrigem Rang. Wir konsolidieren zunächst die Ausreißer, indem wir sie von Aktivierungen auf Gewichtungen verschieben, und verwenden dann einen hochpräzisen Zweig mit niedrigem Rang, um die Gewichtsausreißer mit Singular Value Decomposition (SVD) zu erfassen. Dieser Vorgang erleichtert die Quantisierung auf beiden Seiten. Das naive unabhängige Ausführen des Zweigs mit niedrigem Rang verursacht jedoch aufgrund der zusätzlichen Datenbewegung von Aktivierungen einen erheblichen Overhead, wodurch die Quantisierungsbeschleunigung zunichte gemacht wird. Um dieses Problem anzugehen, entwickeln wir gemeinsam eine Inferenz-Engine Nunchaku , die die Kernel des Zweigs mit niedrigem Rang mit denen des Zweigs mit niedrigem Bit zusammenführt, um redundanten Speicherzugriff zu unterbinden. Es kann auch handelsübliche Low-Rank-Adapter (LoRAs) nahtlos unterstützen, ohne dass eine Neuquantisierung erforderlich ist. Umfangreiche Experimente mit SDXL, PixArt-∑ und FLUX.1 bestätigen die Wirksamkeit von SVDQuant bei der Erhaltung der Bildqualität. Wir reduzieren die Speichernutzung für die 12B FLUX.1-Modelle um das 3,5-fache und erreichen damit eine 3,0-fache Beschleunigung gegenüber der 4-Bit-gewichteten quantisierten Basislinie auf der 16-GB-Laptop-4090-GPU und ebnen so den Weg für interaktivere Anwendungen auf PCs.
Unten ist die Qualität und Ähnlichkeit anhand von 5000 Proben aus dem MJHQ-30K-Datensatz bewertet. IR bedeutet ImageReward. Unsere 4-Bit-Ergebnisse übertreffen andere 4-Bit-Basislinien und bewahren effektiv die visuelle Qualität von 16-Bit-Modellen.
Modell | Präzision | Verfahren | FID ( | IR ( | LPIPS ( | PSNR( |
---|---|---|---|---|---|---|
FLUX.1-dev (50 Schritte) | BF16 | -- | 20.3 | 0,953 | -- | -- |
INT W8A8 | Unsere | 20.4 | 0,948 | 0,089 | 27.0 | |
W4A16 | NF4 | 20.6 | 0,910 | 0,272 | 19.5 | |
INT W4A4 | Unsere | 19.86 | 0,932 | 0,254 | 20.1 | |
FP W4A4 | Unsere | 21.0 | 0,933 | 0,247 | 20.2 | |
FLUX.1-schnell (4 Schritte) | BF16 | -- | 19.2 | 0,938 | -- | -- |
INT W8A8 | Unsere | 19.2 | 0,966 | 0,120 | 22.9 | |
W4A16 | NF4 | 18.9 | 0,943 | 0,257 | 18.2 | |
INT W4A4 | Unsere | 18.4 | 0,969 | 0,292 | 17.5 | |
FP W4A4 | Unsere | 19.9 | 0,956 | 0,279 | 17.5 | |
FP16 | -- | 16.6 | 0,944 | -- | -- | |
PixArt-Sigma (20 Schritte) | INT W8A8 | ViDiT-Q | 15.7 | 0,944 | 0,137 | 22.5 |
INT W8A8 | Unsere | 16.3 | 0,955 | 0,109 | 23.7 | |
INT W4A8 | ViDiT-Q | 37.3 | 0,573 | 0,611 | 12.0 | |
INT W4A4 | Unsere | 20.1 | 0,898 | 0,394 | 16.2 | |
FP W4A4 | Unsere | 18.3 | 0,946 | 0,326 | 17.4 |
[Website][Papier][QoQ-Algorithmuscode][QServe GPU-System]
Die Quantisierung kann die Inferenz großer Sprachmodelle (LLM) beschleunigen. Über die INT8-Quantisierung hinaus erforscht die Forschungsgemeinschaft aktiv noch geringere Präzision, wie beispielsweise INT4. Dennoch beschleunigen hochmoderne INT4-Quantisierungstechniken nur die Low-Batch-Edge-LLM-Inferenz und liefern keine Leistungssteigerungen bei der Cloud-basierten LLM-Bereitstellung mit großen Batches. Wir decken ein kritisches Problem auf: Bestehende INT4-Quantisierungsmethoden leiden unter einem erheblichen Laufzeitaufwand (20–90 %), wenn sie entweder Gewichte oder Teilsummen auf GPUs dequantisieren . Um dieser Herausforderung zu begegnen, führen wir QoQ ein, einen W4A8KV4-Quantisierungsalgorithmus mit 4-Bit-Gewicht, 8-Bit-Aktivierung und 4-Bit-KV-Cache. QoQ steht für quattuor-octo-quattuor , was im Lateinischen 4-8-4 bedeutet. QoQ wird durch die QServe- Inferenzbibliothek implementiert, die eine messbare Beschleunigung erreicht. Die wichtigste Erkenntnis von QServe ist, dass die Effizienz der LLM-Bereitstellung auf GPUs entscheidend von Vorgängen auf CUDA-Kernen mit niedrigem Durchsatz beeinflusst wird. Aufbauend auf dieser Erkenntnis führen wir im QoQ-Algorithmus eine progressive Quantisierung ein, die einen geringen Dequantisierungsaufwand in W4A8 GEMM ermöglichen kann. Darüber hinaus entwickeln wir SmoothAttention, um die durch die 4-Bit-KV-Quantisierung verursachte Genauigkeitsverschlechterung effektiv zu mildern. Im QServe-System führen wir eine rechenbewusste Neuordnung der Gewichtung durch und nutzen die Parallelität auf Registerebene, um die Dequantisierungslatenz zu reduzieren. Außerdem machen wir die verschmolzene Aufmerksamkeit speichergebunden und nutzen so den Leistungsgewinn durch die KV4-Quantisierung. Dadurch verbessert QServe den maximal erreichbaren Durchsatz von Llama-3-8B um das 1,2-fache bei A100 und um das 1,4-fache bei L40S; und Qwen1.5-72B um 2,4× auf A100, 3,5× auf L40S, im Vergleich zu TensorRT-LLM.
Unten ist die WikiText2-Perplexität, bewertet mit einer Sequenzlänge von 2048. Je niedriger, desto besser.
Methoden | Präzision | Lama-3.1 70B | Lama-3.1 8B | Lama-3 70B | Lama-3 8B | Lama-2 7B | Lama-2 13B | Lama-2 70B | Lama 7B | Lama 13B | Lama 30B | Mistral 7B | Yi 34B |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
FP16 | 2,81 | 6.24 | 2,85 | 6.14 | 5.47 | 4,88 | 3.32 | 5,68 | 5.09 | 4.10 | 5.25 | 4,60 | |
SmoothQuant | W8A8 | 3.23 | 6.38 | 3.14 | 6.28 | 5.54 | 4,95 | 3.36 | 5,73 | 5.13 | 4.23 | 5.29 | 4,69 |
GPTQ-R | W4A16 g128 | 3.46 | 6,64 | 3.42 | 6.56 | 5.63 | 4,99 | 3.43 | 5,83 | 5.20 | 4.22 | 5.39 | 4,68 |
AWQ | W4A16 g128 | 3.22 | 6,60 | 3.20 | 6.54 | 5,60 | 4,97 | 3.41 | 5,78 | 5.19 | 4.21 | 5.37 | 4,67 |
QuaRot | W4A4 | 5,97 | 8.32 | 6,75 | 8.33 | 6.19 | 5.45 | 3,83 | 6.34 | 5.58 | 4,64 | 5,77 | NaN |
Atom | W4A4 g128 | - | - | 4.33 | 7,78 | 6.12 | 5.31 | 3,73 | 6.25 | 5.52 | 4.61 | 5,76 | 4,97 |
QoQ | W4A8KV4 | 3,69 | 6,91 | 3,65 | 6,84 | 5,75 | 5.11 | 3.51 | 5,92 | 5.27 | 4.32 | 5.45 | 4,73 |
QoQ | W4A8KV4 g128 | 3,54 | 6,80 | 3.51 | 6,73 | 5,68 | 5.05 | 3.46 | 5,88 | 5.23 | 4.27 | 5.41 | 4,73 |
* SmoothQuant wird mit statischer KV-Cache-Quantisierung pro Tensor ausgewertet.
Bei der Bereitstellung der großen Sprachmodelle Llama-3-8B und Qwen1.5-72B auf L40S- und A100-GPUs zeigt QServe eine überlegene Leistung und erreicht einen 1,2- bis 1,4-fach höheren Durchsatz im Vergleich zur führenden Branchenlösung TensorRT-LLM für Llama- 3-8B und ein 2,4x-3,5x höherer Durchsatz für Qwen1.5-72B.
Weitere Informationen zur Benchmarking-Einstellung finden Sie im QServe GPU Inference System.
L40S (48G) | Lama-3-8B | Lama-2-7B | Mistral-7B | Lama-2-13B | Lama-30B | Yi-34B | Lama-2-70B | Qwen-1,5-72B |
---|---|---|---|---|---|---|---|---|
TRT-LLM-FP16 | 1326 | 444 | 1566 | 92 | OOM | OOM | OOM | OOM |
TRT-LLM-W4A16 | 1431 | 681 | 1457 | 368 | 148 | 313 | 119 | 17 |
TRT-LLM-W8A8 | 2634 | 1271 | 2569 | 440 | 123 | 364 | OOM | OOM |
Atom-W4A4 | -- | 2120 | -- | -- | -- | -- | -- | -- |
QuaRot-W4A4 | -- | 805 | -- | 413 | 133 | -- | -- | 15 |
QServe-W4A8KV4 | 3656 | 2394 | 3774 | 1327 | 504 | 869 | 286 | 59 |
Durchsatzsteigerung* | 1,39x | 1,13x | 1,47x | 3,02x | 3,41x | 2,39x | 2,40x | 3,47x |
A100 (80G) | Lama-3-8B | Lama-2-7B | Mistral-7B | Lama-2-13B | Lama-30B | Yi-34B | Lama-2-70B | Qwen-1,5-72B |
---|---|---|---|---|---|---|---|---|
TRT-LLM-FP16 | 2503 | 1549 | 2371 | 488 | 80 | 145 | OOM | OOM |
TRT-LLM-W4A16 | 2370 | 1549 | 2403 | 871 | 352 | 569 | 358 | 143 |
TRT-LLM-W8A8 | 2396 | 2334 | 2427 | 1277 | 361 | 649 | 235 | 53 |
Atom-W4A4 | -- | 1160 | -- | -- | -- | -- | -- | -- |
QuaRot-W4A4 | -- | 1370 | -- | 289 | 267 | -- | -- | 68 |
QServe-W4A8KV4 | 3005 | 2908 | 2970 | 1741 | 749 | 803 | 419 | 340 |
Durchsatzsteigerung* | 1,20x | 1,25x | 1,22x | 1,36x | 2,07x | 1,23x | 1,17x | 2,38x |
Der absolute Token-Generierungsdurchsatz von QServe und Basissystemen (Einheit: Token/Sekunde. --
bedeutet nicht unterstützt). Alle Experimente wurden mit demselben Gerätespeicherbudget durchgeführt. Die Durchsatzsteigerung von QServe wird im Hinblick auf die beste Basislinie in jeder Spalte berechnet.
Wenn Sie deepcompressor
für Ihre Forschung nützlich oder relevant finden, zitieren Sie bitte unser Papier:
@article{lin2024qserve, title={QServe: W4A8KV4 Quantization and System Co-design for Efficient LLM Serving}, Autor={Lin*, Yujun und Tang*, Haotian und Yang*, Shang und Zhang, Zhekai und Xiao, Guangxuan und Gan , Chuang und Han, Song}, journal={arXiv preprint arXiv:2405.04532}, Jahr={2024}}@article{ li2024svdquant, Titel={SVDQuant: Absorbing Outliers by Low-Rank Components for 4-Bit Diffusion Models}, Autor={Li*, Muyang und Lin*, Yujun und Zhang*, Zhekai und Cai, Tianle und Li, Xiuyu und Guo, Junxian und Xie, Enze und Meng, Chenlin und Zhu, Jun-Yan und Han, Song}, Journal={arXiv Preprint arXiv:2411.05007}, Jahr={2024}}
Die folgenden Projekte stehen in engem Zusammenhang mit QServe. Unsere Gruppe hat Full-Stack-Anwendungsalgorithmus-System-Hardware-Unterstützung für effiziente große Modelle entwickelt und erhielt über 9.000 GitHub-Sterne und über 1 Million Huggingface-Community-Downloads .
Besuchen Sie auch gerne das MIT HAN Lab für weitere spannende Projekte zum Thema Effiziente generative KI !
[ System ] QServe: W4A8KV4-Quantisierung für effizientes LLM-Serving
[ System ] TinyChat: Effizienter und leichter Chatbot mit AWQ
[ Anwendung ] VILA: Zum Vortraining visueller Sprachmodelle
[ Algorithmus ] AWQ: Aktivierungsbewusste Gewichtsquantisierung für LLM-Komprimierung und -Beschleunigung
[ Algorithmus ] SmoothQuant: Genaue und effiziente Post-Training-Quantisierung für große Sprachmodelle
[ Algorithmus ] DistriFusion: Verteilte parallele Inferenz für hochauflösende Diffusionsmodelle
[ Hardware ] SpAtten: Effiziente Sparse-Attention-Architektur mit Cascade Token und Head Pruning
DeepCompressor ist von vielen Open-Source-Bibliotheken inspiriert, darunter (aber nicht beschränkt auf) GPTQ, QuaRot und Atom.