피드로 돌아가기
Optimizing your LLM in production
Hugging Face BlogHugging Face Blog
Backend

Hugging Face가 Lower Precision, Flash Attention, 아키텍처 혁신(Alibi, Rotary embeddings, MQA, GQA)을 조합해 LLM 프로덕션 배포 시 VRAM 요구량 및 추론 지연 감소

Optimizing your LLM in production

2023년 9월 15일12intermediate

Context

GPT-3/4, Falcon, Llama 같은 대규모 언어모델은 수십억 개의 파라미터로 인해 VRAM 요구량이 극도로 높으며(175B 파라미터 = 350GB in float32), 긴 입력 시퀀스 처리 시 메모리와 계산 부하가 급증한다. A100 80GB GPU 1장으로는 대부분의 LLM을 로드할 수 없어 분산 병렬 처리가 필수적이나 비효율적이다.

Technical Solution

  • Lower Precision 도입: float32 대신 bfloat16/float16을 사용해 동일 모델의 VRAM 요구량을 2배 감소(X billion 파라미터 = 2X GB in bfloat16, 4X GB in float32)
  • Flash Attention 알고리즘 적용: 표준 어텐션 대비 메모리 효율성 증대 및 GPU 메모리 활용률 최적화
  • Multi-Query Attention (MQA) 도입: n_head개의 key-value 프로젝션 가중치 대신 단일 key-value 프로젝션 사용으로 메모리·속도 이득
  • Grouped-Query-Attention (GQA) 채택: n을 n_head보다 현저히 작은 값(2, 4, 8)으로 설정해 MQA 대비 모델 용량 손실 최소화하면서 메모리/속도 이득 유지, 기존 체크포인트를 원래 학습 계산의 5% 미만으로 재학습 가능
  • 아키텍처 혁신(Alibi, Rotary embeddings) 적용: 자동회귀 텍스트 생성에 특화된 모델 구조로 추론 효율성 증대
  • device_map="auto" 활용: Transformers 라이브러리를 통해 모델 레이어를 사용 가능한 GPU 전체에 자동 분산 배치

Impact

Llama-2-70b는 bfloat16 precision으로 140GB VRAM 필요(float32 대비 50% 감소), GQA 적용 시 기존 체크포인트 재학습에 원래 학습 계산의 5% 미만만 소요된다.

Key Takeaway

LLM 프로덕션 배포에서는 단일 기법이 아닌 precision 감소, 알고리즘 최적화(Flash Attention), 아키텍처 혁신(GQA/MQA)의 조합이 필수이며, 특히 긴 입력 시퀀스를 처리하는 chat 응용에서 GQA 또는 MQA 채택이 강력하게 권장된다.


LLM 기반 채팅/검색 서비스를 구축할 때 bfloat16 precision + Flash Attention + GQA 아키텍처를 함께 도입하면 80GB A100 1장에서도 70B 규모 모델을 배포 가능하며, 기존 float32 모델 대비 메모리 요구량을 4배 감소시킬 수 있다.

원문 읽기