Mind the Memory Gap: Unveiling GPU Bottlenecks in Large-Batch LLM Inference
https://arxiv.org/pdf/2503.08311
이번에 리뷰한 논문의 제목은 이렇습니다. Mind the Memory Gap: Unveiling GPU Bottlenecks in Large-Batch LLM Inference.
LLM모델들이 autoregressive 방식으로 decode 토큰을 생성 하기 때문에, GPU 자원을 효율적으로 사용하지 못하고 병목 현상이 발생하는 문제가 있는데, 특히 배치 크기를 크게 늘릴 때 일정한 지점 이상에서는 성능 향상이 멈추고 정체되는 현상이 나타납니다.
성능 정체의 주요 원인: 메모리 대역폭 병목 현상
기존 연구에서는 성능 정체의 원인을 GPU 연산 자원(Compute-bound)의 한계로 보았으나, 최근 심층적인 GPU 분석을 통해 진짜 원인은 메모리 대역폭(DRAM bandwidth)의 포화로 밝혀졌습니다. 특히 디코드 단계에서 Attention 연산이 이루어질 때 메모리 접근이 빈번하여 메모리 대역폭이 포화 상태에 도달하고, 이에 따라 GPU의 계산 자원이 유휴 상태로 낭비되고 있었습니다.
GPU 프로파일링을 통해, Attention 커널이 큰 배치 크기에서도 메모리 접근 패턴의 변화가 거의 없어 연산 강도(arithmetic intensity)가 일정하게 유지되며, 결국 메모리 접근이 병목으로 작용한다는 것이죠.
*연산 강도(Arithmetic Intensity)는 메모리에서 읽어오는 데이터 바이트 수에 대해 수행되는 부동 소수점 연산(FLOPs)의 양을 나타내는 비율입니다. 즉, 메모리 접근 횟수당 얼마나 많은 연산이 실행되는지를 측정하는 지표입니다.
arithmetic intensity = FLOPs / Bytes Accessed
그래서 아래 그림처럼 matmul 커널과, flash attention, xformers 커널들의 배치 1과 배치 max 를 비교해보면, matmul 커널의 경우에는 배치가 커지면 연산 강도 역시 증가하는 것을 알 수 있는데, attention 커널들은 연산 강도가 그대로이고, 성능이 결국 memory bandwidth에 bound 됩니다.
특히, 이 논문에서는 vLLM의 비연속적인 메모리 접근 방식이 어텐션 연산의 캐시 효율성을 떨어뜨려 메모리 접근 패턴을 더욱 비효율적으로 만든다고 지적합니다. 이는 L1 및 L2 캐시 적중률이 낮게 유지되는 이유 중 하나입니다.
제안된 솔루션: 배치 구성 조정기(Batching Configuration Advisor, BCA)
이러한 문제를 해결하기 위해 논문은 BCA를 제안합니다. BCA는 성능이 포화되기 직전의 최적 배치 크기(Bopt)를 찾아 GPU 메모리 사용을 최소화합니다. 이를 통해 불필요하게 큰 배치로 인한 자원 낭비를 방지하고, 확보된 자원을 추가 작업에 효율적으로 활용할 수 있다는 것입니다. OPT-1.3B 모델의 경우 BCA로 정해진 최적 배치 크기를 사용하면 최대 배치 크기 대비 83%의 처리량을 달성하면서 KV 캐시 메모리를 단지 16% 정도만 사용하게 되어, GPU 자원의 효율성을 극대화할 수 있다는 것이죠.
GPU 자원 활용 극대화: 모델 복제 전략
BCA를 통해 확보된 메모리와 유휴 GPU 자원을 효과적으로 활용하기 위해 모델 복제 전략이 함께 제안되었습니다. 한 GPU에 여러 모델 복제본을 실행하여 각 모델이 메모리 병목 현상으로 인해 대기하는 동안 다른 복제본이 GPU의 연산 자원을 사용하는 방식을 적용했습니다. 실험 결과, 이 전략은 OPT-1.3B 모델에서 최대 33.7%, OPT-2.7B 모델에서 7.49%의 추가 처리량 증가 효과를 가져왔습니다.
더 큰 모델 및 멀티 GPU 환경으로의 확장 가능성
이 연구는 단일 GPU 환경과 소형 모델을 대상으로 했고, 초대형 모델을 여러 GPU에 분산할 경우 GPU 간 통신과 분산 메모리 관리가 새로운 병목으로 나타날 수 있으며, 이를 위한 별도의 최적화가 필요하게 됩니다. 큰 모델일수록 메모리 최적화, 모델 병렬화, 그리고 자원 배분 전략이 중요해지기 때문이죠.
결론
이번 논문은 대규모 배치 LLM 추론의 성능 정체 원인을 GPU 메모리 병목 현상으로 규명하고, 이를 해결할 수 있는 실용적 전략을 제안했습니다. 작은 모델에서는 분명 효과적인 방법입니다만, 초거대 모델에서는 모델 복제 (data parallelism) 만으로 쉽게 해결될 수 있을 것 같지는 않아서, 후속 연구가 기대됩니다.