GPU RAM 필요량 계산
우선 LLM을 API로 가져와서 쓰는게 아니라면 GPU의 RAM 계산이 필수적이다.
이에 관련된 내용들을 레퍼런스들에서 참고해서 적어본다.
학습이 아니라 추론만을 위한 계산은 다음과 같다.
M = $\frac{P \times 4B}{\frac{32}{Q}} \times 1.2$
- M is the GPU memory in Gigabytes.
- P is the number of parameters in the model.
- 4B represents the 4 bytes used per parameter.
- Q is the number of bits for loading the model (e.g., 16-bit or 32-bit).
- 1.2 accounts for a 20% overhead.
LLama 2의 7B를 FP16으로 가져오면 결과 값은 7 * 4B / 2 * 1.2 = 16.8 GB가 필요하다.
NVIDIA 블로그를 참조하면 더 간단하게 계산할 수 있다.
LLama 2 7B를 예로 들면 아래 공식에 의해서 총 14 GB의 램이 필요하다.
7B * sizeof(FP16) ~= 14GB
그냥 모델의 파라미터에 2배를 해주면 된다.
이는 일반적으로 LLM이 FP16으로 공유되기 때문이다.
Quantization으로 FP8 이런식으로 바뀌면 필요한 VRAM의 크기는 더 줄어들게 된다.
엔비디아 방식으로 계산하고 1.2를 추가적으로 곱해주는게 가장 편해보인다.
KV Caching
그리고 대부분의 경우 KV 캐싱을 사용하기 때문에 추가적인 메모리가 필요하다.
Total size of KV cache in bytes = (batch_size) * (sequence_length) * 2 * (num_layers) * (hidden_size) * sizeof(FP16)
Llama 7B의 경우 약 2GB의 메모리가 필요하다.
추론 시간 향상을 위한 알고리즘
- KV Cache - 추가적인 메모리 필요
- vLLM의 Paged Attention - 최적화된 KV Cache로 메모리 사용량이 감소
병렬화
- Pipeline Parallelism (PP) 파이프라인 병렬화
- Tensor Parallelism (TP) 텐서 병렬화
- Sequence Parallelism (SP) 시퀀스 병렬화
Parallelism Libraries
양자화 Quantization
Qwen2.5-Coder를 Ollama에서 제공하는 걸 보면 Q4_K_M으로 양자화한걸 알 수 있다. (블로그 링크)
14B에 BF16이라서 28 GB 내외여야 정상일텐데 Q4_K_M을 써서 용량이 15 GB임을 알 수 있다.
보통 vLLM을 많이 쓰는 것 같긴하다.
학습에는 FSDP를 쓰면 되지만 정작 추론을 하는 서빙 단계에서는 어떤걸 써야하나 궁금해져서 찾아보았다.
일반적인 2B, 3B, 7B, 8B야 H100 80G에서 추론이 가능하지만 70B 이런 큰 모델은 추론시에 어떻게 하나 싶었는데 어느정도 해결되었다.
References:
https://yooniverse1007.tistory.com/33
https://toss.tech/article/llm-serving
https://developer.nvidia.com/ko-kr/blog/mastering-llm-techniques-inference-optimization/
https://www.databricks.com/kr/blog/llm-inference-performance-engineering-best-practices
https://velog.io/@kaiba0514/vLLM%EC%9D%80-%EC%99%9C-%EB%B9%A0%EB%A5%B8%EA%B0%80-Paged-Attention
https://docs.vllm.ai/en/stable/
https://huggingface.co/docs/text-generation-inference/conceptual/tensor_parallelism
https://pytorch.org/tutorials/intermediate/TP_tutorial.html
'NLP > LLM' 카테고리의 다른 글
LLM에서의 temperature, Top-k, Top-p, Penalties (0) | 2025.05.11 |
---|---|
Mistral 7B (2023) 논문 리뷰 (0) | 2025.04.27 |
GPT 4 (2023) 리뷰 (0) | 2025.04.26 |
Self-Instruct (2022) 논문 리뷰 (0) | 2025.04.17 |
LLaMA 2 (2023) 논문 리뷰 (0) | 2025.04.17 |