자체 sLLM 서비스 구축을 위한 GPU 용량 계산 방식
페이지 정보
작성자 방장 작성일 24-12-06 14:10 조회 1,586 댓글 4본문
자체 sLLM (Small Large Language Model) 서비스를 구축할 때 필요한 GPU 용량을 계산하는 것은 여러 요소에 따라 달라지며, 모델의 크기, 요청량, 사용되는 배치 크기, 성능 요구사항 등에 따라 달라집니다. GPU 용량 계산은 기본적으로 다음과 같은 요소들을 고려해야 합니다:
1. 모델 크기 (Model Size)
모델 크기는 LLM의 파라미터 수와 직접적으로 관련이 있습니다. 예를 들어, GPT-3는 약 1750억 파라미터를 가지고 있으며, 이 모델이 필요로 하는 GPU 메모리 용량은 매우 큽니다.
- 모델 파라미터 수에 따라 필요한 GPU 메모리 양을 추정할 수 있습니다. 보통, 하나의 파라미터는 4바이트를 차지합니다 (FP32 기준).
- 예를 들어, 175B (1750억) 파라미터를 가진 모델은:
- 175,000,000,000×4 bytes=700,000,000,000 bytes=700 GB175,000,000,000 \times 4 \, \text{bytes} = 700,000,000,000 \, \text{bytes} = 700 \, \text{GB}175,000,000,000×4bytes=700,000,000,000bytes=700GB
- 하지만 실제로는 FP16(16-bit floating point) 또는 quantization을 사용하여 메모리 요구량을 절반으로 줄일 수 있습니다.
모델 크기에 따라 필요한 GPU 메모리 예시:
- GPT-2 (1.5B 파라미터): 약 6-10GB GPU 메모리 필요
- GPT-3 (175B 파라미터): 약 350GB 이상의 메모리 필요 (FP16 기준)
- GPT-4 및 그 이상의 모델은 이보다 더 많은 메모리를 요구합니다.
2. 배치 크기 (Batch Size)
모델의 배치 크기는 한 번에 처리하는 입력 샘플의 수입니다. 배치 크기가 클수록 GPU 메모리 요구량이 커집니다.
- 예를 들어, 배치 크기가 1일 때는 GPU 메모리 요구량이 적지만, 배치 크기가 커지면 동시에 처리해야 하는 데이터 양이 늘어나 GPU 메모리를 더 많이 사용합니다.
- 배치 크기와 관련된 GPU 메모리 소비는 다음과 같은 방식으로 추정할 수 있습니다.
- GPU 메모리 필요량=(배치 크기)×(각 데이터 샘플의 메모리 용량)\text{GPU 메모리 필요량} = (\text{배치 크기}) \times (\text{각 데이터 샘플의 메모리 용량})GPU 메모리 필요량=(배치 크기)×(각 데이터 샘플의 메모리 용량)
- 예를 들어, 배치 크기가 8인 경우, 각 샘플에 대해 4GB의 메모리가 필요하다면 32GB가 필요합니다.
3. 모델 추론 성능 (Throughput)
추론 성능, 즉 모델이 초당 처리할 수 있는 요청 수는 GPU 용량에 영향을 미칩니다. 요청 수가 많으면 더 많은 GPU가 필요할 수 있습니다.
- 추론 성능 요구 사항: 시스템에서 하루에 처리해야 하는 쿼리 수에 따라 필요한 GPU의 수를 계산할 수 있습니다.
- 예를 들어, 초당 1000개의 요청을 처리해야 한다면, 모델의 응답 시간이 1초 이내로 되어야 하므로, 더 많은 GPU 또는 분산 처리 시스템이 필요할 수 있습니다.
4. GPU 종류와 메모리
- GPU 종류에 따라 성능과 메모리 용량이 달라집니다. 예를 들어:
- NVIDIA A100: 40GB 또는 80GB의 GPU 메모리
- NVIDIA V100: 16GB 또는 32GB의 GPU 메모리
- NVIDIA H100: 80GB 메모리, 최신 LLM에 적합
- NVIDIA T4: 16GB의 GPU 메모리 (더 저렴한 대안)
각 GPU 모델이 제공하는 메모리 양에 따라, 사용하려는 모델과 배치 크기에 적합한 GPU를 선택할 수 있습니다.
5. 모델 로딩 및 파이프라인
모델을 로딩할 때 필요한 GPU 메모리 외에도 추론 파이프라인에 따라 메모리 사용량이 달라질 수 있습니다. 예를 들어, 모델이 동시에 여러 요청을 처리하거나, 텍스트 생성에 복잡한 후처리를 포함하는 경우 메모리 사용량이 추가로 증가할 수 있습니다.
6. 분산 처리
- 멀티 GPU 설정: 만약 모델이 너무 커서 단일 GPU에 적합하지 않다면, 여러 GPU를 활용하는 분산 처리 방법을 고려해야 합니다. 모델을 여러 GPU에 분할하여 병렬로 추론할 수 있습니다.
- 데이터 병렬화: 데이터 병렬화 방식으로 여러 GPU에서 데이터를 나누어 처리합니다.
- 모델 병렬화: 모델 파라미터를 여러 GPU에 분산하여 모델 자체를 나누어 처리하는 방식입니다.
7. 메모리 요구량 계산 예시
예시 1: GPT-2 (1.5B 파라미터)
- 파라미터 수: 1.5B (15억) 파라미터
- 각 파라미터 크기: FP16 기준, 2바이트
- 전체 모델 크기: 1,500,000,000×2 bytes=3 GB1,500,000,000 \times 2 \, \text{bytes} = 3 \, \text{GB}1,500,000,000×2bytes=3GB
- 배치 크기: 1
- 필요한 GPU 메모리: 약 6-10GB (배치 크기 및 파이프라인에 따른 여유 공간 포함)
예시 2: GPT-3 (175B 파라미터)
- 파라미터 수: 175B (1750억) 파라미터
- 각 파라미터 크기: FP16 기준, 2바이트
- 전체 모델 크기: 175,000,000,000×2 bytes=350 GB175,000,000,000 \times 2 \, \text{bytes} = 350 \, \text{GB}175,000,000,000×2bytes=350GB
- 배치 크기: 1
- 필요한 GPU 메모리: 350GB 이상
예시 3: GPT-4 (상장 모델)
- 파라미터 수: 1T (1조) 이상 예상
- 전체 모델 크기: 800GB 이상 (FP16 기준)
- 배치 크기: 1
- 필요한 GPU 메모리: 수백 GB 이상
결론
GPU 용량을 계산할 때는 모델 크기, 배치 크기, 요청량 등을 고려하여, 적절한 GPU를 선택해야 합니다. NVIDIA A100이나 H100 GPU는 대형 LLM에 적합하며, 모델 크기가 커질수록 멀티 GPU 구성을 고려해야 할 수 있습니다. 필요한 GPU 용량은 모델의 크기, 추론 요구 사항, 그리고 분산 처리 능력에 따라 달라지므로, 실제 계산을 통해 적합한 GPU를 선택하는 것이 중요합니다.
댓글목록 4
방장님의 댓글의 댓글
방장 작성일자체적으로 자료를 취합하여 정리한 것입니다
산마로님의 댓글
산마로 작성일안녕하세요... 제 짧은 경험으로는 LLM 모델을 학습시키기 위해서 대략적으로 모델사이즈의 약 14배 정도의 VARM이 있어야 학습이 되었던 것 같습니다. 그래서 3B 모델을 학습(Adam 옵티마이저 사용시)하려고 할때 42G 이상의 VRAM이 확보된 GPU를 사용해야 했던 경험이 있습니다.
방장님의 댓글의 댓글
방장 작성일
학습시에 14배 정도가 필요하군요
지식 공유 감사드립니다



정토님의 댓글
정토 작성일사이징 문서 잘보았습니다. 혹시 이 문서에 대한 근거가 되는 URL이나 문서가 있는지요?