본문으로 건너뛰기

Qwen3.8-27B 단일 GPU 추론 최적화

FFN 일부만 CPU로 보내 Qwen3.8-27B의 VRAM과 추론 속도를 함께 최적화하는 설정입니다.

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

TL;DR

16GB VRAM GPU에서 Qwen3.8-27B를 순차 레이어 offloading만으로 실행하면 일부 어텐션 연산이 CPU로 이동해 생성 속도가 8–12 t/s로 떨어지고 VRAM 활용도도 낮아집니다. 게시물은 `--override-tensor`로 세 블록마다 FFN 가중치만 CPU로 보내 약 2.8GB를 확보하고, Attention 연산과 65,536 컨텍스트의 2.125GB q8_0 KV Cache를 GPU에 유지합니다. 여기에 MTP 추측 디코딩의 초안 토큰 수를 2로 설정하고 생성·프롬프트 스레드를 분리해 약 18–20 t/s와 30–50% 처리량 향상을 목표로 합니다. RTX 50-Series에서는 CUDA 그래프를 비활성화해 동적 offloading 중 드라이버 지연을 줄이는 구성이 함께 제시됩니다.

실용적 조언

  • `-ngl`로 레이어 수만 조절하기보다 `--override-tensor`에서 FFN 텐서 패턴을 지정해 VRAM 사용량을 세밀하게 조정합니다. 게시물의 정규식은 0, 3, 6부터 63까지 세 블록 간격의 FFN 텐서를 CPU로 보냅니다. 이 배치로 확보한 공간은 65,536 컨텍스트의 q8_0 KV Cache에 사용되며, 게시물은 2.125GB VRAM과 tail-token divergence 및 코딩 문법 문제 없음이라는 결과를 제시합니다.
  • `--spec-type draft-mtp`와 `--spec-draft-n-max 2`를 함께 지정해 MTP 추측 디코딩을 활성화합니다. 게시물은 27B dense 아키텍처에서 이 설정이 처리량을 약 30–50% 높인다고 기록합니다. 초안 KV Cache에도 `q8_0`을 지정해 주 모델의 65,536 컨텍스트 설정과 형식을 맞춥니다.
  • 생성 스레드는 `-t 8`로 물리적 CPU 성능 코어에 제한하고, 프롬프트 입력 배치 스레드는 `-tb 16`으로 하이퍼스레딩을 활용하게 분리합니다. RTX 50-Series에서는 `GGML_CUDA_DISABLE_GRAPHS=1`을 설정해 동적 offloading 중 CUDA 그래프 캡처로 인한 드라이버 정지를 피합니다. `GGML_CUDA_ENABLE_UNIFIED_MEMORY=1`도 함께 지정해 CPU와 GPU 메모리 운용을 허용합니다.

섹션별 상세

16GB VRAM GPU에서 `-ngl 53`만 사용하면 남은 어텐션 블록이 CPU 메모리로 이동해 생성 지연이 커진다는 것이 출발점입니다. 게시물은 `--override-tensor`로 전체 Transformer 블록 대신 `blk.(0|3|6|...|63).ffn_.*` 패턴에 맞는 FFN 가중치만 CPU로 배치합니다. 세 블록마다 FFN 한 층을 이동하면 약 2.8GB의 VRAM을 비우면서 모든 Attention 연산을 GPU VRAM에 유지할 수 있어, 8–12 t/s 수준을 18–20 t/s로 높이는 구성을 목표로 합니다.
position_hint_prefix

용어 해설

KV 캐시(KV Cache)
KV Cache는 Transformer의 어텐션이 이전 토큰의 Key와 Value를 저장해 긴 문맥에서 같은 계산을 반복하지 않게 하는 메모리 구조입니다. 이 글에서는 65,536 토큰 문맥을 유지하기 위해 K와 V를 각각 q8_0 형식으로 저장합니다.
피드포워드 네트워크(FFN)
FFN은 Transformer 블록 안에서 각 토큰의 표현을 독립적으로 변환하는 가중치 층입니다. 이 글의 설정은 FFN 가중치 일부만 CPU 메모리로 보내 GPU VRAM을 확보하고, 어텐션 연산은 GPU에 남기는 방식입니다.
MTP 추측 디코딩(MTP Speculative Decoding)
MTP Speculative Decoding은 별도의 초안 생성 경로가 여러 후속 토큰을 먼저 예측하게 한 뒤 주 모델이 이를 검증하는 추론 방식입니다. 게시물은 27B dense 모델에서 `draft-mtp`와 최대 초안 토큰 2개를 사용합니다.
CUDA 그래프(CUDA Graphs)
CUDA Graphs는 반복되는 GPU 작업을 그래프로 캡처해 실행 오버헤드를 줄이는 기능입니다. 게시물은 RTX 50-Series에서 동적 offloading 중 발생하는 드라이버 지연을 피하려고 `GGML_CUDA_DISABLE_GRAPHS=1`을 지정합니다.
텐서별 배치 재정의(--override-tensor)
`--override-tensor`는 모델 전체 블록이 아니라 이름 패턴에 맞는 특정 텐서의 실행 장치를 재지정하는 llama.cpp 계열 옵션입니다. 게시물은 세 블록마다 FFN 텐서를 CPU로 보내 약 2.8GB의 VRAM을 회수합니다.

코드 예제

bash
#!/usr/bin/env bash

# Blackwell / RTX 50-series runtime stability environment variables
export GGML_CUDA_DISABLE_GRAPHS=1
export GGML_CUDA_ENABLE_UNIFIED_MEMORY=1

llama-server \
  -m models/Qwen3.8-27B-IQ4_XS.gguf \
  --host 0.0.0.0 \
  --port 8085 \
  --jinja \
  --chat-template-kwargs '{"reasoning_effort": "medium"}' \
  --reasoning-preserve \
  -fa on \
  --fit off \
  -ngl 99 \
  --override-tensor "blk\.(0|3|6|9|12|15|18|21|24|27|30|33|36|39|42|45|48|51|54|57|60|63)\.ffn_.*=CPU" \
  -c 65536 \
  --cache-type-k q8_0 \
  --cache-type-v q8_0 \
  --spec-type draft-mtp \
  --spec-draft-n-max 2 \
  --cache-type-k-draft q8_0 \
  --cache-type-v-draft q8_0 \
  --parallel 1 \
  -b 512 \
  -ub 256 \
  -t 8 \
  -tb 16 \
  --mlock \
  --temp 1.0 \
  --top-p 0.95 \
  --top-k 20 \
  --min-p 0.0 \
  --presence-penalty 0.0 \
  --repeat-penalty 1.0

16GB VRAM과 64GB 시스템 RAM 환경에서 Qwen3.8-27B를 실행하도록 FFN 일부를 CPU로 이동하고 q8_0 KV Cache, MTP 추측 디코딩, CPU 스레드 배치를 함께 설정한 llama-server 실행 명령입니다.

언급된 도구

llama-server중립

Qwen3.8-27B GGUF 모델을 65,536 컨텍스트와 q8_0 KV Cache 설정으로 서빙하는 추론 서버입니다.

AI 분석 전체 내용 보기

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

출처 · 인용 안내

원문 발행 2026. 08. 18.수집 2026. 08. 19.출처 타입 REDDIT

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