본문 바로가기
NLP/LLM

LLM 서빙 관련 글 모음

by 아르카눔 2025. 4. 27.

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://masteringllm.medium.com/how-much-gpu-memory-is-needed-to-serve-a-large-languagemodel-llm-b1899bb2ab5d

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://yjoonjang.medium.com/%EB%B6%84%EC%82%B0-%EC%B2%98%EB%A6%AC-3-pipeline-parallelism%EA%B3%BC-tensor-parallelism%EC%97%90-%EA%B4%80%ED%95%98%EC%97%AC-7b4420fe0281

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