PCIe 3.0 x1 슬롯에서 텐서 스플릿(Tensor Split) 사용 — 꽤 괜찮은 결과
Tensor Split Over PCIe 3.0 x1 — Good Results
핵심 요약
PCIe 3.0 x1 슬롯을 사용한 텐서 스플릿 환경에서 예상보다 우수한 성능을 확인한 실험 공유.
- PCIe 대역폭 — x1 슬롯에서도 텐서 스플릿 시 디코드 성능은 충분히 유지됨
- 프롬프트 처리 — 컨텍스트 길이가 길어질수록 프롬프트 처리(PP) 속도 저하가 뚜렷함
- 실험 결과 — 텐서 스플릿이 레이어 스플릿보다 디코드 속도 면에서 유리함
- 사용자 의견 — 실제 긴 컨텍스트 환경에서는 대역폭 병목 현상이 더 심각할 수 있음
GPU 하나 더 달려고 고민할 때, 주변에서 PCIe 3.0 x1이면 병목 현상 오지게 걸릴 거니까 메인보드부터 바꾸는 게 우선이라고 하도 난리를 치더라고.
그래도 그냥 x1 라이저로 강행했는데, 결과는 예상보다 훨씬 괜찮았음. 나처럼 컴 맞추려는 사람들한테 도움 될까 싶어서 공유함.
내 홈 세팅:
-
Intel i5-14400F
-
2× RTX 3060 12GB (총 24GB)
-
GPU 하나는 PCIe x16, 다른 하나는 PCIe 3.0 x1에 연결
-
llama.cpp, Gemma 4 31b Q5 구동 중 (꽉 차는 용량, 빡빡한 컨텍스트)
레이어 스플릿(layer splitting)에서 텐서 스플릿(tensor splitting)으로 바꾸니까 PCIe 3.0 x1에 물려있는데도 t/s가 42%나 올랐음 (14 -> 20). 파워 업그레이드 기다리는 중이라 카드들을 빡세게 돌리진 못해서 아직 정밀 테스트는 안 해봤음. 다들 하도 병목 걸린다고 겁을 줘서 메모리 할당 테스트나 해보려고 했는데, 의외로 결과가 좋아서 놀랐다.
테스트 환경
70b 모델 좀 돌려보려고 2× RTX 5060 Ti 16GB (총 32GB) 장비를 대여했는데, 반납하기 전에 텐서 스플릿 돌릴 때 PCIe 트래픽이 얼마나 나오는지 확인해보기로 함. 텐서 스플릿이 PCIe 대역폭을 얼마나 처먹는지 궁금했거든.
테스트 설정:
-
모델: L3.1 Nemotron Sunfall 71B IQ3_XS
-
컨텍스트: 2k
-
Flash Attention 활성화
-
llama.cpp
-
PCIe Gen 3 지원 링크, x8 배속으로 작동
레이어 vs 텐서 스플릿:
| Test | Layer | Tensor |
|---|---|---|
| prompt generation | 11.7 t/s | 20.7 t/s |
| prompt processing | 591.8 t/s | 464.4 t/s |
텐서 스플릿 쓰니까 t/s가 77%나 올랐음.
PCIe 대역폭 측정
텐서 스플릿 추론 중에 PCIe 트래픽을 다음 명령어로 모니터링함:
nvidia-smi dmon -s t -d 1
