devway
홈전체 글태그

카테고리

  • 전체40
  • 인프라3
    • 하드웨어2
    • ubuntu1
  • AI34
    • 로컬 LLM8
    • AI 코딩 도구9
    • 컴퓨터 비전4
    • 디자인1
    • 이미지생성2
    • 데이터 아키텍쳐0
    • agent2
    • 모델3
  • Backend1
  • Architecture2
    • 분산 시스템1
    • 데이터0

태그

  • #로컬LLM9
  • #ClaudeCode9
  • #AI개발7
  • #LocalLLM6
  • #AI에이전트5
  • #에이전트4
  • #컴퓨터비전4
  • #MCP4
  • #LLM4
  • #RTX30904
  • #AI코딩4
  • #Anthropic4
  • #모델비교3
  • #객체탐지3
  • #로컬AI3
  • #딥러닝3
  • #개발도구3
  • #Gemma43
  • #이미지생성3
  • #백엔드3

구독

  • RSS
  • Sitemap
로컬 LLM · 2026-03-26 · 10분

Qwen 3.5 35B-A3B 깔고 나서 GPT 구독 끊을 뻔함

Alibaba Qwen 팀이 풀어놓은 35B-A3B 로컬 모델을 RTX 3090에 직접 돌려본 후기. 3B 액티브 파라미터로 Sonnet 4.5급 코딩을 뽑아내는 MoE 구조, 110 tok/s 만드는 플래그 셋업, Ollama가 왜 답이 아닌지까지 정리.

목차
  • 35B 모델이 3B처럼 돈다는 게 뭔 소리냐
  • 그래서 실제로 얼마나 빠른데
  • Ollama로 못 쓰는 이유
  • Claude Code에 꽂아 쓰기
  • 솔직한 단점
  • 결국 어떤가

한 일주일 전쯤 X에서 누가 "RTX 3090 한 장으로 Sonnet 4.5급 모델 돌린다"는 글을 봤어요. 솔직히 안 믿었음. 이런 글 보면 보통 '실제로 깔아보면 답답해서 못 씀' 패턴이거든요. 근데 직접 깔고 돌려본 결과... 이번엔 좀 달랐어요.

지금 이 글 쓰는 시점에 제 3090에서 Qwen 3.5 35B-A3B가 초당 110토큰 정도 뱉고 있어요. 컨텍스트는 26만 2천 토큰까지 그대로. 처음엔 50 tok/s 정도 나와서 '뭐, 이 정도면 그냥저냥이지' 하다가, 플래그 세 개 추가했더니 두 배가 됐음. 그 얘기를 좀 해볼게요.

RTX 3090 그래픽카드가 장착된 홈 PC와 모니터에 흐르는 토큰 출력 화면

35B 모델이 3B처럼 돈다는 게 뭔 소리냐#

이름부터 좀 낚시인데, 35B-A3B에서 A3B가 'Active 3B'예요. 디스크엔 35B 통째로 들어가는데 토큰 하나 처리할 때 활성화되는 파라미터는 3B만. Mixture-of-Experts(MoE) 구조라서 그래요. 256개 전문가 네트워크 중에 9개만 골라서 쓰는 식.

뭔 말이냐면, 35B 모델의 지식은 통째로 들고 있으면서 추론 속도는 3B 모델급으로 빠름. 처음 들었을 땐 '편법 아닌가?' 싶었는데, 실제로 돌려보면 그냥 마법인 듯.

근데 진짜 신기한 건 아키텍처 자체. 트랜스포머 블록 4개 중 3개는 Gated DeltaNet이라는 선형 어텐션 쓰고, 1개만 풀 어텐션이에요. 이 3:1 비율이 컨텍스트 늘려도 속도 거의 안 떨어지게 만들어주는 핵심.

(여기서 좀 옆길로 새는데, Kimi Linear 팀도 똑같이 3:1 비율 썼더라고요. 두 팀이 따로 같은 결론 낸 거 보면 이제 이게 그냥 표준이 되는 분위기.)

MoE 구조에서 256개 전문가 중 9개만 활성화되는 모습을 시각화한 추상 이미지

그래서 실제로 얼마나 빠른데#

RTX 3090에서 제가 직접 잰 숫자:

  • Ollama 디폴트 셋업: 약 50 tok/s
  • llama.cpp 직접 빌드 + 플래그 세 개: 약 110 tok/s

122 tok/s는 4090 기준이고, 3090은 110 근처가 한계인 듯. 근데 110도 사실 말 빠르게 하는 사람보다 빨라요. 코드 짤 때 답답함이 1도 없음.

핵심 플래그는 이거 세 개:

  • --cache-type-k q8_0 --cache-type-v q8_0 — KV 캐시 양자화. 이거 하나로 12~38% 빨라짐
  • -fa — Flash Attention 켜기
  • -np 1 — 단일 사용자 모드 (스케줄링 오버헤드 제거)

빌드는 그냥 git clone 하고 cmake 돌리면 끝나요. 한 5분 정도?

git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
cmake -B build -DGGML_CUDA=ON -DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release -j

./build/bin/llama-server \
  -hf unsloth/Qwen3.5-35B-A3B-GGUF:UD-Q4_K_XL \
  --cache-type-k q8_0 \
  --cache-type-v q8_0 \
  -np 1 -ngl 99 -fa \
  --ctx-size 65536 \
  --jinja --port 8080

Ollama로 못 쓰는 이유#

이 부분에서 두 시간 정도 날렸어요. 처음에 Ollama로 시작했거든요. 깔기 쉬우니까. 근데 속도가 진짜 답답해서 '내 GPU가 고장났나' 의심까지 함.

문제는 Ollama가 MoE 전문가 오프로딩을 지원 안 한다는 거. VRAM 부족하면 그냥 레이어 단위로 잘라서 CPU랑 GPU에 던져버려요. MoE 모델한테는 정확히 반대로 해야 하거든요. 어텐션이랑 노름은 GPU에 두고 전문가 FFN 가중치만 CPU로 보내야 효율 나옴.

거기다 Ollama 디폴트가 f16 KV 캐시고, Flash Attention도 꺼져있고, 배치 사이즈 컨트롤도 안 됨. 한 마디로 이 모델한테는 안 맞는 도구.

llama.cpp가 정답이에요. 적어도 지금은.

디폴트 셋업과 최적화된 셋업의 성능 차이를 시각화한 비교 이미지

Claude Code에 꽂아 쓰기#

이게 제일 미친 부분인데, claude-code-router라는 도구로 Claude Code의 엔드포인트를 로컬 llama-server로 바꿀 수 있어요.

즉 Claude Code의 그 똑똑한 멀티파일 편집, 에러 복구, 파일 관리 기능은 그대로 쓰면서 모델만 로컬로 돌리는 거. 토큰 비용 0원. API 한도 걱정 없음.

설정은 이 정도가 끝:

{
  "providers": [
    {
      "name": "llamacpp",
      "api_base_url": "http://localhost:8080/v1/chat/completions",
      "api_key": "not-needed",
      "models": ["Qwen3.5"]
    }
  ]
}

저는 이거 깔고 나서 'API 비용 아껴야지' 하던 강박이 사라졌어요. 그냥 막 시킴. 망해도 토큰값 안 나오니까. 어떤 분이 이 셋업으로 게임 하나를 통째로 자동 생성시켰다는데 — 파일 10개, 코드 3,483줄, 충돌 감지 디버깅까지 자기 혼자 하더라고요. 좀 무서웠음.

터미널에서 동시에 여러 파일이 생성되며 코드가 흘러나오는 모니터 화면

솔직한 단점#

다 좋은 건 아니에요. 며칠 굴려보면서 느낀 한계:

복잡한 추론에선 결국 밀림. 다단계 논리, 깊은 수학 증명, 미묘한 아키텍처 결정 같은 거 시키면 27B 덴스 모델보다 얕아요. 액티브 파라미터 3B면 실질적 추론 깊이가 10B급이지 35B급이 아니에요. 지식은 있는데 처리 깊이가 부족한 느낌.

구버전보다 사실 32% 느림. 이게 좀 웃긴 부분인데, 같은 하드웨어에서 옛날 Qwen3 30B-A3B가 raw 속도는 더 빨랐어요. DeltaNet 레이어랑 어휘 사전 커진 게 오버헤드라서. 대신 컨텍스트 늘릴 때 속도가 거의 안 떨어지는 게 새 모델 장점.

24GB VRAM 미만이면 좀 빡셈. 16GB 카드도 돌긴 도는데 (5080 기준 70 tok/s 정도) 컨텍스트 줄여야 하고 MoE 오프로딩 수동 설정해야 함. 16GB로 시작하지 말고 그냥 중고 3090 가는 게 정신건강에 좋아요.

툴 콜링 깨지는 버그 있었음. Unsloth 팀이 챗 템플릿 버그 잡아서 다시 올렸는데, 다른 양자화 업로더 거 받으면 함수 콜링이 조용히 깨져있을 수 있어요. JSON이 이상하게 나오면 이거 의심해보세요.

깨진 JSON 출력을 보며 머리를 감싸쥔 개발자의 모습

결국 어떤가#

개인적으로는 ChatGPT Plus 구독을 일단 끊었어요. 코딩은 거의 다 이 로컬 셋업으로 함. 진짜 깊은 추론 필요한 건 가끔 클로드 웹UI 쓰고요. 그것도 무료 한도 안에서 충분.

24GB GPU 있으면 무조건 깔아보세요. 진입 장벽 별로 안 높아요. llama.cpp 빌드하고 플래그 세 개 외우면 끝. Ollama 디폴트로 한 번 돌려보고 '음 별로네' 하고 닫지 마세요. 그건 모델 잘못이 아니라 셋업 잘못.

중고 3090 80만 원이면 솔직히 1년 GPT/Claude API 비용보다 쌉니다. 24개월 쓰면 본전 뽑고도 남고. 저는 이거 직접 계산해보고 좀 어이없었어요. 왜 진작 안 했지 싶더라고요.

지금 이 글 마치는 동안에도 백그라운드에서 Qwen이 코드 리팩토링 하나 돌리고 있어요. 비용 걱정 없이 일 시키는 감각, 한 번 맛보면 못 돌아갑니다.

  • #로컬LLM
  • #Qwen
  • #AI코딩
  • #LocalAI
  • #ClaudeCode
  • #프론티어모델
  • #RTX3090
D

devway

AI 도구로 실제 서비스 운영하면서 손에 쥔 결과만 적는 1인 개발 노트. RTX 3090 + 로컬 LLM 환경에서 직접 굴려보고 글로 옮긴다.

소개전체 글RSS

관련 글

AI/로컬 LLM2026-05-04

토큰 다 써서 오늘 일 못 한다는 사람이 늘고 있음

에이전틱 개발이 일상이 되면서 토큰 한도가 새로운 생산성 병목이 되어가는 중. 클라우드 단일 의존이 만든 redundancy 문제, pay-to-win 경쟁 구조, 로컬 모델이 지금 와있는 자리, 그리고 한국 개발자 입장에서 더 따끔한 부분까지 정리.

  • #로컬LLM
  • #에이전틱개발
  • #ClaudeCode
  • +7
AI/모델2026-05-09

Nemotron 3 Nano Omni — 모델 자체보다 인코더 합치는 방식이 더 흥미로움

NVIDIA의 새 omni-modal 모델 Nemotron 3 Nano Omni 발표. 30B 총 파라미터에 3B 액티브, 컨슈머 GPU에 INT4로 올릴 수 있다는 점도 화제지만, 진짜 흥미로운 부분은 모달리티별 best-of-breed 인코더를 얇은 projector로 합치는 reference architecture. 그리고 omni-modal 발표 때마다 반복되는 패턴에 대한 회의적인 메모.

  • #NVIDIA
  • #Nemotron
  • #omni모델
  • +7
AI/AI 코딩 도구2026-05-08

Claude Code 옆에 캐시 레이어 붙이겠다는 발상

Claude Code가 한 세션 안에서 같은 파일을 두세 번씩 다시 읽는 문제를 외부 미들웨어로 풀어보겠다는 오픈소스 프로젝트(OpenWolf)가 영어권에서 돌고 있음. 80% 토큰 절감이라는 수치는 어디까지 믿을 수 있는지, 백엔드 입장에서 보면 어떤 부분이 의심스러운지 정리.

  • #ClaudeCode
  • #AI코딩
  • #개발도구
  • +7

댓글

(댓글 미설정 — NEXT_PUBLIC_GISCUS_* 환경변수 구성 필요)
소개개인정보처리방침RSSSitemapaickywayconvertprompt
© devway