LabHub

블로그

느린 컴퓨터에서 GLM-5.2 돌리기 — colibrì가 744B 모델을 디스크에서 스트리밍하는 법

한국어English日本語中文

들어가며 — 25GB 램 노트북에 744B 모델을?

colibrì는 GLM-5.2를 평범한 소비자용 PC에서 돌리는 것을 목표로 하는 추론 엔진입니다. GLM-5.2는 colibrì 기준 총 744B(7,440억) 파라미터의 MoE 모델. 보통 이 규모는 GPU 여러 장과 수백 GB의 VRAM을 요구합니다. colibrì는 이걸 12코어 CPU와 25GB 램을 가진 기계에서 돌립니다. 순수 C로 작성된 약 1,300줄, 런타임 의존성 제로 — BLAS도 파이썬도 없습니다.

당연히 공짜는 아닙니다. 프로젝트가 내건 목표부터가 속도가 아닙니다. 요약하면 "12코어 노트북에서 25GB 램으로 GLM-5.2가 올바르게 답하게 하는 것, 설령 속도가 문단당 몇 분이 걸리더라도"입니다. 이 글은 colibrì가 실제로 무엇을 하는지, 어떤 트릭으로 그게 가능한지, 그리고 그게 실제로 얼마나 쓸 만한지를 정직하게 봅니다.

핵심 트릭 — MoE 희소성 + 디스크 스트리밍

두 가지 사실이 맞물립니다.

첫째, GLM-5.2는 MoE입니다. 토큰 하나를 만들 때 744B 전부가 아니라 약 40B만 활성화됩니다. 파라미터는 "전문가(expert)"로 잘게 나뉘어 있고, 매 토큰마다 라우터가 입력에 맞는 소수만 골라 씁니다. colibrì 기준 라우팅 전문가는 21,504개(75개 MoE 레이어 × 256개), int4로 각각 약 19MB입니다.

둘째, 그래서 전부를 램에 올릴 필요가 없습니다. colibrì는 모델을 둘로 쪼갭니다.

즉 "거대한 모델, 작은 엔진"입니다. 매 토큰의 병목은 계산이 아니라 디스크 읽기입니다 — 콜드 상태에서 토큰 하나당 약 11GB를 SSD에서 읽습니다(75 레이어 × 8 전문가). 이 디스크 대역폭이 속도의 상한을 정합니다.

견딜 만하게 만드는 장치들

디스크 스트리밍은 본질적으로 느립니다. colibrì에서 흥미로운 건 그 느림을 갉아먹는 방법들입니다.

양자화가 이 모든 것의 바닥입니다. int4 컨테이너에 per-row 스케일, AVX2 커널에서 dequant-on-use. 양자화 정리 글에서 다룬 "비트를 줄여 메모리·대역폭을 산다"는 싸움이, 여기서는 "디스크에서 읽어야 할 바이트 수를 줄인다"로 그대로 이어집니다.

실제로 돌리려면 하한은 이렇고, 진입 모드는 네 가지입니다.

# 하드웨어 하한 (README 기준)
OS:    Linux 또는 WSL2       CPU: AVX2, 12코어 이상
RAM:   16GB 이상 (캐시 자동 상한, 피크 약 20GB)
Disk:  약 370GB 로컬 NVMe (ext4) — 네트워크 마운트는 불가

# 실행 모드
./coli chat     # 대화형 CLI
./coli serve    # OpenAI 호환 API (텍스트 전용)
./coli bench    # MMLU / HellaSwag / ARC
./coli plan     # 헤더만 읽는 드라이런, 할당 제로

정직한 부분 — 그래서 얼마나 빠른가

느립니다. 콜드 상태 약 0.05–0.1 tok/s — 사실상 10~20초에 한 단어입니다. 로드에만 약 30초. 커뮤니티가 올린 실측은 하드웨어에 따라 갈립니다: M5 Max(128GB) 1.06 tok/s, Framework 13(128GB + 학습 핀) 0.37 tok/s, PCIe5 NVMe를 단 9950X 0.28 tok/s. 가장 좋은 경우도 초당 한 토큰 남짓입니다.

이건 대화형 도구가 아닙니다. 한 문단에 몇 분이 걸립니다. 그러면 언제 쓰나?

프로덕션 처리량이 필요하다면 답은 명확합니다: GPU를 제대로 할당하세요. colibrì도 그걸 대체하려는 게 아닙니다 — ./coli serve로 OpenAI 호환 API를 열 수는 있지만, 그 속도로 서비스를 태울 수는 없습니다.

마치며 — 되는 것과 쓸 만한 것 사이

colibrì에서 진짜 흥미로운 건 속도가 아니라 성립 그 자체입니다. "GPU 없이는 불가능"이라 여겨지던 규모가, MoE 희소성 + 디스크 스트리밍 + 영리한 캐싱으로 25GB 램 기계에서 어쨌든 답을 냅니다. 되는 것과 쓸 만한 것은 분명 다르지만, 되는 것이 먼저 증명되어야 쓸 만한 것도 뒤따라옵니다.

로컬 추론의 민주화는 대개 이 순서로 왔습니다 — 먼저 "미친 짓인데 되네", 그다음 몇 년에 걸쳐 "이제 실용적이네". llama.cpp도 그렇게 시작했습니다. colibrì가 지금 어디쯤인지는 위 숫자들이 정직하게 말해 줍니다. 그래도 문단당 몇 분이 문장당 몇 초가 되는 날을 상상하는 건 그리 어렵지 않습니다.

참고 자료

댓글

아직 댓글이 없습니다.

로그인하면 댓글을 쓸 수 있습니다