51B 파라미터를 SSD로 밀어내기 — Qwen 3.8 Flash Next ngram 오프로드 실험
맥에서 로컬 모델 좀 돌려보려다 보면 애플의 그 악랄한 메모리 장사에 매번 피눈물을 흘린다. (램 몇십 기가 올릴 때마다 금괴 값을 부른다…) 모델 크기가 100B를 훌쩍 넘어가는 순간, CTO 옵션 가격표를 보며 조용히 뒤로 가기를 누르는 게 우리 서민 개발자들의 일상이었다.
그런데 어제 r/LocalLLM에 기가 막힌 발상의 전환이 올라왔다. Qwen 3.8 Flash Next의 51B 파라미터짜리 ngram 테이블을 통째로 SSD에 던져버려서, 추론 속도 저하 없이 메모리 26GB를 공짜로 확보한 실험이다.
무엇을 옮겼나
Qwen의 차세대 아키텍처에서 가장 흥미로운 지점은 바로 이 ‘ngram 룩업 테이블’이다. 모델이 지식이나 사실 관계 데이터를 무거운 신경망 가중치에 억지로 우겨넣는 대신, 사전처럼 빠르게 인덱싱해 찾아볼 수 있는 룩업 테이블로 따로 분리해 낸 거다.
이 테이블은 복잡한 행렬 곱셈(Matrix Multiplication) 연산이 필요 없고, 그냥 검색하듯 조회만 하면 된다. 즉, 비싸디비싼 초고속 VRAM에 24시간 내내 모셔둘 이유가 전혀 없다는 뜻이다.
숫자로 보면 더 와닿는다. Qwen 3.8 Flash Next의 모델 본체는 125B인데, ngram 테이블이 무려 51B나 차지해서 전체 크기가 176B에 달한다. 전체 모델의 30%가 그냥 ‘조회용 데이터’라는 거다. 이걸 초고속 NVMe SSD에 박아두고, 필요할 때만 OS 메모리 맵(mmap)으로 쏙쏙 빼먹으면 귀한 통합 메모리를 엄청나게 아낄 수 있다.
llama.cpp에는 이걸 해주는 기능이 이미 기본으로 박혀 있다. 바로 --mmap이다. 최신 빌드에서는 기본값이 켜져 있어서, 바보같이 --no-mmap이나 --mlock 옵션만 안 주면 알아서 디스크 캐시를 탄다.
# 특별한 플래그는 필요 없다
# --no-mmap, --mlock만 안 쓰면 mmap이 기본 동작
llama-server -m qwen3.8-next-flash-Q4_K_XL.gguf
문제는 퀀트 레이아웃이었다
이론은 완벽했다. 하지만 역시 현실은 늘 삐걱거린다(공학에 공짜는 없다).
Unsloth에서 기본 배포한 양자화(GGUF) 파일을 그대로 돌리면, ngram 텐서가 Metal GPU에 고정되는 연산 텐서들과 같은 샤드 안에 뒤죽박죽 섞여 있었다. 결과적으로 mmap을 켜도 ngram 데이터가 램 위로 강제로 끌려 올라와 버렸다.
글쓴이의 해결책은 무식하지만 확실했다. GGUF 내부의 텐서 배치를 다시 섞어서(reshuffle), ngram 텐서들만 별도의 독립 샤드로 분리해 낸 거다. AI 에이전트한테 파이썬 스크립트를 짜게 시켜서 몇 분 만에 뚝딱 해결했단다(이런 데 에이전트 쓰는 게 진짜 꿀이다).
결과는 그야말로 대성공이었다.
- 적용 전: 123GB wired 메모리 점유 (OS 포함)
- 적용 후: 97GB wired 메모리 점유
- 확보한 메모리: 무려 26GB 순수 절약
- 성능: 초당 36 t/s로 성능 저하 0%
ngram 51B의 4비트 양자화 크기가 대략 29GB니까 이론상 계산과 완벽히 맞아떨어진다. 핵심은 ‘속도 저하가 전혀 없었다’는 점이다. 검색이 필요할 때만 SSD에서 페이징되어 들어오고, 다 쓰면 알아서 내려가니 연산 병목이 안 생기는 거다.
이게 의미하는 것
저자가 도출해 낸 실전 공식이 하나 있다. GGUF 파일 전체 크기에 0.75(75%)를 곱하면, 그게 실제 시스템 메모리가 감당해야 할 본체 백본의 요구량이다. 이걸 기준으로 계산기를 두드려보면 견적이 완전히 달라진다.
- 64GB 램 맥북: Q2_K_XL 실행 가능
- 96GB 램 맥북: Q4_K_XL 실행 가능
- 128GB 이상 맥북: 더 높은 퀀트나 무양자화 ngram 테이블까지 여유롭게 구동
64GB짜리 일반 맥북에서 125B급 괴물 모델을 돌린다니, 1년 전만 해도 상상조차 못 했던 일이다. 모델 아키텍처 자체가 “무거운 지식은 룩업으로 빼낸다”는 방향으로 진화하면서, 비싼 램 용량을 강요받던 하드웨어의 방정식이 통째로 뒤집히고 있다.
같은 날 레딧에 125B MoE 모델을 돌려보겠다고 15,000달러(약 2천만 원)짜리 엔비디아 RTX Pro 시스템을 맞춘 유저의 글이 올라왔는데, 27B 모델 대비 벤치마크 점수가 1~2점밖에 안 올라 멘붕했다는 비판이 쏟아졌다. 커뮤니티의 무게중심이 허세 벤치마크에서 ‘가성비와 실용성’으로 급격히 기울고 있다는 증거다. 이미 맥북 안에 꽂혀 있는 빠른 NVMe SSD를 활용하는 이 방식이야말로 가장 영리한 해답이다.
정리
ngram 테이블을 SSD로 밀어내는 테크닉은 단순한 일회성 꼼수가 아니다. 앞으로 쏟아져 나올 ‘검색 기반 신경망 아키텍처’ 전반에 적용될 미래의 표준이다.
지금은 텐서 레이아웃을 스크립트로 직접 쪼개야 하는 귀찮음이 있지만, 조만간 Unsloth나 llama.cpp 공식 파이프라인에서 기본 분리 지원을 시작하면 누구나 딸깍 한 번으로 쓰게 될 거다. 맥북으로 로컬 LLM을 진지하게 굴리는 유저라면 무조건 저장해 두고 따라 해보자.
원문: Got Qwen3.8-Next-Flash ngram SSD offload working in llama.cpp!