2× Radeon R9700 — llama.cpp에서 Qwen 3.6 27B Q8 MTP 구동
요약
2개의 Radeon R9700 GPU를 사용하여 llama.cpp 환경에서 Qwen 3.6 27B 모델을 구동한 멀티 GPU 설정 및 성능 테스트 결과입니다. ROCm 환경에서의 토큰 생성 속도, 프리필 처리량, MTP 초안 수락률 및 프롬프트 캐시 효율성을 상세히 분석합니다.
핵심 포인트
- Radeon R9700 2개를 활용한 총 64GB VRAM 멀티 GPU 환경 구축
- Qwen 3.6 27B 모델의 컨텍스트 길이에 따른 디코드 및 프리필 성능 측정
- MTP(Multi-Token Prediction) 초안 수락률 및 프롬프트 캐시 복구 성능 확인
- ROCm 기반 Docker 컨테이너를 이용한 최적화된 실행 환경 공유
R9700을 이용한 멀티 GPU (multi-GPU) 설정에 관한 정보가 많지 않아서, 비슷한 상황에 처한 분들에게 도움이 될까 하여 이 글을 작성합니다. 제 설정 환경과 수행한 테스트, 그리고 서버 로그의 수치들을 공유합니다.
설정
ThinkStation P7, Xeon w7-3455, 128 GB RDIMM
2× Gigabyte Radeon AI PRO R9700 32 GB (총 64 GB VRAM)
Ubuntu 24.04 LTS, Docker 29.5.3, Komodo (komo.do)로 관리되는 컨테이너
ROCm 7.2.1
이미지: llamacpp-rocm:gfx1201
모델: unsloth/Qwen3.6-27B-MTP-GGUF/Qwen3.6-27B-Q8_0.gguf, 컨텍스트 (context) 131072
테스트
Markdown 명세(spec)를 이용한 코드 생성: Python, Go, PHP로 동일한 앱의 스캐폴딩 (scaffolding) 작업.
긴 텍스트 처리: 번역, 재구성 및 교정을 위해 2,000~3,000행 분량의 입력값 (의학 텍스트, Cisco 매뉴얼, 문학) 사용.
메모리 체크: 긴 혼합 세션을 요약하여 주제의 일관성을 유지하는지, 이전 내용을 회상할 수 있는지 확인.
디코드 (Decode, 토큰 생성)
컨텍스트가 채워진 상태에서의 디코드 (t/s) | MTP 초안 수락률 (draft acceptance)
~3–6k | 46–61 | 0.36–0.54
~10–13k | 64–67 | 0.60–0.61
~17k | ~59 | 0.54
~33k | ~49 | 0.45
~96k | ~40 | 0.42
~102k | ~44 | 0.50
~125k | ~45 | —
프리필 처리량 (Prefill throughput)
프롬프트 크기 | 처리량 (Throughput)
<10k | ~1,200–1,500 t/s
~30k | ~1,175 t/s
~63k | ~617 t/s
~100k+ | ~410–435 t/s
MTP 초안 수락률 (MTP draft acceptance): 모든 실행에서 0.33–0.61 사이.
--spec-draft-n-max: 이 옵션은 아직 실험 중입니다. 값을 낮추면 높은 컨텍스트에서 토큰 생성 속도가 향상되므로, 다양한 값을 계속 테스트할 예정입니다.
프롬프트 캐시 (Prompt cache): 서버는 KV 체크포인트를 계속 롤링하며 (최대 32개, 각각 약 150–580 MiB), 새로운 턴이 캐시된 것과 접두사(prefix) 대부분을 공유할 때 전체 프롬프트를 다시 처리하는 대신 약 60–300 ms 내에 이를 복구합니다.
PCIe 대역폭 (Intel PCM): 디코드 중에는 양방향 모두 200 MB/s 미만; 프리필 중에는 5–7 GB/s의 피크를 기록합니다.
Compose
yaml services:
llamacpp-qwen36-27b:
image: llamacpp-rocm:gfx1201
pull_policy: never
container_name: llamacpp-qwen36-27b
network_mode: host
ipc: host
privileged: true
security_opt: - seccomp=unconfined
group_add: - "44" - "993"
devices:
- /dev/kfd:/dev/kfd
- /dev/dri:/dev/dri
ulimits:
memlock: -1
stack: 67108864
environment:
- HIP_VISIBLE_DEVICES=0,1
- ROCR_VISIBLE_DEVICES=0,1
volumes:
- /data/models_ai:/models:ro
command:
- --model
- /models/unsloth/Qwen3.6-27B-MTP-GGUF/Qwen3.6-27B-Q8_0.gguf
- --host
- 0.0.0.0
- --port
- "8002"
- --alias
- qwen36-27b
- --n-gpu-layers
- "999"
- --ctx-size
- "131072"
- --split-mode
- tensor
- --kv-unified
- --cache-type-k
- f16
- --cache-type-v
- f16
- --batch-size
- "2048"
- --ubatch-size
- "1024"
- --parallel
- "1"
- --cont-batching
- --flash-attn
- "on"
- --threads
- "8"
- --spec-type
- draft-mtp
- --spec-draft-n-max
- "5"
- --reasoning-budget
- "0"
- --temp
- "1.0"
- --top-k
- "20"
- --top-p
- "0.95"
- --jinja
AI 자동 생성 콘텐츠
본 콘텐츠는 r/LocalLLaMA의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기