llama.cpp에서 두 GPU 간의 VRAM 사용량 불균형 문제. 해결하신 분 계신가요?
Imbalanced VRAM usage between two GPUs in llama.cpp. Anyone successfully solve this?
핵심 요약
llama.cpp 사용 시 MTP 및 MMproj 작업이 특정 GPU에 쏠려 발생하는 VRAM 불균형 문제를 해결하고자 합니다.
- VRAM 불균형 — tensor-split 파라미터를 조정해도 GPU 간 메모리 할당이 고르게 분배되지 않음
- MTP 및 MMproj — 해당 작업들이 특정 GPU에 집중되어 메모리 격차를 유발하는 것으로 추정됨
- 설정 시도 — main-gpu 교체, spec-draft-device 및 mmproj-device 설정 변경 등을 시도했으나 효과 없음
- 커뮤니티 의견 — 일부는 구조적 한계로 보며, 소스 코드 수정이나 모델을 활용한 패치 제작을 제안함
--tensor-split (-ts) 파라미터를 어떻게 설정해도 최소 1GB 이상의 VRAM을 못 쓰는 구간이 무조건 생긴다. 값을 조금만 건드려도 가중치가 반대쪽으로 확 쏠려버림. 😵💫 컨텍스트 조절하면 양쪽 사용량이 늘었다 줄었다 하긴 하는데 영 답이 없네.
--tensor-split 499,501
= GPU1 12.5 GB, GPU2 15.4 GB
--tensor-split 501, 499
= GPU1 14.7 GB, GPU2 13.4 GB
--spec-draft-device도 CUDA0, CUDA1 각각 따로 써봤는데 아무 변화 없음. (위랑 똑같이 분배됨)
--mmproj-device도 건드려봤는데 별 차이 없더라.
--no-mmproj-offload도 해봤는데, 이건 오히려 낮은 쪽이 더 낮아짐 🫣
= GPU1 14.7 GB, GPU2 12.3 GB
아무래도 MTP랑 텐서 병렬 처리가 한쪽 GPU에 몰려서 생기는 문제 같은데, 이거 해결할 방법을 모르겠네.
llama-server \
--batch-size 2048 \
--cache-ram 24384 \
--cache-type-k q8_0 \
--cache-type-v q8_0 \
--chat-template-file /mnt/AI/models/qwen-chat-template-froggeric-22.5.jinja \
--checkpoint-min-step 1024 \
--ctx-checkpoints 32 \
--ctx-size 192000 \
--fit off \
--gpu-layers all \
--image-min-tokens 1024 \
--load-mode none \
--main-gpu 1 \
--min-p 0.0 \
--mmproj /mnt/AI/models/Qwen3.8-27B-mmproj-BF16.gguf \
--model /mnt/AI/models/Qwen3.8-27B-NVFP4-MID-HIGH.gguf \
--parallel 1 \
--presence-penalty 0.0 \
--repeat-penalty 1.0 \
--spec-draft-n-max 5 \
--spec-draft-n-min 0 \
--spec-draft-ngl all \
--spec-draft-type-k q8_0 \
--spec-draft-type-v q8_0 \
--spec-type draft-mtp \
--split-mode tensor \
--temp 1 \
--tensor-split 499,501 \
--top-k 20 \
--top-p 0.95 \
--n-gpu-layers-draft all \
--no-prefill-assistant \
--reasoning-preserve


