피드로 돌아가기
Hugging Face BlogBackend
원문 읽기
HuggingFace가 DeepSpeed와 Accelerate를 활용해 176B 파라미터 BLOOM 모델의 토큰 생성 처리량을 0.69msec/토큰까지 단축
Incredibly Fast BLOOM Inference with DeepSpeed and Accelerate
AI 요약
Context
176B 파라미터 BLOOM 모델의 추론에는 bf16 형식 기준 352GB GPU 메모리가 필요하며, 단일 노드에서 최적 처리량을 달성하기 위해서는 8x80GB A100 GPU 같은 고성능 하드웨어 조합이 필수였다.
Technical Solution
- Accelerate 도입: 빈 가중치로 모델 인스턴스화 → 각 레이어별 크기와 GPU/CPU 메모리 분석 → Naive Pipeline Parallelism으로 계층 배치. 로딩 시간 121초, 배치크기 1에서 처리량 230.38msec/토큰 달성
- DeepSpeed-Inference 도입: Tensor Parallelism과 사용자정의 CUDA 커널 활용 → 배치크기 128에서 처리량 0.69msec/토큰 달성. 사전 샤딩된 가중치 저장소로 로딩 시간 60초 단축
- DeepSpeed-Inference int8 양자화 적용: 메모리 사용량 50% 감소 → 4x80GB A100에서 추론 가능. 배치크기 64에서 처리량 2.96msec/토큰
- DeepSpeed ZeRO-Inference 도입: 마법 같은 샤딩 방식으로 8~16 GPU 확장 가능. 다중 생성 스트림 병렬 처리 시 처리량을 GPU 개수로 추가 분할
- CPU/NVMe 오프로드 옵션: 단일 GPU로 추론 가능하게 구성 → 대량 메모리 부족 환경에서 동작 (생성 시간 증가 트레이드오프)
Impact
- DeepSpeed-Inference fp16: 배치크기 1에서 44.02msec/토큰 → 배치크기 128에서 0.69msec/토큰 (약 63배 향상)
- Accelerate: 배치크기 1에서 230.38msec/토큰 → 배치크기 32에서 10.89msec/토큰 (약 21배 향상)
- DeepSpeed ZeRO 멀티스트림 처리: 단일 스트림 대비 8~16배 처리량 증가
- 메모리 효율성: int8 양자화로 GPU 메모리 요구량 50% 감소
Key Takeaway
초대형 언어 모델 추론 시 Tensor Parallelism과 커스텀 CUDA 커널(DeepSpeed-Inference)이 Pipeline Parallelism(Accelerate)보다 처리량에서 우수하지만, 배치 병렬성과 다중 스트림 활용에서는 선택한 프레임워크의 병렬화 전략에 따라 최종 성능이 결정된다.
실천 포인트
176B 규모 이상의 초대형 모델 추론이 필요한 프로덕션 환경에서는 DeepSpeed-Inference의 Tensor Parallelism 방식을 우선 검토해 msec 단위 처리량을 목표로 하되, 모델 호환성 검증 비용이 높다면 Accelerate의 Pipeline Parallelism으로 즉시 구현한 후, int8 양자화로 메모리 비용을 50% 줄이면서 성능 트레이드오프를 관리할 수 있다.