
(Qwen3.6-27B-MTP모델, '안녕' 했을때 속도 52.58 token/s 확인)
어제 unsloth의 Qwen3.6-27B-MTP 모델이 보이길래 내려 받아서 테스트 해봤습니다.
(모델 주소 https://huggingface.co/unsloth/Qwen3.6-27B-MTP-GGUF )
RTX3090 1대기준 기존 27B 모델 속도는 20-30Token/s 정도 나왔었는데,
MTP 적용 후 위 스샷처럼 약 1.5-2배 정도 향상된 52 token/s 정도 나오는 것 같더군요 (단순 '안녕' 으로 확인)
개인용도로는 아주 쓸만하다고 생각됩니다.
사용하려면 MTP 적용된 모델과 함께 llama.cpp를 speculative decoding 이 가능한 버전으로 새로 컴파일 해야 되는 이슈가 있어서
위 모델 주소안에 안내대로 새로 컴파일 하시면 됩니다.
아래는 모델 다운방법과 새 llama.cpp 컴파일 방법입니다. (제가 설치한 기준입니다. 각자 다를수 있음)
# 모델 다운방법 (저는 Q4_K_M 을 사용 했습니다. 17.1GB 모델)
hf download unsloth/Qwen3.6-27B-MTP-GGUF Qwen3.6-27B-Q4_K_M.gguf --local-dir /home/내폴더/models/unsloth/Qwen3.6-27B-MTP-GGUF
# 새 llama.cpp 설치방법 (공식 혹은 unsloth 소개)
관련 댓글: MTP Support: https://github.com/ggml-org/llama.cpp/pull/22673
# 현재 세션에 쿠다(nvcc)경로 추가
export PATH=/usr/local/cuda/bin:$PATH
apt-get install pciutils build-essential cmake curl libcurl4-openssl-dev -y
git clone -b mtp-clean https://github.com/am17an/llama.cpp.git
cmake llama.cpp -B llama.cpp/build -DBUILD_SHARED_LIBS=OFF -DGGML_CUDA=ON
cmake --build llama.cpp/build --config Release -j --clean-first --target llama-cli llama-server
cp llama.cpp/build/bin/llama-* llama.cpp
근데, 저는 컴파일시 위 방법으로 마지막에 링크 오류가 나서 아래 방법으로 컴파일 했습니다.
cd ~/llama.cpp # llama.cpp 폴더로 이동
# build 폴더 완전 삭제
rm -rf build
CUDACXX=/usr/local/cuda/bin/nvcc \
cmake -B build \
-DGGML_CUDA=ON \
-DCMAKE_CUDA_COMPILER=/usr/local/cuda/bin/nvcc \
-DCUDAToolkit_ROOT=/usr/local/cuda/targets/x86_64-linux \
-DCMAKE_CUDA_ARCHITECTURES=native \
-DCMAKE_EXE_LINKER_FLAGS="-L/usr/local/cuda/lib64 -L/usr/local/cuda/targets/x86_64-linux/lib" \
-DCMAKE_SHARED_LINKER_FLAGS="-L/usr/local/cuda/lib64"
cmake --build build --config Release -j$(nproc)
# llama.cpp 의 바이너리는 ln -sf 로 링크만 걸어줍니다. (이유는 자주 컴파일이 변경되기 때문)
sudo ln -sf /home/내폴더/git/llama.cpp/build/bin/llama-cli /usr/local/bin/llama-cli
sudo ln -sf /home/내폴더/git/llama.cpp/build/bin/llama-server /usr/local/bin/llama-server
sudo ln -sf /home/내폴더/git/llama.cpp/build/bin/llama-quantize /usr/local/bin/llama-quantize
위 실행옵션 중 맨 밑에
-np 1 \
--spec-type mtp \
--spec-draft-n-max 3
이부분이 핵심입니다.
아래는 라마 실행 배치파일
# cat qwen36_27b_mtp.sh
#!/bin/sh
export LD_LIBRARY_PATH=/home/내폴더/git/llama.cpp/build/bin:$LD_LIBRARY_PATH
/usr/local/bin/llama-server \
-m /home/내폴더/models/unsloth/Qwen3.6-27B-MTP-GGUF/Qwen3.6-27B-Q4_K_M.gguf \
--alias Qwen3.6-27B-MTP \
--host 0.0.0.0 \
--port 8000 \
--temp 0.6 \
--top-p 0.95 \
--top-k 40 \
--min-p 0.05 \
--repeat-penalty 1.0 \
--presence-penalty 0.5 \
--kv-unified \
--cache-type-k q4_0 \
--cache-type-v q4_0 \
--flash-attn on \
--ctx-size 196608 \
--n-gpu-layers 99 \
--batch-size 2048 \
--ubatch-size 512 \
--no-mmap \
--fit-target 1536 \
--api-key sk-kkkk \
-np 1 \
--spec-type mtp \
--spec-draft-n-max 3
(api key 부분 변경하거나 삭제. ctx-size 는 262144 로 했더니 oom 으로 터져서 조금 낮췄습니다. 추가. 196608 로도 운영하다가 oom 으로 터져서 131072 로 다시 낮췄습니다. 가늠이 안되네요 흑 슬픕니다.)
이만 줄입니다.
ps. 보너스 Qwen3.6-27B 이면서 MTP 지원되면서 검열해제버전 모델
https://huggingface.co/llmfan46/Qwen3.6-27B-uncensored-heretic-v2-Native-MTP-Preserved-GGUF
ps2. 위에 옵션들 줄바꿈시
태그는 왜 나오는지 모르겠습니다. 역슬래시 \ 에요.