피드로 돌아가기
Dev.toAI/ML
원문 읽기
bfloat16 도입을 통한 64K Context 처리 및 0.5M TPS 달성
Is Brain Float (bf16) Worth it?
AI 요약
Context
vLLM 기반 Gemma 4-26B 모델의 TPU v6e-4 클러스터 배포 중 float32 사용으로 인한 메모리 부족 및 시스템 불안정 발생. 128K Context 설정에도 불구하고 모델 가중치의 물리적 한계로 64K 이상의 요청 시 Status 400 에러가 발생하는 제약 상황.
Technical Solution
- TPU v6e(Trillium) 아키텍처 최적화를 위해 데이터 타입을 bfloat16으로 변경하여 메모리 풋프린트 50% 절감
- bfloat16 설정을 통한 KV Cache 메모리 효율화로 1,024명 동시 접속 환경의 대규모 배치 처리 안정성 확보
- 메모리 파편화 방지를 위해 KV Cache Block Size를 16에서 128로 확장하여 Long Context 처리 능력 강화
- TPU MXU(Matrix Multiply Unit)의 컴퓨팅 한계를 고려한 동시성 조절로 Peak Throughput 최적화
- 하드웨어 가속기 특성에 맞춘 정밀도 조정을 통해 67M 토큰의 단일 배치 처리 가능 구조 설계
Impact
- Peak Prefill Throughput: 최대 498,253 tokens/sec 달성
- Memory Efficiency: float32 대비 가중치 및 KV Cache 메모리 사용량 50% 감소
- Scalability: 256명 사용자까지 선형적 확장성 확인 및 TTFT 20.13s 유지
- Stability: 8시간 스트레스 테스트 및 30M 토큰 주입 환경에서 시스템 안정성 검증
Key Takeaway
하드웨어 가속기(TPU)의 특화 데이터 타입(bfloat16) 채택이 단순 성능 향상을 넘어, 대규모 컨텍스트 처리의 물리적 가능 여부를 결정하는 핵심 설계 변수임.
실천 포인트
- TPU v6e 사용 시 vLLM의 --dtype bf16 대신 bfloat16 명시적 설정 확인 - Long Context 서비스 설계 시 모델 가중치의 물리적 Attention Limit와 소프트웨어 설정값의 불일치 여부 검증 - 대규모 배치 처리 시 KV Cache Block Size 확장을 통한 메모리 파편화 억제 검토 - 인터랙티브 RAG 서비스의 경우 TTFT 8초 미만을 유지하는 16~64 유저 구간을 최적 Concurrency로 설정