
대규모 언어 모델 및 확산 모델을 위한 모델 압축 도구 상자
[2024/11] ? 최신 W4A4 확산 모델 양자화 작업 SVDQuant 알고리즘 및 Nunchaku 시스템이 공개되었습니다! 우리의 논문을 확인해보세요!
[2024/05] ? 최신 W4A8KV4 LLM 양자화 작업 QoQ 알고리즘 및 QServe 시스템이 공개되었습니다! QoQ는 라틴어로 4-8-4인 quattuor-octō-quattuor 의 약어입니다. 우리의 논문을 확인해보세요!
DeepCompressor 는 PyTorch를 기반으로 하는 대규모 언어 모델 및 확산 모델을 위한 오픈 소스 모델 압축 도구 상자입니다. DeepCompressor는 현재 8비트 내의 모든 정수 및 부동 소수점 데이터 유형(예: INT8, INT4 및 FP4_E2M1)을 사용하여 가짜 양자화를 지원합니다. 다음 알고리즘을 구현하는 예는 다음과 같습니다.
대규모 언어 모델에 대한 학습 후 양자화:
전분기 대비 (W4A8KV4)
스무스퀀트(W8A8)
AWQ (W4A16)
GPTQ (W4A16)
가중치만 양자화
가중치 활성화 양자화
가중치 활성화 및 KV-캐시 양자화
확산 모델에 대한 훈련 후 양자화:
SVD퀀트(W4A4)
가중치 활성화 양자화
DeepCompressor에는 다른 추론 라이브러리와 통합되는 예제도 포함되어 있습니다.
TinyChat을 사용하여 가중치 전용 양자화 LLM 배포
QServe로 양자화된 LLM 배포
Nunchaku를 사용하여 양자화된 확산 모델 배포
이 저장소를 복제하고 deepcompressor 폴더로 이동하세요.
git clone https://github.com/mit-han-lab/deepcompressor cd deepcompressor
패키지 설치
conda env create -f environment.yml poetry install
[홈페이지][논문][쌍절절추론시스템]
확산 모델은 고품질 이미지를 생성하는 데 매우 효과적인 것으로 입증되었습니다. 그러나 이러한 모델이 커질수록 훨씬 더 많은 메모리가 필요하고 대기 시간이 길어져 배포에 상당한 어려움을 겪게 됩니다. 이 작업에서 우리는 가중치와 활성화를 4비트로 양자화하여 확산 모델을 가속화하는 것을 목표로 합니다. 이러한 공격적인 수준에서는 가중치와 활성화가 모두 매우 민감하므로 평활화와 같은 대규모 언어 모델에 대한 기존의 학습 후 양자화 방법으로는 충분하지 않습니다. 이러한 한계를 극복하기 위해 우리는 새로운 4비트 양자화 패러다임인 SVDQuant를 제안합니다. 가중치와 활성화 사이의 이상값을 재분배하는 평활화와 달리, 우리의 접근 방식은 낮은 순위 분기를 사용하여 이러한 이상값을 흡수합니다. 먼저 이상값을 활성화에서 가중치로 이동하여 통합한 다음 고정밀 하위 분기를 사용하여 SVD(특이값 분해)를 통해 가중치 이상값을 가져옵니다. 이 프로세스는 양쪽의 양자화를 용이하게 합니다. 그러나 순진하게 낮은 순위 분기를 독립적으로 실행하면 활성화의 추가 데이터 이동으로 인해 상당한 오버헤드가 발생하여 양자화 속도 향상이 무효화됩니다. 이 문제를 해결하기 위해 우리는 낮은 순위 분기의 커널을 낮은 비트 분기의 커널과 융합하여 중복 메모리 액세스를 차단하는 추론 엔진 Nunchaku를 공동 설계했습니다. 또한 재양자화 없이도 기성 LoRA(낮은 순위 어댑터)를 원활하게 지원할 수 있습니다. SDXL, PixArt-∑ 및 FLUX.1에 대한 광범위한 실험을 통해 이미지 품질 보존에 있어 SVDQuant의 효율성이 검증되었습니다. 12B FLUX.1 모델의 메모리 사용량을 3.5배 줄여 16GB 노트북 4090 GPU의 4비트 무게 전용 양자화 기준에 비해 3.0배 속도 향상을 달성하여 PC에서 더 많은 대화형 애플리케이션을 위한 길을 열었습니다.


다음은 MJHQ-30K 데이터 세트의 5000개 샘플을 사용하여 평가된 품질과 유사성입니다. IR은 ImageReward를 의미합니다. 우리의 4비트 결과는 다른 4비트 기준보다 성능이 뛰어나 16비트 모델의 시각적 품질을 효과적으로 유지합니다.
| 모델 | 정도 | 방법 | FID( | IR( | LPIPS( | PSNR( |
|---|---|---|---|---|---|---|
| FLUX.1-dev(50단계) | BF16 | -- | 20.3 | 0.953 | -- | -- |
| 내부 W8A8 | 우리 것 | 20.4 | 0.948 | 0.089 | 27.0 | |
| W4A16 | NF4 | 20.6 | 0.910 | 0.272 | 19.5 | |
| 내부 W4A4 | 우리 것 | 19.86 | 0.932 | 0.254 | 20.1 | |
| FP W4A4 | 우리 것 | 21.0 | 0.933 | 0.247 | 20.2 | |
| FLUX.1-schnell(4단계) | BF16 | -- | 19.2 | 0.938 | -- | -- |
| 내부 W8A8 | 우리 것 | 19.2 | 0.966 | 0.120 | 22.9 | |
| W4A16 | NF4 | 18.9 | 0.943 | 0.257 | 18.2 | |
| 내부 W4A4 | 우리 것 | 18.4 | 0.969 | 0.292 | 17.5 | |
| FP W4A4 | 우리 것 | 19.9 | 0.956 | 0.279 | 17.5 | |
| FP16 | -- | 16.6 | 0.944 | -- | -- | |
| PixArt-Sigma(20단계) | 내부 W8A8 | ViDiT-Q | 15.7 | 0.944 | 0.137 | 22.5 |
| 내부 W8A8 | 우리 것 | 16.3 | 0.955 | 0.109 | 23.7 | |
| 내부 W4A8 | ViDiT-Q | 37.3 | 0.573 | 0.611 | 12.0 | |
| 내부 W4A4 | 우리 것 | 20.1 | 0.898 | 0.394 | 16.2 | |
| FP W4A4 | 우리 것 | 18.3 | 0.946 | 0.326 | 17.4 |
[웹사이트][논문][QoQ 알고리즘 코드][QServe GPU 시스템]
양자화는 LLM(대형 언어 모델) 추론을 가속화할 수 있습니다. 연구 커뮤니티는 INT8 양자화를 넘어 INT4와 같이 더 낮은 정밀도를 적극적으로 탐색하고 있습니다. 그럼에도 불구하고 최첨단 INT4 양자화 기술은 낮은 배치, 에지 LLM 추론만 가속화하므로 대규모 배치, 클라우드 기반 LLM 서비스에서 성능 향상을 제공하지 못합니다. 우리는 중요한 문제를 발견했습니다. 기존 INT4 양자화 방법은 GPU에서 가중치 또는 부분합을 역양자화할 때 상당한 런타임 오버헤드(20-90%)로 어려움을 겪습니다. 이 문제를 해결하기 위해 4비트 가중치, 8비트 활성화 및 4비트 KV 캐시를 갖춘 W4A8KV4 양자화 알고리즘인 QoQ를 소개합니다. QoQ는 라틴어로 4-8-4를 나타내는 quattuor-octo-quattuor 의 약자입니다. QoQ는 측정된 속도 향상을 달성하는 QServe 추론 라이브러리에 의해 구현됩니다. QServe를 이끄는 핵심 통찰력은 GPU에서 제공되는 LLM의 효율성이 처리량이 낮은 CUDA 코어에서의 작업 에 의해 결정적으로 영향을 받는다는 것입니다. 이러한 통찰력을 바탕으로 QoQ 알고리즘에서는 W4A8 GEMM에서 역양자화 오버헤드를 낮출 수 있는 점진적 양자화를 도입합니다. 또한 4비트 KV 양자화로 인해 발생하는 정확도 저하를 효과적으로 완화하기 위해 SmoothAttention을 개발합니다. QServe 시스템에서는 계산 인식 가중치 재정렬을 수행하고 레지스터 수준 병렬성을 활용하여 역양자화 대기 시간을 줄입니다. 또한 KV4 양자화로 인한 성능 향상을 활용하여 융합된 주의를 메모리에 바인딩합니다. 결과적으로 QServe는 Llama-3-8B의 달성 가능한 최대 서비스 처리량을 A100에서는 1.2배 , L40S에서는 1.4배 향상시킵니다. TensorRT-LLM과 비교하여 Qwen1.5-72B는 A100에서 2.4배 , L40S에서 3.5배 증가했습니다.


다음은 2048 시퀀스 길이로 평가된 WikiText2 Perplexity입니다. 낮을수록 좋습니다.
| 행동 양식 | 정도 | 라마-3.1 70B | 라마-3.1 8B | 라마-3 70B | 라마-3 8B | 라마-2 7B | 라마-2 13B | 라마-2 70B | 라마 7B | 라마 13B | 라마 30B | 미스트랄 7B | 이순신 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 | |
| 스무드퀀트 | 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 |
| 콰로트 | W4A4 | 5.97 | 8.32 | 6.75 | 8.33 | 6.19 | 5.45 | 3.83 | 6.34 | 5.58 | 4.64 | 5.77 | NaN |
| 원자 | W4A4 g128 | - | - | 4.33 | 7.78 | 6.12 | 5.31 | 3.73 | 6.25 | 5.52 | 4.61 | 5.76 | 4.97 |
| 전분기 대비 | 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 |
| 전분기 대비 | 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는 텐서별 정적 KV 캐시 양자화로 평가됩니다.
L40S 및 A100 GPU에서 대규모 언어 모델 Llama-3-8B 및 Qwen1.5-72B를 제공할 때 QServe는 업계 최고의 솔루션인 TensorRT-LLM에 비해 1.2배~1.4배 더 높은 처리량을 달성하는 뛰어난 성능을 보여줍니다. 3-8B, Qwen1.5-72B의 처리량은 2.4x-3.5x 더 높습니다 .
QServe GPU 추론 시스템의 벤치마킹 설정에 대해 자세히 알아보세요.
| L40S(48G) | 라마-3-8B | 라마-2-7B | 미스트랄-7B | 라마-2-13B | 라마-30B | Yi-34B | 라마-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 |
| 원자-W4A4 | -- | 2120 | -- | -- | -- | -- | -- | -- |
| QuaRot-W4A4 | -- | 805 | -- | 413 | 133 | -- | -- | 15 |
| QServe-W4A8KV4 | 3656 | 2394 | 3774 | 1327 | 504 | 869 | 286 | 59 |
| 처리량 증가* | 1.39배 | 1.13배 | 1.47배 | 3.02배 | 3.41배 | 2.39배 | 2.40배 | 3.47배 |
| A100(80G) | 라마-3-8B | 라마-2-7B | 미스트랄-7B | 라마-2-13B | 라마-30B | Yi-34B | 라마-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 |
| 원자-W4A4 | -- | 1160 | -- | -- | -- | -- | -- | -- |
| QuaRot-W4A4 | -- | 1370 | -- | 289 | 267 | -- | -- | 68 |
| QServe-W4A8KV4 | 3005 | 2908 | 2970 | 1741년 | 749 | 803 | 419 | 340 |
| 처리량 증가* | 1.20배 | 1.25배 | 1.22배 | 1.36배 | 2.07배 | 1.23배 | 1.17배 | 2.38배 |
QServe 및 기본 시스템의 절대 토큰 생성 처리량(단위: 토큰/초. -- 지원되지 않음을 의미) 모든 실험은 동일한 장치 메모리 예산 하에서 수행되었습니다. QServe의 처리량 증가는 각 열의 최상의 기준선을 기준으로 계산됩니다.
deepcompressor 귀하의 연구에 유용하거나 관련성이 있다고 생각하시면 저희 논문을 친절하게 인용해 주세요.
@article{lin2024qserve, title={QServe: 효율적인 LLM 서비스를 위한 W4A8KV4 양자화 및 시스템 공동 설계}, 작성자={Lin*, Yujun 및 Tang*, Haotian 및 Yang*, Shang 및 Zhang, Zhekai 및 Xiao, Guangxuan 및 Gan , Chuang and Han, Song}, 저널={arXiv 사전 인쇄 arXiv:2405.04532}, 연도={2024}}@article{
li2024svdQuant, title={SVDQuant: 4비트 확산 모델을 위한 낮은 순위 구성 요소로 이상값 흡수}, 작성자={Li*, Muyang 및 Lin*, Yujun 및 Zhang*, Zhekai 및 Cai, Tianle 및 Li, Xiuyu 및 Guo, Junxian 및 Xie, Enze 및 Meng, Chenlin 및 Zhu, Jun-Yan 및 Han, Song}, 저널={arXiv 사전 인쇄 arXiv:2411.05007}, 연도={2024}}다음 프로젝트는 QServe와 밀접한 관련이 있습니다. 우리 그룹은 효율적인 대형 모델을 위한 풀 스택 애플리케이션-알고리즘-시스템-하드웨어 지원을 개발하여 9,000개 이상의 GitHub 스타 와 100만 개 이상의 Huggingface 커뮤니티 다운로드를 받았습니다.
Efficient Generative AI 에 대한 다른 흥미로운 프로젝트를 보려면 MIT HAN Lab을 확인해 보세요!
[ 시스템 ] QServe: 효율적인 LLM 서비스를 위한 W4A8KV4 양자화
[ 시스템 ] TinyChat: AWQ를 갖춘 효율적이고 가벼운 챗봇
[ 응용 ] VILA: 시각 언어 모델의 사전 훈련에 대하여
[ 알고리즘 ] AWQ: LLM 압축 및 가속을 위한 활성화 인식 가중치 양자화
[ 알고리즘 ] SmoothQuant: 대규모 언어 모델을 위한 정확하고 효율적인 훈련 후 양자화
[ 알고리즘 ] DistriFusion: 고해상도 확산 모델을 위한 분산 병렬 추론
[ 하드웨어 ] SpAtten: 캐스케이드 토큰 및 헤드 프루닝을 사용한 효율적인 Sparse Attention 아키텍처
DeepCompressor는 GPTQ, QuaRot 및 Atom을 포함하되 이에 국한되지 않는 많은 오픈 소스 라이브러리에서 영감을 받았습니다.