vLLM Arm CPU 최적화
vLLM은 PyTorch, oneDNN, KleidiAI와 협력하여 Arm Neoverse 기반 서버용 서빙 스택을 최적화했습니다. 이러한 업데이트는 사용성, 기능 범위, 성능을 크게 향상시켜 CPU 기반 인프라에서 대형 언어 모델(LLM)을 배포하는 비용과 복잡성을 줄였습니다.
배포 및 기능 활성화
Arm CPU上的 vLLM은 이제 out-of-the-box 사용성과 더 넓은 모델 지원을 제공합니다. 주요 활성화 업데이트는 다음과 같습니다:
- 간편한 설치: 사전 빌드된 휠과 Docker 이미지 이용 가능.
- 확장된 모델 지원: GPT-OSS, Whisper, Qwen 3.5 / 3.6 지원.
- 새로운 기능: 청크 프리필드, 프리픽스 캐싱, INT8 W8A8 및 INT8 W4A8 추론 지원.
- 안정성: 충돌, 정확도, 스레딩, CPU 사용률 문제를 해결하는 버그 수정 및 PyTorch와 UXL 생태계와의 통합 개선.
핵심 성능 최적화
성능 향상은 GEMM 커널에만 집중하는 것이 아니라 추론 스택 전체의 병목 현상을 해결함으로써 달성되었습니다.
mimalloc을 사용한 메모리 할당
PyTorch의 기본 glibc malloc 사용은 KV-캐시 관리 및 스케줄링에 필요한 반복적인 텐서 할당 중에 높은 페이지 폴트와 경합을 일으켰습니다. vLLM은 이제 PyTorch에서 Arm 기반 CPU의 기본 할당자로 mimalloc을 활성화합니다. 이 캐싱 할당자는 멀티스레드 압력에서 더 잘 확장되어 Llama 3.1 8B 오프라인 처리량을 2.3배 향상시키고 저동시성 서비스 시나리오에서 최대 7배의 성능 향상을 제공합니다.
동기화 및 Arm LSE 원자 연산
고수준 코어 수에서는 OpenMP 동적 스케줄링에서의 경합으로 인해 성능이 이전에 후퇴했습니다. 프로파일링 결과 gomp_iter_dynamic_next가 load-linked/store-conditional 재시도 루프에 의존하는 것이 밝혀졌으며, 이는 높은 스레드 경합에서 반복적인 실패를 일으켰습니다.
vLLM은 PyTorch에서 **Arm Large System Extensions (LSE)**를 활용하는 libgomp 런타임을 구축하여 이 문제를 해결했습니다. LDADDAL과 같은 하드웨어 원자 명령어를 사용하여 비효율적인 재시도 루프를 제거함으로써 Llama 3.1 8B 오프라인 처리량을 9% 향상시키고 저동시성 시나리오에서 Time Per Output Token(TPOT) 지연을 15% 감소시켰습니다.
밀집 레이어 가중치 사전 패킹
매 호출마다 프레임워크 레이아웃에서 커널 친화적 형식으로 가중치를 변환하는 오버헤드를 제거하기 위해, vLLM은 Arm 아키텍용 Compute Library로 가속된 빠른 oneDNN 경로를 활성화했습니다.これにより BF16 가중치는 모델 워밍업 중에 패킹되어 추론 중에 재사용될 수 있어, 저동시성 시나리오에서 TPOT 지연을 60% 줄이고 Llama 3.1 8B 오프라인 처리량을 16% 증가시킵니다.
최적화된 페이지드 어텐션
이전에는 CPU 페이지드 어텐션 커널이 QK 및 PV 행렬 곱셈과 소프트맥스 지수 함수에 대한 참조 구현에 의존했습니다. vLLM은 다음을 사용하여 이러한 경로를 최적화했습니다:
- BFMMLA 고급 SIMD 명령어를 QK 및 PV 경로에 사용.
- 벡터화된 3차 다항식 근사를 소프트맥스 지수 함수에 사용.
이 최적화로 페이지드 어텐션이 최대 4배 빨라지고 Llama 3.1 8B 오프라인 처리량이 12% 증가했으며, Arm CPU에서 청크 프리필드 및 프리픽스 캐싱 지원도 잠금 해제되었습니다.
양자화 성능
INT8 W8A8 (8비트 가중치 및 활성화)
SVE128 및 SVE256에서 SMMLA(부호 있는 INT8 행렬 곱-누적) 명령을 활용하는 oneDNN JIT 커널을 사용하여, vLLM은 이제 효율적인 W8A8 양자화를 지원합니다. 최적화된 BF16 기준과 비교하여 W8A8은 처리량을 최대 88% 높이고 TPOT를 45% 낮추며 TTFT를 54% 낮춥니다.
INT8 W4A8 (4비트 가중치, 8비트 활성화)
KleidiAI INT4 마이크로 커널을 통해 가속된 W4A8은 메모리 대역폭 압력을 추가로 줄여 저동시성, 메모리 제한 시나리오에서 특히 효과적입니다. W8A8 기준과 비교하여 W4A8은 처리량을 최대 29% 높이고 TPOT를 26% 낮추며 TTFT를 18% 낮춥니다.
성능 향상 요약
2025년 10월 BF16 기준과 비교했을 때, 이러한 최적화의 누적 효과는 상당합니다:
| 구성 | 최대 처리량 향상 | 최대 TPOT 가속 | 최대 TTFT 가속 |
|---|---|---|---|
| 최적화된 BF16 | 2.7× | - | - |
| INT8 W8A8 | 4.8× | 5.7× | - |
| INT8 W4A8 | 6.2× | 7.8× | 2.6× |
이러한 개선으로 메모리 할당부터 런타임 동기화 및 커널 수준 실행까지 전체 경로를 최적화하여 vLLM은 Arm Neoverse 기반 서버용 프로덕션 준비 추론 스택으로 자리매김했습니다.
Sources
- OriginalOptimizing vLLM on Arm CPUs