대규모 언어 모델 추론에서 100배 속도 향상을 위한 희소 기술. LLM-Pruner 기술의 비밀을 파헤치며, 더 빠른 결과를 위해 추론 속도를 두 배로 높입니다.
소개
GPU에서 대규모 언어 모델(LLM) 성능에 영향을 미치는 세 가지 핵심 요소가 있다는 것은 잘 알려져 있습니다: (1) GPU 연산 능력, (2) GPU 입출력(I/O), (3) GPU 메모리 크기. 오늘날의 LLM에서는 추론 단계에서 (2)번 요소가 주요 병목 지점이라는 점에 주목할 필요가 있습니다.
이 블로그는 최신 연구 논문과 엔지니어링 사례를 바탕으로, 소비자용 그래픽 카드에서 프루닝 또는 희소성을 통해 LLM 추론을 가속화하는 것의 실현 가능성에 초점을 맞춥니다.
먼저 [1]의 LLM 추론 지연 시간 메트릭 분석을 참고하면 다음 세 가지 결론을 도출할 수 있습니다:
- LLM의 프롬프트 및 토큰 생성 단계에서, 토큰 생성 단계는 모델 파라미터를 로드하는 I/O 지연 시간으로 인해 훨씬 오래 걸립니다.
- LLM 추론에서 Attention과 MLP 모듈 모두 병목 지점이며, MLP 모듈이 I/O 지연 시간의 약 2/3를 차지합니다.
- All Reduce(GPU 간 통신)의 비율은 상대적으로 낮아, 주요 최적화 방향은 트랜스포머 아키텍처 자체에 있음을 나타냅니다.
자세한 데이터는 아래 그림을 참조하세요:
추론 효율성을 개선하기 위해 양자화, 추론 디코딩, 증류, 희소성 등 다양한 기술이 탐구되었습니다. 이 블로그는 희소성에 초점을 맞추어 심층적으로 소개합니다.
희소성 소개
모델 프루닝(model pruning)은 모델 희소성(model sparsity)이라고도 하며, 모델 양자화와 달리 각 가중치 파라미터를 압축하는 대신 특정 가중치 파라미터를 직접 "제거"하려고 시도합니다. 모델 프루닝의 원리는 모델의 정확도를 유지하면서 “중요하지 않은” 가중치를 제거하여 파라미터 수와 계산 부하를 줄이는 것입니다.
논문 [17]은 가중치 프루닝 방법을 처음 소개합니다: 모든 가중치가 특정 임계값 이하이면 프루닝되고, 정확도가 원하는 수준에 도달할 때까지 미세 조정됩니다. 이 논문의 저자들은 LeNet, AlexNet, VGGNet에서 실험을 수행하여 프루닝의 효과를 검증했습니다.
L1 및 L2 정규화에 관한 또 다른 결론은 L1 정규화가 미세 조정 없이 더 잘 수행되는 반면, L2 정규화는 미세 조정과 함께 더 잘 수행된다는 것입니다. 또한 네트워크의 초기 레이어가 프루닝에 더 민감하므로 반복적인 프루닝 접근 방식이 더 바람직합니다. 또한 실험을 바탕으로 저자들은 로티 티켓(Lottery Ticket) 가설을 제안합니다.
로티 티켓 가설은 사전 훈련된 네트워크에 대해 원래 네트워크의 훈련 라운드를 초과하지 않으면서 원래 네트워크와 유사한 정확도를 달성할 수 있는 서브네트워크가 존재한다고 말합니다. 이 서브네트워크는 복권에 당첨된 것과 유사합니다.
모델 정확도를 복원하기 위해 일반적으로 프루닝 후 모델을 재훈련해야 합니다. 모델 프루닝의 일반적인 3단계 파이프라인은 훈련, 프루닝, 미세 조정 단계로 구성되며, 프루닝 전후의 네트워크 연결성 변화는 아래 그림과 같습니다.
한편, 딥러닝 모델에서 희소화할 수 있는 대상에 따라 딥 뉴럴 네트워크의 희소성은 주로 가중치 희소성, 활성화 희소성, 그래디언트 희소성을 포함합니다.
위 내용은 희소성에 대한 간략한 소개입니다. 다음으로 "LLM이 희소성을 통해 추론을 가속화하는 방법"이라는 핵심 주제를 세 부분으로 나누어 공유하겠습니다. 첫 번째 부분인 "대규모 모델 프루닝 방법"에 대해 논의합니다. 두 번째 부분에서는 "활성화 희소성을 사용하여 추론 속도를 높이는 방법"을 다루고, 세 번째 부분에서는 "희소성 컴파일러가 LLM 추론에 미치는 영향"을 심층적으로 살펴봅니다.
이 종합 가이드에서는 novita.ai 팀의 Zachary가 작성한 첫 번째 부분, “LLM-Pruner 기술 공개: 추론 속도 두 배 향상” 을 탐구합니다.
LLM 프루닝 방법
LLM은 종종 수천억 개의 파라미터 규모를 가지므로 기존의 재훈련 또는 반복적 프루닝 방법은 비현실적입니다. 따라서 반복적 프루닝 및 로티 티켓 가설 [2,3]과 같은 방법은 소규모 모델에만 적용할 수 있습니다.
프루닝은 비전 및 소규모 언어 모델과 작업에 효과적으로 적용될 수 있습니다. 그러나 최적의 프루닝 방법은 프루닝된 요소 제거로 인한 정확도 손실을 복구하기 위해 모델의 광범위한 재훈련이 필요합니다. 따라서 GPT 규모의 모델을 다룰 때 비용도 엄청나게 높아집니다. 재훈련 없이 모델을 압축하는 일부 원샷(one-shot) 프루닝 방법이 있지만, 계산 비용이 너무 높아 수십억 개의 파라미터를 가진 모델에 적용할 수 없습니다.
최근 LLM을 위한 프루닝 기술에 획기적인 발전이 있었으며, 이 블로그에서 차례로 논의하겠습니다.
SparseGPT
SparseGPT[12]는 LLM 시나리오에서 최초의 원샷 정밀 프루닝 기술로, 1000~1000억 개의 파라미터 규모의 모델에 효과적으로 작동할 수 있습니다. SparseGPT의 작동 원리는 프루닝 문제를 대규모 희소 회귀 인스턴스로 단순화합니다. 이는 계층적 압축 문제를 해결하기 위한 새로운 근사 희소 회귀 솔버를 기반으로 하며, 효율성이 충분하여 단일 GPU를 사용하여 몇 시간 만에 가장 큰 GPT 모델(175B 파라미터)에서 실행할 수 있습니다. 또한 SparseGPT는 미세 조정 없이 높은 정확도를 달성하며, 프루닝 후 정확도 손실은 무시할 수 있습니다. 예를 들어, 가장 큰 공개 생성 언어 모델(OPT-175B 및 BLOOM-176B)에서 실행할 때 SparseGPT는 원샷 테스트에서 50~60%의 희소성을 달성하며, 혼란도(perplexity) 또는 제로샷 테스트 정확도로 측정한 정확도 손실이 최소화됩니다.
엔지니어링 코드는 프로젝트를 참조하세요: https://github.com/IST-DASLab/sparsegpt
그림 1은 실험 결과를 보여주며, 두 가지 주요 사항을 강조합니다: 첫째, 그림 1(왼쪽)과 같이 SparseGPT는 OPT 계열의 175B 파라미터 변형에서 최대 60%의 균일 레이어별 희소성을 정확도 손실 최소화로 프루닝할 수 있습니다. 반면, 이 규모에서 작동하는 유일한 알려진 원샷 기준선인 크기 프루닝(Magnitude Pruning)은 최대 10% 희소성에서만 정확도를 유지하고 30% 희소성을 넘으면 완전히 붕괴됩니다.
둘째, 그림 2(오른쪽)와 같이 SparseGPT는 하드웨어에 더 친화적인 2:4 및 4:8 반구조적 희소 패턴에서도 정확하게 희소성을 적용할 수 있습니다. 이러한 패턴은 종종 특히 소규모 모델의 경우 밀집 기준선에 비해 추가적인 정확도 손실을 수반하지만, 이러한 희소 패턴에서 직접 계산 속도 향상을 얻을 수 있습니다. 또한 이 기술로 유도된 희소성은 양자화를 통해 얻은 추가 압축과 잘 혼합될 수 있습니다.
LLM-Pruner
LLM-Pruner[13]는 구조화된 프루닝 방법으로, 그래디언트 정보를 기반으로 필수적이지 않은 결합 구조를 선택적으로 제거하여 LLM의 대부분 기능을 유지하면서 희소성을 최대화합니다. LLM-Pruner는 LoRA를 통해 단 3시간과 50K 데이터만으로 프루닝된 모델의 성능을 효율적으로 복원합니다.
LLM-Pruner는 LLM의 구조화된 프루닝을 위해 특별히 설계된 최초의 프레임워크로, 다음과 같은 장점이 있습니다: (i) 작업에 구애받지 않는 압축으로, 압축된 언어 모델은 멀티태스크 솔버로서의 능력을 유지합니다. (ii) 원래 훈련 코퍼스에 대한 요구 감소로, 압축에는 공개적으로 이용 가능한 50,000개의 샘플만 필요하며 훈련 데이터 획득 비용을 크게 절감합니다. (iii) 빠른 압축으로, 압축 프로세스가 3시간 이내에 완료됩니다. (iv) 자동 구조적 프루닝 프레임워크로, 모든 구조적 종속성이 수동 설계 없이 그룹화됩니다.
LLM-Pruner의 효과를 평가하기 위해 LLaMA-7B, Vicuna-7B, ChatGLM-6B 세 가지 대규모 언어 모델에 대한 광범위한 실험이 수행되었습니다. 압축된 모델은 9개의 데이터셋을 사용하여 프루닝된 모델의 생성 품질과 제로샷 분류 성능을 평가했습니다.
아래 표를 참조하면, 2.59M 샘플을 사용하여 LLM-Pruner로 LLaMA-7B를 20% 프루닝했을 때 모델 성능은 최소로 감소했지만 추론 속도는 18% 증가했습니다.

2.59M 샘플을 사용한 LLM-Pruner 결과
Wanda
Wanda[14]는 가중치와 활성화에 기반한 프루닝 방법으로, 사전 훈련된 LLM에 희소성을 유도하기 위한 새롭고 간단하며 효과적인 접근 방식입니다. LLM에서 중요한 값 특성에 대한 최근 관찰에서 영감을 받은 Wanda는 각 출력에 해당 입력 활성화를 최소 양자화 값으로 곱하여 가중치를 프루닝합니다. 특히 Wanda는 재훈련이나 가중치 업데이트가 필요하지 않으며, 프루닝된 LLM을 그대로 사용할 수 있습니다. LLaMA 및 LLaMA-2에 대한 Wanda 평가는 기존의 크기 프루닝 기준선보다 우수함을 입증하며, 밀집 가중치 업데이트를 포함한 최근 방법과 비교할 때 경쟁력이 있음을 보여줍니다.
엔지니어링 코드는 프로젝트를 참조하세요: https://github.com/locuslab/wanda
프루닝된 LLaMA 및 LLaMA-2 모델의 WikiText 혼란도. Wanda는 가중치 업데이트 없이 이전 최고 방법인 SparseGPT와 경쟁력 있는 성능을 보입니다.
위 그림을 참조하면 Wanda와 SparseGPT는 모델 프루닝에서 유사한 성능을 보여줍니다.
기존 프루닝 방법의 단점
- 하드웨어 지원: 비구조적 희소성을 통한 클록 시간 가속은 현대 하드웨어의 알려진 어려움으로 인해 달성하기 어렵습니다. 예를 들어, 최근 SparseGPT는 제로샷 프루닝을 통해 60% 비구조적 희소성을 달성했지만, 아직 눈에 띄는 클록 시간 가속 효과를 내지 못했습니다.
- 배포 과제: 문맥 내 학습(In-Context Learning)과 같은 맥락에서 모델 희소성을 통해 특정 요구 사항을 충족하는 것은 어려움을 제시합니다. 많은 연구에서 작업별 프루닝의 효과를 입증했지만, 각 작업에 대해 다른 모델을 유지하는 것은 LLM 자체의 포지셔닝과 충돌하여 배포 장애물이 됩니다.
결론
요약하면, SparseGPT, LLM-Pruner 및 Wanda와 같은 혁신적인 프루닝 방법은 높은 성능을 유지하면서 대규모 모델을 프루닝하는 새로운 관점과 기술적 수단을 제공합니다. 그러나 하드웨어 지원 및 실제 응용 분야의 과제를 해결하기 위해 추가 연구와 탐구가 여전히 필요합니다. 다음 블로그 게시물에서는 두 번째 부분인 “활성화 희소성을 사용하여 추론 속도를 높이는 방법” 을 살펴보겠습니다.
참고 논문
[1] Deja Vu: Contextual Sparsity for Efficient LLMs at Inference Time
[4] The Hardware Lottery
[6] Rethinking the Role of Scale for In-Context Learning: An Interpretability-based Case Study at 66 Billion Scale
[12] SparseGPT: Massive Language Models Can Be Accurately Pruned in One-Shot
[13] LLM-Pruner: On the Structural Pruning of Large Language Models
[14] A Simple and Effective Pruning Approach for Large Language Models
[17] Learning both Weights and Connections for Efficient Neural Networks
novita.ai 는 Stable Diffusion API와 10,000개 모델을 위한 수백 개의 빠르고 가장 저렴한 AI 이미지 생성 API를 제공합니다. 🎯 단 2초 만에 가장 빠른 생성, 종량제 요금제, 표준 이미지당 최소 $0.0015, 자체 모델을 추가하고 GPU 유지 관리를 피할 수 있습니다. 오픈소스 확장 기능을 무료로 공유하세요.
추천 읽을거리
