The efficient frontier of LLM inference
개요
LLM 추론의 효율적 프론티어는 비용과 성능 간의 상충 관계를 관리하는 기술을 다루며, 배치 크기, 병렬화 전략, 양자화 등의 기법을 통해 특정 지점을 목표하거나, 커널 최적화, 추측적 디코딩, 분산 등을 통해 전반적인 효율성을 향상시킬 수 있다.
주요 내용
* 효율적 프론티어: 경제학의 개념을 차용하여 모델의 비용과 성능 간의 상충 관계를 나타내며, 주어진 비용 또는 크기에서 가장 높은 지능을 제공하는 모델을 의미한다. 추론 엔지니어링에서는 주로 지연 시간(latency)과 처리량(throughput), 혹은 품질과 처리량, 지능과 속도 간의 상충 관계를 다룬다.
* 상충 관계 관리 기법:
* 배치 크기(Batch Sizing): 배치 크기를 늘리면 사용자당 지연 시간은 늘어나지만, GPU당 처리 토큰 수가 증가하여 토큰당 비용이 감소한다. 반대로 배치 크기를 줄이면 사용자당 지연 시간은 줄지만, 전체 처리량은 감소하고 토큰당 비용은 증가한다.
* 병렬화 전략(Parallelism Strategy):
* 텐서 병렬화(Tensor Parallelism, TP): 지연 시간 감소에 효과적이며, 고대역폭 NVLink 상에서 빠른 연산을 가능하게 한다.
* 전문가 병렬화(Expert Parallelism, EP): 낮은 수준에서는 지연 시간 개선에, 넓은 범위에서는 처리량 향상에 기여할 수 있다.
* 어텐션 데이터 병렬화(Attention Data Parallelism, ADP): 어텐션 레이어를 복제하여 병렬 연산을 수행함으로써 시스템 처리량을 높이지만, 요청당 속도는 저하될 수 있다.
* 양자화(Quantization): 모델의 가중치, 활성화, KV 캐시 값의 정밀도를 낮추어 지연 시간과 처리량을 모두 개선한다. MXFP4, NVFP4와 같은 형식은 모델 품질 저하를 최소화하면서 효율성을 크게 향상시킬 수 있다.
* 프론티어 확장 기법:
* 커널 최적화 및 런타임 개선(Kernel Optimization and Runtime Improvements): 개별 CUDA 커널 및 추론 엔진의 전반적인 성능을 최적화하여 토큰 생성에 필요한 리소스를 줄인다.
* 추측적 디코딩(Speculative Decoding): 모델이 생성할 토큰을 미리 추측하고 검증하는 방식으로, 특히 코드 생성과 같이 예측 가능한 출력 시퀀스에서 효율성을 크게 높이며, 건너뛴 순방향 패스를 통해 초당 더 많은 토큰을 생성할 수 있다.
* 분산(Disaggregation): 사전 채우기(prefill)와 디코딩(decode) 단계를 분리하여 전용 워커에서 처리하는 전략이다. 각 단계의 특성에 맞게 워커를 최적화하고, 트래픽 특성에 따라 사전 채우기 및 디코딩 워커 비율을 조절하여 처리량을 높이고 지연 시간을 유지하거나 개선할 수 있다.
시사점
LLM 추론 효율성 향상은 단순히 특정 기법을 적용하는 것을 넘어, 목표하는 서비스 특성(저지연 또는 고처리량)에 맞춰 다양한 상충 관계 관리 기법과 프론티어 확장 기법을 조합하고 최적화하는 복합적인 접근이 필요하다.
댓글
GitHub Discussions