독립 replica 둘
같은 weight를 두 번 올린다.
각 worker가 요청 하나를 끝까지 처리한다.
처리량과 새 요청 가용성이 늘어난다.
노드 하나가 죽어도 다른 replica는 산다.
한 대에 들어가는 모델의 기본 선택이다.
pair는 메모리를 늘리는 방법이지만 장애 표면도 두 배로 넓히는 하나의 셀이다
cell배치 셀worker selectortensor parallelismTPfallback targetspark-01 cell=pair-a cell-role=member fabric=cx7-a workload=llmspark-02 cell=pair-a cell-role=member fabric=cx7-a workload=llmspark-03 cell=pair-b cell-role=member fabric=cx7-b workload=llmspark-04 cell=pair-b cell-role=member fabric=cx7-b workload=llmspark-05 cell=single workload=general...spark-NN cell=single workload=staginglabel은 scheduler가 읽는 의도다. spark-01과 spark-02가 옆 번호라는 사실에 topology를 숨기지 않는다.
pair를 실제 분산 instance에 쓸 때는 selector만 믿지 말고 배포 화면에서 두 GPU를 수동 선택해 엉뚱한
pair가 섞이지 않게 한다.
독립 replica 둘
같은 weight를 두 번 올린다.
각 worker가 요청 하나를 끝까지 처리한다.
처리량과 새 요청 가용성이 늘어난다.
노드 하나가 죽어도 다른 replica는 산다.
한 대에 들어가는 모델의 기본 선택이다.
2대 distributed instance
한 model instance가 두 worker를 함께 쓴다.
weight·연산을 TP/PP로 나누고 worker 간 통신한다.
한 대에 안 들어가는 모델을 실행할 수 있다.
둘 중 하나가 죽으면 instance 전체가 영향을 받는다.
고속 ConnectX-7 경로와 별도 검증이 필요하다.
GPUStack에서 multi-worker는 vLLM·SGLang·MindIE에만 켤 수 있다. FastAPI custom backend에는 쓰지 않는다. DGX Spark 두 대에서 vLLM을 함께 실행하면 기술적으로 분산 추론이므로, 평소 독립 노드 운영과 다른 실험·장애 기준을 적용한다.
고정 pair마다 deployment를 하나 만들면 장애와 변경 범위가 명확하다. GPUStack model route에 두 target을
넣고 weight를 조절한다. 새 backend image는 pair-b에 먼저 배포해 검증한 뒤 weight를 넘길 수 있다.
LiteLLM에는 large-prod 하나만 보여 topology 변경을 숨긴다.
pair 하나는 대용량 실행 능력을 주지만 HA를 주지 않는다. 중요한 서비스라면 다음 중 하나가 필요하다.
NVIDIA는 여러 Spark를 QSFP switch의 200Gbps port에 연결하는 playbook을 제공한다. pair가 고정이면 각 pair를 직접 연결할 수도 있지만, 여러 pair 사이에 target을 옮기거나 향후 재구성하려면 switch fabric이 운영하기 쉽다. 어느 쪽이든 NCCL test와 실제 model benchmark 둘 다 통과해야 한다.
10GbE는 독립 replica의 API와 관리 트래픽에는 충분할 수 있지만 TP 통신의 대체품으로 가정하지 않는다. 한 대와 두 대를 다음 지표로 직접 비교한다.
| 지표 | 확인할 질문 |
|---|---|
| model load 시간 | pair가 두 곳의 download·load 때문에 얼마나 느려졌나 |
| TTFT | 통신 비용을 포함한 첫 token 시간이 개선됐나 |
| decode tokens/s | 긴 출력에서 실제 처리량이 나아졌나 |
| 동시 사용자 처리량 | replica 둘보다 pair 하나가 유리한가 |
| 장애 감지·복구 | member 하나를 재부팅하면 route에서 언제 빠지고 언제 돌아오나 |