[llm-compressor] AWQ DDP - 분산 데이터 병렬 AWQ 양자화
PR 링크: vllm-project/llm-compressor#2457 상태: Merged | 변경: +273/-31
들어가며
AWQ(Activation-aware Weight Quantization)는 활성화 분포를 고려하여 중요한 채널을 보호하는 양자화 기법이다. 캘리브레이션 과정에서 많은 데이터를 처리해야 하는데, 이 PR은 DDP를 적용하여 멀티 GPU에서 캘리브레이션을 병렬화한다.
핵심 코드 분석
DDP 기반 AWQ 캘리브레이션의 동작:
기존 (단일 GPU):
GPU 0: [배치 1] -> [배치 2] -> ... -> [배치 N] -> 통계 수집
DDP (멀티 GPU):
GPU 0: [배치 1, 3, 5, ...] -> 로컬 통계
GPU 1: [배치 2, 4, 6, ...] -> 로컬 통계
-> All-reduce로 통계 합산
각 GPU가 캘리브레이션 데이터의 일부를 처리하고, 수집된 활성화 통계를 all-reduce로 합산한다. 이를 통해 GPU 수에 비례하는 속도 향상을 달성한다.
왜 이게 좋은가
- 선형 스케일링: GPU 2대면 2배, 4대면 4배에 가까운 캘리브레이션 속도
- 대규모 캘리브레이션: 더 많은 캘리브레이션 데이터를 같은 시간에 처리하여 품질 향상
- 기존 인프라 활용: PyTorch DDP를 활용하여 안정적인 구현
- 투명한 통합: 기존 AWQ 설정에 DDP 플래그만 추가하면 동작
정리
AWQ의 캘리브레이션 병렬화로 대규모 모델 양자화의 시간을 단축하는 실용적인 PR이다. 특히 대량의 캘리브레이션 데이터를 사용할수록 DDP의 효과가 커진다.
참고 자료
이 글은 AI(Claude)의 도움을 받아 작성되었습니다. 코드 분석 내용은 실제 PR diff를 기반으로 합니다.
관련 포스트
PR Analysis 의 다른글
- 이전글 [triton] AMD gfx1250에서 Async Copy와 TDM 경로의 Padded Layout 휴리스틱 통합
- 현재글 : [llm-compressor] AWQ DDP - 분산 데이터 병렬 AWQ 양자화
- 다음글 [triton] triton-ext Plugin API에 문자열 인자 지원 추가
댓글