25GB RAM으로 744B GLM-5.2를 로컬에서 구동하는 순수 C MoE 런타임
colibrì는 19,456개 전문가를 디스크에서 스트리밍하고 RAM/VRAM을 계층적으로 관리해 GLM-5.2 744B MoE를 소비자급 하드웨어에서 실행할 수 있도록 하는 의존성 제로의 소형 C 런타임이다.
TL;DR
colibrì는 19,456개 전문가를 디스크에 두고 RAM/VRAM을 계층적으로 관리해 GLM-5.2 744B MoE를 순수 C 런타임으로 소비자급 하드웨어에서 실행할 수 있게 만든다. 스트리밍 전문가, 레이어별 LRU 캐시, 비동기 리드어헤드, MTP 기반의 배치 검증 같은 기법을 결합해 디스크 바운드 환경에서도 응답성을 개선하며 int4·int8 양자화와 정수 연산 커널로 메모리·연산 비용을 낮춘다. 주요 수치는 모델 온-디스크 약 370GB, 상주 dense int4 약 9.9GB, 로드 타임 약 30초이며 MTP int8 헤드에서 2.2–2.8 tok/forward를 관측했고 품질 벤치마크(hellaswag/arc/mmlu)에서는 int4 컨테이너 기준 62.5% mean acc_norm가 보고되었다. 한계로는 콜드 캐시 시 디스크 읽기 비용이 매우 높고 재현성(byte-exact) 요구 시 DRAFT/MTP/커널 패밀리 차이가 결과를 바꿀 수 있다는 점이 있으며 이들 트레이드오프는 자동 정책과 명시적 플래그로 제어된다.
주요 기능
- 스트리밍 전문가 계층을 관리한다. colibrì는 expert를 디스크에 보관하고 요청 시 레이어별 LRU 캐시와 선택적 핫-스토어를 통해 필요한 전문가만 읽어와 적용한다. 이 접근은 전체 모델을 한 번에 메모리에 올리지 않고도 토큰 생성이 가능하도록 한다.
- MTP 기반의 배치 검증(사전 생성 초안)을 지원한다. MTP 초안은 int8 헤드에서 높은 수용률(39–59%)을 보이며 초안이 검증되면 주요 경로와 일괄로 검증해 전체 처리량을 높인다. 단, int4 MTP 헤드에서는 초안 수용률이 거의 0%로 나타나므로 int8 MTP 헤드 사용을 권장한다.
- 정수 기반의 고성능 커널을 사용한다. AVX2 기반 int8/int4 양자화 연산과 per-row 스케일을 활용해 메모리와 연산 성능을 최적화하며, 실제 측정에서 int8 matmul은 1.4–2.5×의 속도 향상을 보였다. 라우팅·형상 기반으로 어떤 형식을 쓸지 런타임에서 결정하므로 단일 최적화에만 의존하지 않는다.
어떻게 동작하는가
colibrì는 VRAM, RAM, 디스크를 단일 관리 메모리 계층으로 취급해 필요 시 전문가 텐서를 디스크에서 스트리밍하고 레이어별 LRU 캐시와 선택적 핫-핀을 통해 메모리 배치를 조정한다. 디코드 시에는 비동기 전문가 리드어헤드, 배치-유니온 MoE 적용, 그리고 MTP 초안 검증을 통해 I/O와 연산을 겹쳐 처리해 전체 응답률을 개선한다. 정수-도트(integer-dot) 커널과 packed int4/int8 양자화, MLA attention 흡수 같은 기법으로 메모리·연산 비용을 줄이면서 정확성 검증을 유지한다.
해결 문제
거대한 MoE 모델을 전통적인 대규모 서버가 아닌 소비자급 하드웨어에서 실행할 수 없는 문제를 해결한다. colibrì는 전문가 텐서를 온디맨드로 디스크에서 스트리밍하고 RAM/VRAM을 계층화해 25GB RAM 환경에서도 GLM-5.2 744B를 동작시키며, 모델 정밀도나 라우터 의미론을 몰래 바꾸지 않도록 설계되어 있다. 또한 cold-start의 높은 디스크 비용을 캐시 자동 확장, 핀(pin) 전략과 MTP 같은 추측 기법으로 보완해 실사용 응답성을 개선한다.
지금 주목받는 이유
거대 MoE 모델을 25GB급 소비자 하드웨어에서 직접 실행할 수 있다는 점과 '순수 C, 무런타임 의존성, 전문가 스트리밍'이라는 실용적 설계가 주목을 받았다. 빠르게 증가한 스타 수와 다수의 커뮤니티 벤치마크가 실사용 가능성을 확인해 관심을 모았다. 또한 다양한 플랫폼(CPU, Metal, CUDA, Windows 네이티브)에서 동작한다는 점이 적용 범위를 넓혔다.
차별점
- 순수 C와 무(無)런타임 의존성을 유지한다. colibrì는 BLAS나 Python 같은 런타임 의존성이 없으며 단일 C 파일 기반 엔진으로 배포되어 설치 복잡도를 줄였다. 이로 인해 경량 호스트에서 직접 빌드·배포해 실행할 수 있다는 운영 상의 단순성이 확보된다.
- 전문가를 디스크에 둔 채 계층적 캐시로 운영하는 스트리밍 설계를 채택한다. 19,456개 전문가를 디스크에 저장하고 필요 시만 읽어오는 방식으로 약 370GB의 전문가 전부를 유지하되 RAM 상주는 수십 기가바이트 범위로 제한한다. 이 차별화는 대규모 MoE를 로컬 자원 한정 환경에서 현실적으로 구동하게 만든다.
- MTP·문법 강제 초안 같은 다중 초안 경로를 운영한다. int8 MTP 헤드 기반 초안과 GBNF 문법 강제 초안은 서로 보완하며 배치 검증을 통해 초안의 효용을 실측 수치(2.2–2.8 tok/forward, 39–59% acceptance 등)로 제공한다. 이 메커니즘은 캐시가 따뜻해진 이후에 효과적으로 응답률을 높이는 실무적 이점을 가져온다.
사용 사례
- 로컬 추론 서버를 운영해 외부 API 의존 없이 대형 모델을 테스트·검증하는 용도로 적합하다. 개발자는 COLI_MODEL로 모델 디렉토리를 가리켜 로컬 chat·serve 모드를 실행하고 OpenAI 호환 HTTP API로 연동할 수 있다. 이 방식은 모델 보안·데이터 프라이버시 요구가 있는 실험 환경에서 유용하다.
- 하드웨어 성능 실험과 프로파일링을 위한 연구용 벤치마크 플랫폼으로 활용할 수 있다. `coli plan`, `coli doctor`, `iobench` 같은 도구가 모델 배치 예측과 디스크 성능 측정을 제공해 하드웨어-소프트웨어 병목을 실험적으로 분석할 수 있다. 연구자는 자동 핀, PILOT 프리페치, MTP 등 옵션을 조합해 성능 민감도를 측정할 수 있다.
- 제한된 리소스에서 대규모 모델을 서비스 형태로 제공하는 PoC(proof-of-concept) 환경에 쓸 수 있다. `coli serve`는 텍스트 전용 OpenAI 호환 API를 제공하며 KV 지속성·슬롯 분리 기능을 통해 대화 재개·격리 세션을 관리한다. 단일 프로세스로 모델을 유지하므로 동시 처리 대신 큐 기반 운영을 전제로 한다.
시작하기
레포 클론 후 c 디렉토리에서 ./setup.sh를 실행해 컴파일과 자가 검사를 수행한 다음, 모델 디렉토리를 COLI_MODEL 환경 변수로 지정해 ./coli chat로 대화를 시작한다. 사전 변환된 int4 컨테이너가 있다면 COLI_MODEL=/path/to/GLM-5.2-colibri-int4-with-int8-mtp ./coli chat처럼 한 줄로 실행해 변환 단계를 건너뛸 수 있다. 모델을 로드하기 전 `COLI_MODEL=/path/to/model ./coli plan`과 `./coli doctor`로 계획과 환경 적합성을 확인하는 절차가 권장된다.
요구사항
- 로컬 저장소에 약 370GB의 int4 모델 컨테이너를 둘 수 있는 디스크 공간이 필요하다. README의 수치는 모델 온-디스크 약 370 GB를 명시하며 변환 도중에는 샤드 단위 처리로 전체 FP8 체크포인트를 동시에 요구하지 않는다. 실사용 성능은 디스크의 랜덤 읽기 대역폭과 시스템 RAM에 크게 좌우된다.
- 빌드와 실행을 위해 GCC + OpenMP가 필요하며 AVX2 이상을 권장한다. Windows 네이티브는 MinGW-w64 기반 빌드가 가능하고 CUDA 백엔드는 MSVC+nvcc로 DLL을 빌드해 동적으로 로드하는 구조를 가진다. README는 macOS용 Metal 백엔드와 NVIDIA CUDA 백엔드 모두 실험적/옵션으로 제공된다고 명시한다.
- 실행 가능한 최소 RAM은 16GB 이상이며 README 예시는 25GB RAM 환경에서 동작한 실측을 제공한다. 상주 dense 파트는 int4로 약 9.9 GB를 차지하며 전체 피크 RSS는 workload에 따라 자동 캡된 수치(예시: ~20 GB)로 나타났다. 캐시 크기와 핀(pin) 전략에 따라 응답률과 디스크 의존성 비율이 크게 바뀐다.
벤치마크
| 벤치마크 | 지표 | 값 | 비교 |
|---|---|---|---|
| model on disk | size | ~370 GB | — |
| resident RAM (dense, int4) | resident_ram | 9.9 GB | — |
| load time | time | ~30 s | — |
| MTP speculation | tokens_per_forward | 2.2–2.8 tok/forward | — |
| GLM-5.2 on 6×RTX 5090 | decode_rate | 6.84 tok/s single-request decode | — |
| community quality bench (hellaswag/arc/mmlu) | mean_acc_norm | 62.5% | — |
이미지 분석


21.2k
Stars
2.2k
Forks
+205
Trending
6
조회수
관련 토론
아직 관련 토론이 없습니다.
댓글
댓글을 작성하려면 로그인이 필요합니다.