간단한 결론
단일 노드 내 다중 GPU 환경에서는 텐서 병렬화를, 다중 노드 환경에서는 파이프라인 병렬화를 사용하세요. 이 규칙이 대부분의 설정에 적용됩니다.
텐서 병렬화에 대한 설명
텐서 병렬화는 각 레이어의 가중치 행렬을 여러 GPU에 분배합니다. 순전파 연산 시 모든 GPU가 행렬 곱셈의 일부분을 동시에 계산한 뒤, 고대역폭 상호연결 기술(NVLink, PCIe, InfiniBand 등)을 통해 동기화됩니다.- 각 GPU는 모델의 여러 레이어 중 일부만을 담당합니다
- 모든 GPU는 각 토큰 처리 시에 활성 상태가 됩니다
- 고대역폭 인터커넥트가 필수적입니다 (NVLink가 PCIe보다 우수함)
- 레이어별 동기화 작업이 추가되지만 토큰당 지연 시간은 낮게 유지됩니다
- vLLM calls this
--tensor-parallel-size
파이프라인 병렬화의 개념 설명
파이프라인 병렬화에서는 각기 다른 레이어들이 각기 다른 GPU에 할당됩니다. GPU 0은 레이어 0부터 15까지를 담당하고, GPU 1은 레이어 16부터 31까지를 처리합니다. 순전파 과정은 조립 라인처럼 진행되는데, GPU 0이 입력 데이터를 처리한 뒤 활성화값을 GPU 1에 전달하여 연속 처리가 이루어집니다- 각 GPU는 연속된 순서의 레이어들을 담당합니다
- 한 번에 하나의 토큰에 대해 오직 1개의 GPU만이 활성화되며 나머지 GPU들은 대기 상태이거나 다른 토큰을 처리합니다
- 인터커넥트 속도가 다소 느려도 문제없습니다. 활성화값의 크기가 전체 가중치 행렬보다 작기 때문입니다
- 활용률을 낮추기 위한 파이프라인 지연 시간(유휴 시간)을 추가합니다
- vLLM calls this
--pipeline-parallel-size
의사결정 매트릭스
전략을 선택하려면 다음 질문들에 답해보세요:-
해당 모델이 1개의 GPU에 수용 가능한가요?
- 가능하다면 병렬 처리가 필요하지 않습니다. 더 높은 처리량이 필요할 경우 데이터 병렬 처리를 활용하세요
- 불가능하다면 다음 질문으로 넘어가세요
-
모든 GPU가 동일한 머신에 있나요?
- 그렇다면 텐서 병렬 처리를 사용하세요 (지연 시간이 줄어들고 디코딩 처리량도 향상됩니다)
- 그렇지 않다면 다음 질문으로 넘어가세요
-
GPU들이 2대 이상의 머신에 분산되어 있나요?
- 네, 노드 간에 파이프라인 병렬화를 적용할 수 있습니다. 각 노드에 2개 이상의 GPU가 있다면 각 노드 내에서는 TP를 사용하고 노드 간에는 PP를 적용하시면 됩니다.
-
이 모델은 매우 큰 크기의 모델인가요 (405B 이상)?
- Yes → hybrid TP + PP. Example: TP=2 within each DGX Spark, PP=2 across 2 Sparks.
하드웨어에 따른 권장 사항
데이터 병렬 처리와 전문가 병렬 처리
특정 시나리오에서는 다음 두 전략도 중요합니다: 데이터 병렬 처리(DP) — 각 GPU에 전체 모델을 복제한 뒤 들어오는 요청들을 분배합니다. 모델이 이미 1 GPU에 수용 가능하고 더 많은 사용자를 동시에 처리하고자 할 때 활용하세요. vLLM은 이 방식을 기본적으로 지원하므로 로드 밸런서 뒤에 여러 인스턴스를 실행하기만 하면 됩니다. 전문가 병렬 처리(EP) — MoE 모델에 특화된 방식입니다. 각 GPU마다 서로 다른 전문가 그룹이 할당됩니다. 토큰이 특정 전문가로 라우팅되면 해당 활성화 정보가 그 전문가가 있는 GPU로 전송됩니다. TP만으로는 비활성 전문가들로 인해 메모리 낭비가 발생할 수 있는 매우 대형 MoE 모델에 유용합니다.설정 예시들
텐서 병렬 처리를 활용한 vLLM
텐서 파이프라인 병렬화 기능을 활용한 vLLM
하이브리드 TP+PP 방식 (대규모 모델, 다중 노드 환경)
For a 405B model across 2× DGX Spark (TP within each node, PP across nodes):텐서 병렬화 기능을 갖춘 SGLang
특정 워크로드 환경에서 SGLang은 듀얼 GPU 환경에서도 vLLM과 비슷한 성능을 보입니다:NCCL 환경 변수 설정 방법
다중 GPU 간 통신을 위해 실행 전에 다음 설정을 적용하세요:On DGX Spark clusters connected via 200Gb/s QSFP, NCCL automatically selects the optimal transport. You typically do not need to override
NCCL_IB_DISABLE or NCCL_SOCKET_IFNAME unless you are debugging connectivity issues.성능 비교 결과
Based on community benchmarks for 70B-class dense models:병렬 처리를 사용하지 않는 것이 적절한 경우
모든 설정 환경에서 GPU 분할이 이점이 되는 것은 아닙니다:- 모델 크기가 1 GPU에 충분히 수용 가능함 — 병렬 처리 시 오버헤드가 발생합니다. 1 GPU에서 데이터 병렬 처리를 활용해 처리량을 높이시기 바랍니다.
- 소형 모델(7B–13B 크기)을 일반 소비자용 GPU에서 실행할 경우 — 텐서 병렬화의 동기화 오버헤드로 인해 소형 모델에서는 2개 GPU를 사용하는 것이 1개 GPU 사용보다 느려질 수 있습니다. SGLang에서도 이 현상이 뚜렷하게 나타납니다.
- 단일 사용자용 추론 작업 — 모델 크기가 GPU 용량을 초과하지 않는 한 1 GPU만으로도 구성이 간단하며 속도도 더 빠른 경우가 많습니다.
- 노드 간 네트워크 속도가 10GbE 이하일 때 — 네트워크 속도가 느리면 파이프라인 병렬 처리가 원활하지 않습니다. 반드시 네트워크 환경부터 업그레이드하시기 바랍니다.
흔히 발생하는 문제들의 해결 방법
vLLM을 사용할 때 다중 GPU 환경에서 메모리 부족 현상 발생
vLLM reserves memory for CUDA graphs and KV cache aggressively. On 2× RTX 3090 (48GB total), a 32B model may OOM even though Ollama handles it fine. Reduce--gpu-memory-utilization from the default 0.90:
NCCL 연결 실패 현상
GPU 간 통신이 불가능할 경우 다음 사항을 확인해보시기 바랍니다:nvidia-smi topo -m— NVLink 또는 PCIe 토폴로지 상태를 점검하시기 바랍니다NCCL_DEBUG=INFO— NCCL이 선택한 전송 방식이 무엇인지 확인하시기 바랍니다- Firewall rules on port 29500 (default NCCL rendezvous port)
서로 다른 종류의 GPU 혼용
vLLM은 이기종 GPU 환경도 지원하지만, 전체 처리 속도는 가장 느린 GPU에 의해 결정됩니다. 최상의 성능을 얻으려면 사양이 동일한 GPU를 사용하는 것이 좋습니다. 혼용해야 할 경우 파이프라인 병렬화 기능을 활용해 더 빠른 GPU에 레이어를 더 많이 할당하시기 바랍니다.Tokios를 통해 멀티 GPU 배포 환경을 외부에 공개하기
TP나 PP 방식을 사용하든 둘 다 사용하든, vLLM 또는 SGLang 서버는 localhost에서 OpenAI 호환/v1 API를 제공합니다. 동일한 머신에서 Tokios 커넥터를 실행하면 인바운드 포트를 열지 않고도 어떤 기기나 에이전트, 팀원도 해당 배포 환경에 접근할 수 있습니다.
다음 단계
모델 서비스 운영 및 확장
추론 엔진이 메모리, 배치 처리, KV 캐시를 어떻게 관리하는지 이해하기
DGX Spark 활용 사례
DGX Spark 또는 2-Spark 클러스터에 Tokios를 설치해 보세요.
vLLM 원격 접속 방법
어디서든 vLLM 서버를 안전하게 공개할 수 있습니다.
양자화 가이드
병렬 처리를 활용하기 전에 GPU 수를 줄일 수 있도록 모델 크기를 축소해 보세요.