GPU 클러스터는 수십에서 수천 개의 GPU를 빠른 네트워크로 묶어 하나처럼 쓰는 컴퓨팅 인프라로, GPU 한 대에 올라가지 않는 대형 모델을 여러 GPU에 나눠 싣고 함께 계산할 때 쓴다. 작은 모델 추론이나 LoRA 파인튜닝은 GPU 한 대나 서버 한 대로 충분하고, 클러스터는 LLM 사전학습이나 대형 모델 전체 학습처럼 규모가 클 때 필요하다.
| 규모 | 구성 | 이럴 때 쓴다 |
|---|---|---|
| GPU 1대 | 개인 PC·단일 인스턴스 | 작은 모델 추론, LoRA 파인튜닝 |
| 서버 1대 | 보통 GPU 8개 | 중형 모델 학습·추론 |
| 클러스터 | 서버 여러 대를 네트워크로 연결 | LLM 사전학습, 대형 모델 전체 학습 |
GPU를 많이 모아도 서로 결과를 주고받는 속도가 느리면 대부분의 시간을 기다리는 데 쓴다. 그래서 클러스터는 GPU 개수만큼 연결 방식이 중요하다.
| 구간 | 쓰는 기술 | 역할 |
|---|---|---|
| 서버 안 GPU끼리 | NVLink | 가장 빠른 직접 연결 |
| 서버와 서버 사이 | InfiniBand 등 고속 네트워크 | 노드 간 대량 데이터 교환 |
| 소프트웨어 통신 | NCCL | GPU 간 데이터 합치기·나누기 |
클러스터를 쓸 때는 일을 어떻게 나눌지 정해야 한다. 큰 모델일수록 아래 방식을 섞어 쓴다.
| 방식 | 나누는 것 | 언제 쓰나 |
|---|---|---|
| 데이터 병렬화 | 학습 데이터 | 모델이 GPU 한 대에 들어갈 때 |
| 텐서 병렬화 | 한 층의 계산 | 층 하나도 너무 클 때, 주로 서버 안에서 |
| 파이프라인 병렬화 | 층 묶음 | 모델 전체가 서버 한 대를 넘을 때 |
H100 한 개가 수만 달러이고 대형 클러스터는 이를 수천 개 운영하므로, 대부분의 팀은 AWS·GCP·Azure의 GPU 인스턴스를 빌려 쓴다. 예를 들어 AWS에서는 p4d.24xlarge(A100 8개)나 p5.48xlarge(H100 8개)를 여러 대 띄운다.
순서는 보통 이렇다. 인스턴스를 고속 네트워크가 되는 같은 영역에 띄우고, Slurm이나 Kubernetes로 작업을 나눠 배치한 뒤, DeepSpeed나 PyTorch FSDP로 분산 학습 코드를 돌린다. 통신은 NCCL이 맡는다.
모델을 쓰기만 한다면 API로 충분하고, 오픈 모델 파인튜닝도 LoRA처럼 가벼운 방식이면 GPU 한두 개로 되는 경우가 많다. 클러스터는 정말 큰 모델을 처음부터 학습하거나 전체 파라미터를 학습할 때 고려한다.
GPU가 많을수록 한 대만 고장 나도 전체 작업이 멈출 수 있다. 체크포인트를 자주 저장해 중간부터 다시 시작할 수 있게 하고, 작은 규모로 먼저 돌려 통신 병목이 없는지 확인한 뒤 늘리는 게 안전하다.
가장 큰 쓰임은 대형 모델 학습이다. 학습이 끝난 뒤에도 GPU 한 대에 안 들어가는 큰 모델은 여러 GPU에 나눠 올려 추론 서비스를 돌린다.
| 어디서 | 어떻게 쓰나 |
|---|---|
| LLM 사전학습 | 수백~수천 GPU에 세 가지 병렬화를 섞어 싣고, 체크포인트를 저장하며 오래 학습 |
| 전체 파라미터 파인튜닝 | 클라우드에서 GPU 서버 몇 대를 빌려 FSDP·DeepSpeed로 돌리고 끝나면 반납 |
| 대형 모델 추론 서비스 | 큰 모델을 여러 GPU에 나눠 올리고, 요청을 여러 서버로 분산 |
| 사내 연구 실험 | 공용 클러스터를 Slurm으로 나눠 여러 팀이 작업을 차례로 올림 |