예산형 빌드를 멀티 GPU 추론용으로 업그레이드함
Upgraded my budget build to multi-GPU for inference
핵심 요약
중고 부품으로 멀티 GPU 서버를 구축했으나, Vulkan 백엔드의 메모리 오버헤드 문제로 성능 저하를 경험함.
- 멀티 GPU 구성 — RTX 3090 2개와 Arc A770 1개를 조합하여 구축함
- Vulkan 성능 문제 — CUDA 대비 메모리 오버헤드가 심해 추론 속도가 급격히 떨어짐
- 하드웨어 제약 — 좁은 케이스와 전력 제한으로 인해 발열 관리에 어려움을 겪음
- 교훈 — llama.cpp 사용 시 단일 벤더 GPU와 해당 전용 백엔드 사용을 권장함
추가한 부품:
1x RTX 3090 - 610 USD
1x Arc A770 - 222 USD
1x PCIe x1 to 4x USB 3.0 PCIe 라이저
새 CPU 쿨러
사양:
개조된 Zalman Z9 Plus 케이스
2x Zotac RTX 3090 24 GB
1x Intel Arc A770 16 GB
48 GB DDR4 RAM
AMD Ryzen 5 1600X
MSI X370 SLI Plus
RAM 스틱(위기 이전 구매)과 케이스를 제외한 모든 부품은 중고로 구매함. 첫 번째 RTX 3090은 1년 넘게 이 서버를 구축하기 위해 540 USD에 샀음.
2시간 테스트 후 발견한 점:
Vulkan 백엔드가 멀티 GPU 추론에 잘 작동해서 Nvidia가 아닌 GPU들을 쉽게 섞을 수 있을 거라 생각했음. 하지만 CUDA와 비교하면 메모리 오버헤드가 너무 심함. 2x3090과 CUDA를 사용하면 170k 컨텍스트로 Qwen 3.6 27b Q8_K_XL bf16 캐시를 초당 30 토큰으로 돌릴 수 있음. 텐서 분할도 아주 잘 됨. 3090들은 275와트로 전력 제한이 걸려 있음.
Vulkan을 사용하면 24GB 카드당 5GB의 추가 메모리 오버헤드가 발생해서 컨텍스트를 위한 공간이 거의 남지 않음. 2x3090 + A770과 Vulkan을 사용하면 50k 컨텍스트로 Qwen 3.6 27b Q8_K_XL q8_0 캐시를 초당 3 토큰으로 돌릴 수 있음. 그래, 초당 3 토큰임.
같은 모델이 CUDA에서는 16GB VRAM을 사용하는데, Vulkan에서는 RTX 3090에서 kv 캐시가 로드되기 전에 21.7GB를 사용함.
배운 점:
Vulkan은 llama.cpp의 멀티 GPU 설정에 좋지 않음. 단일 벤더(AMD/Intel/Nvidia)로 통일하고 해당 벤더의 전용 백엔드를 사용하길 바람.


