RTX 2080 SUPER 8GB에서 Qwen3.5-35B-A3B로 DFlash 추측 디코딩 구현 성공
Got DFlash speculative decoding working on Qwen3.5-35B-A3B with an RTX 2080 SUPER 8GB
핵심 요약
8GB VRAM 환경에서 DFlash 추측 디코딩을 활용해 Qwen 35B 모델의 생성 속도를 약 34% 향상함.
- DFlash 추측 디코딩 — 8GB VRAM 환경에서 MoE CPU 오프로드와 결합해 성능 최적화 달성
- 생성 속도 향상 — 기존 26.8 tok/s에서 35.6-35.8 tok/s로 약 33-34% 속도 개선
- 최적 설정값 — -ncmoe 34 및 --draft-max 6 설정이 가장 효율적인 결과 도출
- 하드웨어 제약 극복 — VRAM 부족 문제를 MoE 오프로드와 경량 드래프트 모델로 해결
RTX 2080 SUPER 8GB에서 Qwen3.5-35B-A3B로 DFlash 추측 디코딩 구현 성공
llama.cpp에서 VRAM이 매우 제한적인 환경임에도 DFlash 추측 디코딩을 작동시키는 데 성공했습니다.
테스트는 다음 DFlash PR을 사용했습니다:
https://github.com/ggml-org/llama.cpp/pull/22105
테스트 빌드:
67cb0d507 (8942)
설정:
GPU: RTX 2080 SUPER 8GB
Model: Qwen3.5-35B-A3B Q5_K_M
Draft model: Qwen3.5-35B-A3B-DFlash Q4_K_M
Backend: CUDA
메인 모델은 약 24.44 GiB 크기의 35B MoE GGUF 파일이라 8GB VRAM에는 당연히 들어가지 않습니다. 핵심은 MoE 전문가 CPU 오프로드와 DFlash를 결합한 것입니다.
기준 성능 (Baseline)
DFlash를 사용하지 않은 일반적인 최적의 실행 결과는 다음과 같습니다:
~26.8 tok/s
대략적인 설정:
-ngl 999 -ncmoe 32 -fa 1 -ctk q8_0 -ctv q8_0 --no-mmap -t 5
-ncmoe 32가 가장 좋은 기준점이었습니다. 더 낮은 값은 VRAM을 너무 많이 사용하거나 성능이 떨어졌고, 더 높은 값은 속도가 서서히 줄어들었습니다.
DFlash 설정
DFlash의 경우 다음을 사용했습니다:
Target model:
C:\models\Qwen3.5-35B-A3B-Q5_K_M.gguf
Draft model:
C:\models\Qwen3.5-35B-A3B-DFlash-Q4_K_M.gguf
드래프트 모델은 타겟 모델에 비해 매우 작습니다:
DFlash draft size: ~267.8 MiB
Draft params: ~474M
Draft quant: Q4_K_M
DFlash 드래프트도 VRAM을 필요로 하기 때문에 최적의 -ncmoe 설정이 약간 변경되었습니다. 일반 실행 시에는 -ncmoe 32가 최적이었지만, DFlash 사용 시에는 다음이 최적점이 되었습니다:
-ncmoe 34
최종 명령어
테스트에 사용한 최종 명령어입니다:
build\bin\Release\llama-speculative-simple.exe ^
-m "C:\models\Qwen3.5-35B-A3B-Q5_K_M.gguf" ^
-md "C:\models\Qwen3.5-35B-A3B-DFlash-Q4_K_M.gguf" ^
--dflash ^
-p "Write a complete Python implementation of quicksort, mergesort, heapsort, and binary search. Include concise comments. Write code only." ^
-n 512 ^
--draft-max 6 ^
-cd 512 -c 4096 ^
--temp 0 --top-k 1 --seed 42 ^
-ngl 999 -ngld 99 -ncmoe 34 ^
-fa on ^
-ctk q8_0 -ctv q8_0 ^
-ctkd q8_0 -ctvd q8_0 ^
--no-mmap ^
-t 5


