본문 바로가기

LLM

Qwen3.6-27B 완전 분석 — 27B 모델이 397B MoE 능가

반응형

RTX 4090 하나로 프론티어급 코딩 에이전트를 돌릴 수 있는 시대가 왔습니다.

[핵심 요약]
→ 출시: 2026년 4월 22일, Alibaba Qwen Team
→ 라이센스: Apache 2.0 (상업 사용 가능)
→ 파라미터: 27B dense (이전 플래그십 Qwen3.5-397B 대비 1/14 크기)
→ VRAM: Q4_K_M 기준 ~16.8GB — RTX 4090 한 장으로 구동
→ SWE-bench Verified 77.2% — Claude Opus 4.6 (80.8%)과 3.6점 차
→ Terminal-Bench 2.0 59.3% — Claude 4.5 Opus와 동점
→ SkillsBench 48.2% — 397B MoE (30.0%) 대비 60% 향상
→ 주의: CUDA 13.2 버그 있음, CUDA 13.1 또는 12.x 사용 필요

왜 이게 충격인가

27B짜리 dense 모델이 397B MoE 모델을 코딩 벤치마크에서 전부 이겼습니다.

Qwen3.5-397B-A17B (이전 오픈소스 플래그십):
→ 총 파라미터: 397B
→ 활성 파라미터: 17B (MoE)
→ 모델 파일 크기: 807GB
→ 서빙: 멀티 GPU 필수

Qwen3.6-27B (이번 출시):
→ 총 파라미터: 27B (dense, 전부 활성)
→ 모델 파일 크기: 55.6GB (BF16), Q4_K_M ~16.8GB
→ 서빙: RTX 4090 한 장으로 가능
→ 벤치마크: 397B 전 항목에서 앞섬

 

[벤치마크 비교]
               Qwen3.6-27B   Qwen3.5-397B   차이
SWE-bench:     77.2%         76.2%          +1.0%p
Terminal-Bench: 59.3%        52.5%          +6.8%p
SkillsBench:   48.2%         30.0%          +18.2%p ← 충격
AIME 2026:     94.1%         —

파라미터 수가 1/14인데 성능이 더 높습니다. 아키텍처 혁신의 결과입니다.


실전 1 — 로컬 설치 (llama.cpp / GGUF)

가장 빠른 방법은 GGUF 양자화 버전입니다.

# GGUF 다운로드 (Unsloth Dynamic Q4 — 권장)
huggingface-cli download unsloth/Qwen3.6-27B-GGUF \
    Qwen3.6-27B-UD-Q4_K_XL.gguf

# llama.cpp 서버 실행
./llama-server \
    -m Qwen3.6-27B-UD-Q4_K_XL.gguf \
    -c 262144 \
    -ngl 99 \
    --host 0.0.0.0 \
    --port 8080
[GGUF 양자화별 VRAM 요구량]
→ Q4_K_M: ~16.8GB — RTX 4080 빠듯, RTX 4090 여유
→ Q5_K_M: ~19.5GB — RTX 4090 권장
→ Q6_K:   ~22.5GB — RTX 4090 가능
→ Q8_0:   ~28.6GB — A6000 48GB 권장
→ BF16:   ~55.6GB — 고성능 서버용

⚠️ 주의: KV 캐시는 별도 VRAM 소모
→ 기본 컨텍스트: 추가 1~3GB
→ 1M 토큰 풀 컨텍스트: 추가 20~40GB

실전 2 — vLLM 서빙

프로덕션 서빙에는 vLLM을 추천합니다.

# vLLM 설치 (0.19.0 이상 필수)
pip install "vllm>=0.19.0" --torch-backend=auto

# 텍스트 전용 서버 (VRAM 절약)
vllm serve Qwen/Qwen3.6-27B \
    --port 8000 \
    --tensor-parallel-size 2 \
    --max-model-len 262144 \
    --reasoning-parser qwen3 \
    --language-model-only  # 비전 인코더 제외 시 메모리 절약

# 멀티모달 포함 (이미지/비디오)
vllm serve Qwen/Qwen3.6-27B \
    --port 8000 \
    --tensor-parallel-size 2 \
    --max-model-len 262144 \
    --reasoning-parser qwen3 \
    --enable-auto-tool-choice \
    --tool-call-parser qwen3_coder
[vLLM 설정 포인트]
→ --reasoning-parser qwen3: Thinking 모드 파싱 필수
→ --tool-call-parser qwen3_coder: 에이전트 툴 호출 필수
→ --language-model-only: 텍스트만 쓸 때 메모리 절약
→ OOM 발생 시: --max-model-len을 128K로 줄이기
→ 최소 128K 컨텍스트 유지 권장 (Thinking 성능에 영향)

실전 3 — SGLang 서빙 (MTP 옵션 포함)

SGLang은 추론 속도를 추가로 올릴 수 있습니다.

# SGLang 설치 (0.5.10 이상 필수)
pip install "sglang[all]>=0.5.10"

# 기본 서버
python -m sglang.launch_server \
    --model-path Qwen/Qwen3.6-27B \
    --port 8000 \
    --tp-size 2 \
    --mem-fraction-static 0.8 \
    --context-length 262144 \
    --reasoning-parser qwen3

# MTP (Multi-Token Prediction) 옵션 — 속도 추가 향상
python -m sglang.launch_server \
    --model-path Qwen/Qwen3.6-27B \
    --port 8000 \
    --tp-size 2 \
    --mem-fraction-static 0.8 \
    --context-length 262144 \
    --reasoning-parser qwen3 \
    --speculative-algo NEXTN \
    --speculative-num-steps 3 \
    --speculative-eagle-topk 1 \
    --speculative-num-draft-tokens 4
[SGLang vs vLLM 선택 기준]
→ SGLang: MTP로 추론 속도 추가 향상 가능, 에이전트 서빙에 유리
→ vLLM: 레퍼런스 구현, 문서 더 풍부, 처음 세팅할 때 권장
→ 둘 다 OpenAI 호환 API 엔드포인트 제공

실전 4 — Cursor / Aider 연동

로컬 서버를 올리면 Cursor, Aider에 바로 붙일 수 있습니다.

// Cursor settings.json — 로컬 Qwen3.6-27B 연동
{
  "models": [
    {
      "title": "Qwen3.6-27B (local)",
      "provider": "openai",
      "model": "Qwen/Qwen3.6-27B",
      "apiBase": "http://localhost:8000/v1"
    }
  ]
}
# Aider 연동
aider \
    --model openai/Qwen/Qwen3.6-27B \
    --openai-api-base http://localhost:8000/v1 \
    --openai-api-key EMPTY
# Python에서 직접 사용 (OpenAI SDK)
from openai import OpenAI

client = OpenAI(
    api_key="EMPTY",
    base_url="http://localhost:8000/v1"
)

response = client.chat.completions.create(
    model="Qwen/Qwen3.6-27B",
    messages=[
        {
            "role": "user",
            "content": "FastAPI로 JWT 인증 시스템 만들어줘"
        }
    ],
    max_tokens=4000,
    temperature=1.0,
    top_p=0.95
)

print(response.choices[0].message.content)
[연동 포인트]
→ OpenAI 호환 엔드포인트라 기존 코드 수정 최소화
→ api_key는 아무 값이나 넣어도 됨 (로컬 서버는 검증 안 함)
→ Thinking 모드 활성화 시 temperature=1.0 권장 (공식 권고)

Thinking Preservation — 새로운 기능

Qwen3.6에서 처음 도입된 기능입니다.

# 기존 방식 — 매 요청마다 추론 컨텍스트 날아감
messages = [
    {"role": "user", "content": "이 코드 분석해줘"},
    {"role": "assistant", "content": "분석 결과..."},
    {"role": "user", "content": "이제 수정해줘"}
    # → 수정 요청 시 이전 추론 컨텍스트 없음
]

# Thinking Preservation — 이전 추론 맥락 유지
# 모델이 이전 메시지에서의 chain-of-thought를 기억
# 반복 개발, 코드 리팩토링에서 일관성 향상
# → 같은 코드베이스를 여러 번 수정할 때 특히 유효
[Thinking Preservation 효과]
→ 반복 개발: 이전 분석 결과를 다음 요청에 활용
→ 코드 리팩토링: 히스토리 기반 일관된 수정
→ 에이전트 루프: 이전 스텝 추론 맥락 유지로 오류 감소

클로즈드 소스 대비 포지션

               Qwen3.6-27B   Claude Opus 4.7   GPT-5.5
SWE-bench:     77.2%         84.3%             58.6%
Terminal-Bench: 59.3%        69.4%             82.7%
API 비용:       $0 (로컬)    $5/$25 per 1M     $5/$30 per 1M
VRAM:          16.8GB        —                 —
라이센스:       Apache 2.0   상업 API 전용      상업 API 전용
[포지션 정리]
→ SWE-bench: Claude Opus 4.7 > Qwen3.6-27B > GPT-5.5
→ Terminal-Bench: GPT-5.5 > Claude Opus 4.7 > Qwen3.6-27B
→ 비용: Qwen3.6-27B (로컬) >>> 클로즈드 모두
→ 프라이버시: 로컬 서빙이라 데이터 외부 전송 없음

마무리

✅ Qwen3.6-27B 써야 할 때
→ API 비용 0원으로 프론티어급 코딩 에이전트 돌리고 싶을 때
→ RTX 4090 한 장이 있는 개인 개발자
→ 데이터 외부 전송 불가한 보안 환경 (금융, 의료, 사내 코드베이스)
→ Claude/GPT API 비용이 부담스러운 스타트업
→ 오픈소스 기반 자체 코딩 에이전트 구축

❌ 아직 클로즈드 모델이 나을 때
→ SWE-bench 최고 성능이 필요할 때 (Claude Opus 4.7: 84.3%)
→ 터미널 에이전트 최강 성능 (GPT-5.5: 82.7%)
→ Ollama로 빠르게 테스트하고 싶을 때 (아직 미지원)
→ CUDA 13.2 환경 (버그 있음, 13.1 또는 12.x 필요)

관련 글:

 

 

SGLang B300 GPU (SM103)에서 Qwen3.5 서빙 — Attention Backend

B300 GPU에서 SGLang으로 Qwen3.5를 서빙하면서 어텐션 백엔드 설정을 이것저것 해봤습니다.환경GPU: NVIDIA B300 (SM103, Blackwell 계열)모델: Qwen3.5-4B (head_dim=256)프레임워크: SGLang (CUDA 12.9+)1차 시도 — FA4 + trt

cell-devlog.tistory.com

 

 

 

반응형