본문으로 건너뛰기

© 2026 Molayo

Reddit요약2026. 05. 17. 14:05

구형 GTX 1080(8 GB VRAM, 128k context)에서 ~30B MoE 모델로 24+ tok/s 달성

요약

저가형 구형 GPU(GTX 1080)와 저사양 시스템 환경에서 llama.cpp를 활용하여 Qwen 3.6 35B-A3B 및 Gemma 4 26B-A4B 같은 대규모 MoE 모델을 성공적으로 구동했습니다. 핵심은 MoE 오프로딩 기법으로, 사용 빈도가 낮은 전문가 가중치를 시스템 RAM에 두고 PCIe를 통해 GPU로 스트리밍하는 것입니다. 또한, Gemma 4의 MTP(speculative decoding) 성능 향상을 위해 llama.cpp의 특정 설정을 수정하여 CPU가 아닌 GPU에서 행렬 곱셈을 수행하도록 강제함으로써 상당한 속도 개선을 달성했습니다.

핵심 포인트

  • MoE 오프로딩: 사용 빈도가 낮은 전문가 가중치를 시스템 RAM에 배치하고 PCIe를 통해 스트리밍하는 방식으로 대형 모델 구동 가능.
  • Gemma 4 MTP 최적화: llama.cpp가 기본적으로 토큰 임베딩 테이블을 CPU에 유지하여 성능 저하를 일으키므로, `--override-tensor-draft` 플래그 사용으로 GPU 가속이 필수적임.
  • 저사양 환경에서의 성과: GTX 1080 같은 구형 GPU와 중고 시스템에서도 대규모 MoE 모델을 높은 토큰 생성 속도(tok/s)로 구동할 수 있음을 입증함.
  • 기술적 난이도: 최신 OS 및 하드웨어 조합에서 특정 라이브러리 호환성 문제(예: CUDA, gcc, glibc)를 해결하기 위한 심층적인 빌드 과정이 필요했음.

저는 llama.cpp를 사용하여 200달러짜리 중고 컴퓨터(i7-6700 / GTX 1080 / 32 GB RAM)에서 Qwen 3.6 35B-A3BGemma 4 26B-A4B를 구동했습니다 (TurboQuant/RotorQuant KV 캐시 양자화(quantisation)를 통해 8 GB VRAM 내에서 128k 컨텍스트(context)를 사용할 수 있습니다).

결과 (Q4_K_M 모델, 128k 컨텍스트):

모델tok/s주요 플래그
Qwen 3.6 35B-A3B~24--n-cpu-moe 30, K=turbo4 V=turbo3
...

핵심 비결은 MoE 오프로딩(offloading)입니다. llama.cpp는 사용 빈도가 낮은 전문가 가중치(cold expert weights)를 시스템 RAM에 배치하고 PCIe를 통해 GPU로 스트리밍하는 동시에, 자주 사용되는 레이어(hot layers)와 KV 캐시(KV cache)는 GPU에 유지할 수 있습니다. 이 시스템은 완전히 PCIe 대역폭 제한(PCIe 3.0 x16이 최대치에 도달하는 동안 GPU 사용률은 ~40-50%에 머묾)을 받습니다.

가장 큰 발견: Gemma 4의 MTP 투기적 디코딩(speculative decoding)은 기본 설정 상태에서는 거의 도움이 되지 않았습니다 (~5% 이득). 확인 결과 llama.cpp가 토큰 임베딩 테이블(token embedding table)을 조건 없이 CPU에 유지하고 있었습니다. 보통은 문제가 되지 않지만(단순한 get_rows 조회), Gemma 4의 MTP 어시스턴트는 LM 헤드(LM head)가 결합되어 있어, 모든 초안 토큰(draft token)이 PCIe를 통해 262k×1024 행렬 곱셈(matmul)을 수행하게 됩니다. --override-tensor-draft를 사용하여 이를 GPU로 강제하면 실제 ~22%의 속도 향상과 ~79%의 초안 수락률(draft acceptance rate)을 얻을 수 있습니다.

설정 시 어려웠던 점 (Fedora 42 + Pascal GPU):

  • akmod-nvidia를 580xx 브랜치로 고정 (Pascal은 레거시로 분류됨)
  • CUDA 12.9를 위해 gcc-14 강제 사용 (최신 gcc는 거부됨)
  • glibc 2.41 호환성을 위해 CUDA의 math_functions.h 패치
  • TurboQuant 캐시와 Gemma MTP 지원을 위해 AtomicBot-ai/atomic-llama-cpp-turboquant 포크(fork) 사용

모든 고된 빌드 세부 사항이 담긴 전체 블로그 포스트 (모든 명령어 및 MTP 임베딩 테이블 문제에 대한 디버깅 심층 분석 포함)

조만간 YouTube 가이드 영상도 제작할 계획입니다. 영상이 올라오면 업데이트하겠습니다.

설정에 관한 질문은 언제든 환영합니다.

AI 자동 생성 콘텐츠

본 콘텐츠는 Reddit AI Engineering의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0