피드로 돌아가기
Hacker NewsAI/ML
원문 읽기
Pipelined Decoding으로 GPU Bubble 제거, B200 기준 성능 최대 34% 향상
Popping the GPU Bubble
AI 요약
Context
Autoregressive 모델의 Token 생성 과정에서 발생하는 CPU Housekeeping 비용으로 인한 GPU Idle 상태인 'GPU Bubble' 현상 발생. CPU의 Token 선택 및 메타데이터 설정 작업이 완료될 때까지 GPU가 대기하는 순차적 Blocking 구조의 한계 노출.
Technical Solution
- Pipelined Decoding 도입을 통한 CPU 작업과 GPU Forward 연산의 Overlap 구조 설계
- Ping-pong Slots 방식을 적용하여 두 개의 DecodeSlot을 교차 사용함으로써 Buffer 충돌 방지 및 병렬 처리 구현
- Pinned Host Buffer와 DMA(Direct Memory Access) 전송을 활용하여 CPU 블로킹 없는 백그라운드 데이터 복사 수행
- Compute Stream과 Copy Stream을 분리하여 다음 Token의 Forward 연산과 이전 Token의 결과 복사를 동시 처리
- Constrained Decoding 대응을 위해 Forward 연산과 Sampling 단계를 분리하여 실행 순서 최적화
- Zombie Refcounting 메커니즘을 통해 종료된 요청의 리소스를 안전하게 회수하는 클린업 프로세스 구축
실천 포인트
1. GPU 연산 전후의 CPU 전처리/후처리 시간이 연산 시간 대비 비중이 높은지 분석
2. 단일 Buffer 사용으로 인한 Blocking 구간을 확인하고 Double Buffering 또는 Ping-pong 구조 도입 검토
3. Compute/Copy 스트림 분리를 통해 데이터 전송과 커널 실행의 Overlap 가능 여부 확인
4. 런타임 GPU Memory Allocation을 제거하고 Fixed Buffer 주소 기반의 CUDA Graph 적용 고려