6GB VRAM 노트북에서 Qwen3.6-35B-A3B 모델의 MTP 사용: 비추천
MTP for Qwen3.6-35B-A3B on 6GB VRAM laptop: not worth it
핵심 요약
6GB VRAM 환경에서 MTP를 사용해 본 결과, 토큰 생성 속도는 약간 개선되지만 프롬프트 처리 속도가 너무 느려 실사용에는 부적합함.
- 성능 테스트 — 6GB VRAM 노트북에서 MTP 적용 전후의 토큰 생성 및 프롬프트 처리 속도를 비교함.
- 결론 도출 — MTP 사용 시 토큰 생성 속도는 소폭 상승하나 프롬프트 처리 속도가 급격히 저하되어 비효율적임.
- VRAM 절약 팁 — 드래프트 모델 KV 캐시에 q4_0 양자화를 적용하면 정확도 손실 없이 VRAM을 절약할 수 있음.
- 향후 과제 — llama.cpp에서 프롬프트 처리 속도 문제가 개선된다면 MTP의 효용성이 달라질 가능성이 있음.
작년에 500유로를 주고 중고로 산 2021년형 Asus 게이밍 노트북을 가지고 있습니다. VRAM이 제한적인 이런 기기에서 Qwen3.6-35B-A3B 모델을 돌릴 때 최근 llama.cpp에 병합된 MTP 지원이 쓸만한지 확인해보고 싶었습니다. 그래서 MTP 사용 여부에 따른 성능을 측정하는 실험을 몇 가지 진행했습니다.
요약: 쓸모없습니다. MTP를 사용하면 프롬프트 처리(PP) 속도가 너무 느려져서 토큰 생성(TG) 속도에서 얻는 미미한 이득을 상쇄해 버립니다. 하지만 유용한 VRAM 절약 팁 하나는 발견했습니다. 드래프트 KV 캐시에 q4_0 양자화를 사용하는 것이 q8_0과 성능 차이가 거의 없으면서 VRAM을 약간 절약해 줍니다.
하드웨어
- Asus ROG Zephyrus G14 노트북, 2021년형
- AMD Ryzen 7 5800HS (내장 그래픽 포함, 8코어 / 16스레드)
- NVIDIA RTX 3060 Laptop GPU, 6GB VRAM
- 24GB RAM (DDR4 3200 MT/s), 1TB SSD
소프트웨어
- Linux Mint 22.2 (Ubuntu 24.04 기반), Cinnamon 데스크탑은 Radeon 내장 그래픽으로 구동 (따라서 3060은 llama.cpp 전용으로 사용)
- llama.cpp 버전: 9198 (a6d6183db), 현재 마스터 브랜치에서 GNU 13.3.0으로 빌드
- Ubuntu 저장소에서 설치한 CUDA 12.0
테스트 설정
모든 실험에서 다음 파라미터를 고정했습니다:
- Unsloth Qwen3.6-35B-A3B-MTP-UD-Q4_K_XL 모델 (이 시스템에서 돌릴 수 있는 한계치; MTP와 비-MTP 모두 동일한 모델을 사용하되, MTP 관련 명령줄 인자만 조정하여 MTP 기능을 끄고 켬)
- 메인 KV 캐시용 q8_0 양자화 (품질 저하를 최소화하기 위함)
- 컨텍스트 크기 65536 (Pi나 Dirac에서 에이전트 코딩을 하거나 Hermes Agent를 돌리기에 충분함)
- MTP의 경우 --spec-draft-n-max 2 사용 (경우에 따라 3이 더 나을 수도 있지만, 결과 비교를 위해 2로 고정)
- mmap 활성화 (이 설정 없이는 기기가 멈춰버려서 모델을 돌릴 방법이 없음)
다음 파라미터들은 변경했습니다:
- MTP vs 비-MTP (MTP 관련 CLI 파라미터 포함/제외)
- ubatch 크기: 512, 1024, 1536, 2048
- 드래프트 모델 KV 캐시 양자화: q8_0 또는 q4_0 (K와 V 모두 동일하게 적용)
- --fit-target: OOM 오류 없이 작동하는 가장 낮은 값 (64 단위로 조정)
아래는 llama-server 실행 명령어 예시입니다 (아래 표의 MTP 1):
build/bin/llama-server \
-m Qwen3.6-35B-A3B-MTP-UD-Q4_K_XL.gguf \
--threads 8 \
-ub 512 \
--parallel 1 \
--fit-target 448 \
-c 65536 \
-ctk q8_0 \
-ctv q8_0 \
-ctkd q8_0 \
-ctvd q8_0 \
--chat-template-kwargs '{"preserve_thinking": true}' \
--temp 0.6 \
--top-p 0.95 \
--min-p 0.0 \
--top-k 20 \
--repeat-penalty 1.0 \
--presence-penalty 0.0 \
--spec-type draft-mtp \
--spec-draft-n-max 2
모델에 두 가지 작업을 부여했습니다:
- MB: mtp-bench.py 스크립트를 실행하여 다양한 작업에서 MTP를 벤치마킹.

