본문으로 건너뛰기

DFlash 1을 Qwen3.5-9B에 연결하는 절차

Qwen3.5-9B에 DFlash 1을 GGUF draft model로 연결하는 llama.cpp 설정 절차와 75 tokens/sec 사용 경험

이 요약은 AI가 원문을 분석해 생성했습니다. 정확한 내용은 원문 기준으로 확인하세요.

TL;DR

작성자는 DFlash 2를 지원하지 않는 fine-tuned model에서 DFlash 1을 사용하기 위해 Qwen BPE 토크나이저 파일을 내려받고 DFlash draft model을 GGUF로 변환하는 절차를 정리했습니다. 변환한 파일은 llama.cpp의 model-draft와 spec-draft-n-max 설정에 연결하며, deprecated 인자 대신 새 플래그를 사용합니다. R9700과 Q8_0, 64K context 조합에서 75 tokens/sec와 간결한 출력을 얻었다고 했지만, 절차 자체는 직접 테스트하지 않았고 성능 측정 조건도 제한적으로 제시됐습니다.

합의점 vs 논쟁점

논쟁점

  • DFlash 1 연결 절차가 단계별 명령으로 정리되어 있지만 작성자가 직접 테스트하지 않았기 때문에 변환 및 서버 실행 성공 여부는 본문만으로 확정하기 어렵습니다.
  • 64K context에서 75 tokens/sec라는 성능 수치는 구체적이지만 측정 조건과 반복 횟수가 제시되지 않아 일반적인 성능으로 확대하기 어렵습니다.

실용적 조언

  • 먼저 DFlash 모델 디렉터리에 tokenizer.json, tokenizer_config.json, vocab.json, merges.txt를 내려받은 뒤 convert_hf_to_gguf.py의 --target-model-dir가 해당 디렉터리를 가리키는지 확인해야 합니다. 변환 결과는 Qwen3.5-9B-DFlash-Clean.gguf라는 별도 파일로 저장하고, 이후 model-draft 또는 --model-draft 경로가 그 파일과 일치하는지 점검해야 합니다. 글 자체가 절차를 미테스트 상태로 제공하므로 실행 전 deprecated 인자와 경로를 환경에 맞게 확인해야 합니다.

섹션별 상세

작성자는 fine-tuned model이 DFlash 2를 지원하지 않는다고 보면서도 DFlash 1을 연결하는 경로를 정리했습니다. 핵심 문제는 DFlash 원본 디렉터리에 변환 스크립트가 읽을 tokenizer 정의가 부족한 상황이며, Qwen BPE 파일을 같은 디렉터리에 내려받는 방식으로 입력 조건을 맞춥니다. 다만 작성자 스스로 이 절차를 직접 테스트하지 않았고, 오류가 있으면 AI가 진단할 수 있다고 밝혔습니다.
bash
cd /opt/llama-cpp/models/z-lab-Qwen3.5-9B-DFlash

wget https://huggingface.co/Qwen/Qwen2.5-7B-Instruct/raw/main/tokenizer.json -O tokenizer.json
wget https://huggingface.co/Qwen/Qwen2.5-7B-Instruct/raw/main/tokenizer_config.json -O tokenizer_config.json
wget https://huggingface.co/Qwen/Qwen2.5-7B-Instruct/raw/main/vocab.json -O vocab.json
wget https://huggingface.co/Qwen/Qwen2.5-7B-Instruct/raw/main/merges.txt -O merges.txt

DFlash 모델 원본 디렉터리에 Qwen BPE 토크나이저 파일을 내려받습니다.

GGUF 변환 단계에서는 convert_hf_to_gguf.py에 DFlash 모델 경로와 --target-model-dir를 같은 디렉터리로 지정하고 출력 파일명을 Qwen3.5-9B-DFlash-Clean.gguf로 설정합니다. 이후 INI에서 주 모델은 Q8_0 GGUF 파일로, 보조 모델은 새로 변환한 DFlash GGUF 파일로 연결하며 --draft-max와 spec-type = draft-mtp처럼 더 이상 쓰지 않는 인자를 제거합니다. 대신 model-draft와 spec-draft-n-max = 4를 사용하고 reasoning-budget, temperature, top-p, min-p, reasoning-format, ctx-size를 함께 지정합니다.
bash
python3 /home/keith/src/github.com/ggml-org/llama.cpp/convert_hf_to_gguf.py \
  /opt/llama-cpp/models/z-lab-Qwen3.5-9B-DFlash \
  --target-model-dir /opt/llama-cpp/models/z-lab-Qwen3.5-9B-DFlash \
  --outfile /opt/llama-cpp/models/Qwen3.5-9B-DFlash-Clean.gguf

토크나이저 파일이 있는 DFlash 디렉터리를 변환 대상으로 지정해 GGUF 파일을 생성합니다.

직접 실행할 때는 llama-server에 주 모델과 --model-draft를 각각 전달하고 --spec-draft-n-max 4, --ctx-size 2048, -dev Vulkan0를 사용합니다. 서비스 설정 예시의 ctx-size는 65536이지만 CLI 시험 명령에서는 2048로 줄어들어 두 구성의 컨텍스트 크기가 서로 다릅니다. 따라서 글의 절차를 재현할 때는 INI 실행과 직접 CLI 실행을 같은 설정으로 간주하지 않고 각각의 값을 따로 확인해야 합니다.
ini
[Qwen3.5-9B (Fast)]
model = /opt/llama-cpp/models/Qwen3.5-9B-The-Defiant-Fable-Uncnr-Heretic-NEO-MAX-Q8_0.gguf
model-draft = /opt/llama-cpp/models/Qwen3.5-9B-DFlash-Clean.gguf
spec-draft-n-max = 4
dev = Vulkan0
reasoning-budget = -1
temp = 0.6
top-p = 0.95
min-p = 0.05
reasoning-format = deepseek
ctx-size = 65536

주 모델과 DFlash draft model을 연결하고 추론 및 컨텍스트 설정을 지정합니다.

작성자는 R9700에서 Q8_0 양자화와 64K context를 사용했을 때 75 tokens/sec의 속도와 concise output을 얻었다고 밝혔습니다. reasoning 품질에 대해서는 fantastic reasoning이라고 평가했지만, 수치가 반복 측정이나 공식 벤치마크인지 여부는 본문에 나오지 않습니다. 이 글의 검증 가능한 근거는 실행 명령과 설정값이며, 성능 수치는 작성자의 단일 사용 경험으로 구분해야 합니다.
bash
/opt/llama-cpp/bin/llama-server \
  --host 0.0.0.0 \
  --port 8083 \
  -m /opt/llama-cpp/models/Qwen3.5-9B-The-Defiant-Fable-Uncnr-Heretic-NEO-MAX-Q8_0.gguf \
  --model-draft /opt/llama-cpp/models/Qwen3.5-9B-DFlash-Clean.gguf \
  --spec-draft-n-max 4 \
  --ctx-size 2048 \
  -dev Vulkan0

systemd 없이 llama-server를 직접 실행해 주 모델과 DFlash draft model의 연결을 시험합니다.

용어 해설

BPE 토크나이저(BPE Tokenizer)
텍스트를 모델이 처리할 토큰 단위로 나누는 구성 요소입니다. 이 글에서는 Qwen BPE 파일인 tokenizer.json, vocab.json, merges.txt 등을 DFlash 모델 디렉터리에 내려받아 GGUF 변환 과정에서 병합 규칙과 어휘를 읽도록 구성합니다.
GGUF
이 글에서 Hugging Face 형식의 DFlash draft model을 llama.cpp가 읽을 수 있는 파일로 변환한 결과물입니다. 변환 스크립트가 tokenizer 파일을 참조한 뒤 Qwen3.5-9B-DFlash-Clean.gguf를 생성하고, llama-server의 draft 모델 경로에 연결합니다.
초안 모델(Draft Model)
주 모델의 추론 과정에 함께 연결되는 보조 모델입니다. 글에서는 DFlash 1을 GGUF로 변환한 뒤 model-draft 또는 --model-draft 인자로 지정하고, spec-draft-n-max 값을 4로 설정해 빠른 실행 구성을 만듭니다.

언급된 도구

llama.cpp중립

convert_hf_to_gguf.py로 DFlash 모델을 GGUF로 변환하고 llama-server로 주 모델과 draft model을 실행합니다.

언급된 리소스

AI 분석 전체 내용 보기

AI 요약 · 북마크 · 개인 피드 설정 — 무료

출처 · 인용 안내

원문 발행 2026. 08. 20.수집 2026. 08. 21.출처 타입 REDDIT

인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.