⚡ AI Optimization

희소성 최적화

개요

희소성 최적화(Sparsity Optimization)는 신경망의 가중치나 활성값 중 중요하지 않은 값을 제로화하여 모델의 메모리 사용량을 줄이고 연산 속도를 향상시키는 기법이다. 딥러닝 모델의 파라미터 수가 수십억에서 수백억 개로 증가하면서, 희소성은 모델 압축과 추론 가속의 핵심 기법으로 부상했다.

희소성은 크게 비구조적 희소성(Unstructured Sparsity)과 구조적 희소성(Structured Sparsity)으로 분류된다. 비구조적 희소성은 임의의 위치에 제로 값을 배치하므로 높은 압축률을 달성할 수 있지만, 하드웨어 가속에 불리하다. 반면 구조적 희소성은 특정 패턴(예: 2:4 스파스 패턴)으로 제로 값을 배치하여 하드웨어 효율성을 높인다. NVIDIA Ampere 아키텍처부터 도입된 2:4 구조적 희소성은 Tensor Core의 처리량을 2배로 증가시키는 실용적인 하드웨어 지원을 제공한다.

핵심 개념

희소성 기본 원리

희소성 분류

유형 설명 장점 단점
비구조적 희소성 임의의 위치에 제로 배치 높은 압축률, 유연성 하드웨어 가속 어려움
구조적 희소성 블록/채널 단위 제로화 하드웨어 친화적 압축률 제한
준구조적 희소성 2:4, 4:8 패턴 제로화 하드웨어 가속 + 적절한 압축 패턴 제약

희소성 밀도 (Sparsity Density)

희소성 밀도는 제로가 아닌 값의 비율을 나타낸다:

밀도 = (非제로 값 수) / (전체 값 수)
희소성 = 1 - 밀도

예시: 50% 희소성 = 절반의 가중치가 제로

희소성 메트릭

메트릭 공식 설명
희소성 비율 (전체 파라미터 - 제로 파라미터) / 전체 파라미터 제로화된 파라미터 비율
압축 비율 원본 크기 / 압축 후 크기 메모리 절감 비율
정확도 유지율 희소 모델 정확도 / 밀집 모델 정확도 성능 보존 정도

비교/분석

Pruning 기법 비교

Pruning 기법 비교
기법 유형 재학습 필요 LLM 적용 정확도 속도
Magnitude Pruning 비구조적 선택적 O 중간 빠름
Random Pruning 비구조적 불필요 O 낮음 가장 빠름
SparseGPT 비구조적 불필요 O 높음 중간
Wanda 비구조적 불필요 O 높음 빠름
2:4 Structured 준구조적 불필요 O 중간~높음 가장 빠름
Movement Pruning 비구조적 필요 O 가장 높음 느림

하드웨어 지원 비교

하드웨어 비구조적 가속 2:4 가속 4:8 가속 비고
NVIDIA V100 X X X Tensor Core만 지원
NVIDIA A100 X O X 2:4 Sparse Tensor Core
NVIDIA H100 X O X 4세대 Sparse Tensor Core
NVIDIA B200 X O X Blackwell, 5세대 Sparse Tensor Core
NVIDIA RTX 40xx X O X Ada Lovelace
Google TPU v5 X X X 희소성 미지원
AMD MI300X X X X 희소성 미지원

LLM 희소성 기법 비교

기법 원리 50% 희소성 시 정확도 60% 희소성 시 정확도 속도
Magnitude Pruning 가중치 크기 기반 제거 높음 중간 빠름
SparseGPT 이차 정보 기반 보정 매우 높음 높음 중간
Wanda 가중치×활성값 크기 기반 매우 높음 높음 빠름
SparseLLM 계층별 적응적 희소성 높음 중간 중간

동작 원리

2:4 구조적 희소성

NVIDIA Ampere 아키텍처에서 도입된 2:4 구조적 희소성은 4개의 연속된 가중치 중 2개만 유지하는 패턴이다:

2:4 Sparsity 흐름

동작 과정:
1. 가중치 분석: 각 행의 가중치 크기 평가
2. 패턴 선택: 4개 그룹에서 가장 작은 2개를 제로화
3. 압축 저장: 제로가 아닌 값과 인덱스 메타데이터 저장
4. 하드웨어 가속: Sparse Tensor Core가 제로 연산 생략

2:4 패턴 예시:

원본:     [0.5, -0.3, 0.8, -0.1]
희소화:   [0.5,  0.0, 0.8,  0.0]
메타데이터: [0, 2] (제로가 아닌 인덱스)

SparseGPT

SparseGPT는 대규모 언어 모델을 재학습 없이 한 번의 프루닝으로 50% 이상의 희소성을 달성하는 기법이다:

핵심 원리:
1. 이차 정보 활용: 가중치 행렬의 헤시안(Hessian) 역행렬을 활용한 오차 보정
2. 층별 처리: 레이어별 독립적 프루닝으로 메모리 효율성 확보
3. 보정값 적용: 프루닝 후 남은 가중치에 보정값을 적용하여 오차 최소화

수학적 배경:

min ||WX - W_sX||²
subject to: W_s는 희소화된 가중치, ||W_s||₀ ≤ k

SparseGPT 파이프라인:
1. 원본 모델 로드 (OPT-175B, BLOOM-176B)
2. Calibration 데이터로 활성값 통계 수집
3. 레이어별 헤시안 근사 및 오차 보정
4. 가중치 프루닝 및 보정값 적용
5. 희소 모델 저장

Wanda (Pruning by Weights and Activations)

Wanda는 가중치 크기와 활성값 크기를 동시에 고려한 프루닝 기법이다:

핵심 발견:
- 기존 Magnitude Pruning은 가중치 크기만 고려
- Wanda는 가중치 × 활성값 크기를 기준으로 중요도 평가
- 활성값이 큰 채널의 가중치를 보존하면 정확도 유지

동작 과정:
1. Calibration 데이터로 활성값 최대값 수집
2. 각 가중치의 중요도 = |가중치| × |활성값 최대값|
3. 중요도 기준으로 프루닝
4. 재학습 없이 즉시 사용

수학적 표현:

중요도(i,j) = |W(i,j)| × max(|X(:,j)|)
프루닝 기준: 중요도 상위 (1-희소성율)%

프루닝 전략

전략 설명 장점 단점
One-shot 한 번에 모든 프루닝 빠름 정확도 손실 가능
Iterative 여러 단계로 나누어 프루닝 정확도 유지 느림
Gradual 에폭마다 소량씩 프루닝 안정성 학습 시간 증가
Lottery Ticket 초기 가중치로 재학습 높은 정확도 초기화 비용

장단점

장점

  1. 메모리 절감: 50% 희소성 시 모델 크기 50% 감소
  2. 추론 가속: 2:4 구조적 희소성 시 Tensor Core 처리량 2배
  3. 전력 효율: 제로 연산 생략으로 전력 소비 감소
  4. 배포 용이성: 소형 모델은 엣지 디바이스에서 실행 가능
  5. 양자화와 결합: 희소성 + 양자화로 극한 압축 가능

단점

  1. 정확도 손실: 높은 희소성율에서 성능 저하 발생
  2. 하드웨어 의존성: 비구조적 희소성은 하드웨어 가속 어려움
  3. 구현 복잡도: 최적 희소성 패턴 결정 어려움
  4. 학습 비용: Movement Pruning 등 일부 기법은 재학습 필요
  5. 패턴 제약: 구조적 희소성은 특정 패턴으로 제한

관련 기술

주요 프레임워크 및 도구

도구 유형 특징 희소성 지원
PyTorch Pruning 프루닝 기본 내장, 다양한 기법 비구조적
NVIDIA ASP 프루닝 Automatic SParsity, 2:4 자동 생성 준구조적
TensorRT 추론 NVIDIA 최적화, 2:4 가속 준구조적
SparseGPT 프루닝 LLM 특화, 재학습 불필요 비구조적
Wanda 프루닝 가중치×활성값 기반 비구조적
NVIDIA Model Optimizer 압축 희소성+양자화 통합 준구조적
DeepSparse 추론 희소성 특화 추론 엔진 비구조적

NVIDIA 희소성 워크플로우

NVIDIA는 2:4 구조적 희소성을 위한 간단한 3단계 워크플로우를 제공한다:

  1. 밀집 모델 학습: 알려진-good 모델에서 학습 수렴
  2. 2:4 프루닝: ASP(Automatic SParsity)로 4개 중 2개 제거
  3. 재학습: 원래 학습 절차로 정확도 복구

이 워크플로우로 ResNet-50, BERT-Large 등 다양한 모델에서 밀집 모델과 동일한 정확도를 유지하면서 TensorRT 8.0+ 배포 시 30% 이상의 성능/와트 향상을 달성한다.

관련 기술과의 관계

기술 관계 설명
양자화 최적화 결합 희소성 + 양자화로 극한 압축
메모리 레이아웃 최적화 영향 희소성에 따른 메모리 접근 패턴 변화
메모리 접근 패턴 관련 희소성 행렬 곱셈의 접근 패턴 최적화
GPU 메모리 최적화 관련 GPU에서의 희소성 활용 기법

주요 논문

논문 저자 발표 핵심 기여
SparseGPT Frantar et al. ICLR 2023 LLM 한 번에 프루닝
Wanda Sun et al. ICLR 2024 가중치×활성값 기반 프루닝
NVIDIA 2:4 Sparsity Micikevicius et al. GTC 2020 하드웨어 지원 구조적 희소성
Lottery Ticket Hypothesis Frankle et al. ICLR 2019 초기화 기반 희소성
Movement Pruning Sanh et al. NeurIPS 2020 미세조정 프루닝

핵심 정리

  1. 희소성은 모델 압축의 핵심 기법: 50% 희소성으로 메모리 50% 절감 가능
  2. 2:4 구조적 희소성이 실용적: NVIDIA 하드웨어 지원으로 Tensor Core 처리량 2배
  3. SparseGPT/Wanda로 LLM 프루닝 가능: 재학습 없이 50% 이상 희소성 달성
  4. 희소성 + 양자화 결합: 극한 모델 압축 달성 가능
  5. 하드웨어-소프트웨어 공진화: 희소성 지원 하드웨어 발전에 따른 기법 발전

참고 문헌

  1. Frantar, E., et al. (2023). SparseGPT: Massive Language Models Can Be Accurately Pruned in One-Shot. ICLR 2023.
  2. Sun, M., et al. (2024). A Simple and Effective Pruning Approach for Large Language Models (Wanda). ICLR 2024.
  3. Micikevicius, P., et al. (2020). NVIDIA A100 Tensor Core GPU Architecture: Fine-Grained Structured Sparsity. NVIDIA Technical Blog.
  4. Frankle, J., et al. (2019). The Lottery Ticket Hypothesis: Finding Sparse, Trainable Neural Networks. ICLR 2019.
  5. Hoefler, T., et al. (2021). Sparsity in Deep Learning: Pruning and Growth for Efficient Inference and Training in Neural Networks. arXiv:2102.00554.
  6. Sanh, V., et al. (2020). Movement Pruning: Adaptive Sparsity by Fine-Tuning. NeurIPS 2020.
  7. Pool, J., et al. (2021). Accelerating Sparse Deep Neural Networks. arXiv:2104.08378.
  8. NVIDIA. (2021). Accelerating Inference with Sparsity Using the NVIDIA Ampere Architecture and NVIDIA TensorRT. NVIDIA Technical Blog.