단 3.2GB의 RAM만 탑재된 노트북에서 2,840억 개의 파라미터를 가진 언어 모델을 실행하는 데 성공했습니다. 오직 순수 C99와 NVMe 드라이브만을 사용했습니다. 핵심 비결은 160GB에 달하는 체크포인트 전체를 메모리에 로드하는 대신, 모델의 전문가(expert) 가중치를 스트리밍하는 것이었습니다. 이는 가장 거대한 MoE(Mixture-of-Experts) 모델이라 할지라도 소비자용 하드웨어에 압축하여 구동할 수 있음을 증명합니다.
왜 중요한가
대규모 언어 모델(LLM)은 코드 생성, 연구 보조 등 다양한 분야를 뒷받침하지만, 모델의 크기 때문에 대개 고가의 멀티 GPU 서버를 사용하거나 품질을 저하시키는 과도한 양자화(quantisation)를 거쳐야 합니다. 2,840억 파라미터 규모의 MoE 모델이 단 몇 기가바이트의 RAM만으로 실행될 수 있음을 보여줌으로써, 취미 활동가, 소규모 스타트업, 예산이 한정된 연구자들이 모델의 충실도를 희생하지 않고도 최첨단 모델을 실험할 수 있는 길을 열어줍니다.
모델 및 하드웨어 병목 현상
DeepSeek-V4-Flash는 트랜스포머 레이어당 256개의 전문가에 걸쳐 2,840억 개의 파라미터를 저장합니다. 원본 체크포인트는 디스크에서 약 160GB를 차지하며, 이는 일반적인 노트북의 3.2GB RAM과는 비교조차 할 수 없는 크기입니다. 전통적인 추론 파이프라인은 체크포인트 전체를 메모리에 매핑하려고 시도하며, 이 과정에서 RAM 용량을 빠르게 소진하고 충돌(crash)을 일으킵니다.
전문가 가중치 스트리밍: 핵심 아이디어
MoE 아키텍처는 각 토큰에 대해 전문가의 아주 작은 부분 집합만을 활성화합니다. DeepSeek-V4-Flash의 경우, 라우터가 레이어당 256개의 전문가 중 6개를 선택합니다. 계산 과정에서 사용되지 않는 전문가에는 전혀 접근하지 않으므로, 추론 엔진은 해당 전문가들을 로드하는 과정을 건너뛸 수 있습니다.
구현 방식은 체크포인트를 스트리밍 소스로 취급합니다. 라우터가 현재 토큰에 필요한 전문가를 결정하면, 엔진은 NVMe 드라이브에서 해당 가중치 블록을 가져와 RAM에 상주하는 LRU(least-recently-used) 캐시에 넣습니다. 캐시가 충분히 크면 연속된 토큰에서 동일한 전문가가 재사용되어 캐시 히트(cache hit)가 발생하고, 캐시가 너무 작으면 엔진이 디스크에서 더 자주 읽어옵니다. 그 결과, 전체 정밀도(full-precision) 가중치를 유지하면서도 GPU 가속 없이 노트북의 한계치 이내인 3.23GB의 피크 메모리 점유율을 달성했습니다.
구현을 통해 얻은 값진 교훈
1. 유창한 출력이 정확성을 보장하지는 않는다 버그가 있는 커널이라도 모델의 언어 패턴이 수치적 오류를 가려버리면 그럴듯해 보이는 문장을 생성할 수 있습니다. 저는 14개의 핵심 연산 각각을 최신 PyTorch 레퍼런스와 대조하여 수치적 차이가 아주 작은 허용 오차 범위 내에 있는지 확인했습니다. 이 단계를 건너뛰었다면 미세한 오차가 누적되는 것을 놓쳤을 것입니다.
2. 공통된 실패 모드가 테스트를 기만할 수 있다 메모리 오염 버그로 인해 라우팅 선택이 소수의 전문가로 쏠리면서, 캐시 히트율이 52%에서 95%로 치솟아 마치 엄청난 속도 향상이 일어난 것 같은 착각을 불러일으켰습니다. 테스트 스위트가 동일한 버그를 가진 두 버전을 비교했기 때문에 문제를 발견하지 못한 것입니다. 해결책은 기본 구현과 로직을 전혀 공유하지 않는 독립적인 레퍼런스 경로를 추가하여, 공통된 결함이 발견되지 않은 채 통과하는 것을 방지하는 것입니다.
3. 최적화하기 전에 측정하라 메모리 복사에 1ms가 걸릴 것이라고 가정하고 이를 최적화하는 데 시간을 쏟았습니다. 하지만 프로파일링 결과, 해당 연산은 실제로는 3.6ms가 소요되었으며 전체 추론 시간의 22%를 차지했습니다. 교훈은 성능에 민감한 구간에서 직관에 의존하지 말라는 것입니다. 정확한 측정만이 유일하고 신뢰할 수 있는 지침입니다.
4. 열 조건이 처리량에 극적인 영향을 미친다 열이 가득 찬(heat-soaked) 노트북에서 벤치마크를 실행했을 때, 차가운 상태의 기기보다 실행 시간이 최대 3배까지 느려졌습니다. 높아진 온도는 NVMe 드라이브의 처리량을 제한하고 CPU 속도를 늦추어 결과를 왜곡했습니다. 성능 수치를 발표할 때는 항상 시스템의 열 상태를 기록하십시오.
수치 데이터
- 디스크 상의 모델 크기: ~160GB
- 피크 RAM 사용량: 3.23GB
- 토큰당 전문가 수: 6개 (256개 중)
- 캐시 히트율: RAM 용량에 따라 다름; 3.2GB에서는 변동이 있음.
- 양자화 없음: 전체 정밀도 가중치를 스트리밍하여 모델 품질을 유지함.
RAM 예산이 약 3.21GB 미만으로 떨어지면 캐시가 채워지지 않고 엔진이 매 토큰마다 스트리밍을 수행하게 되어 성능이 급격히 저하됩니다.
소스 코드는 github.com/ronak-create/deepseek-v4-in-c에서 공개적으로 확인할 수 있습니다. 실험을 재현하거나 확장하려는 분들을 위한 커뮤니티 토론 채널은 t.me/GyaanSetuAi에 마련되어 있습니다.
시사점
MoE 모델이 실제로 사용하는 전문가(experts)만을 스트리밍하는 방식은, 양자화나 GPU 가속 없이도 284B 파라미터 규모의 LLM을 일반적인 노트북에서 구동할 수 있게 합니다. 이 실험은 영리한 데이터 이동, 엄격한 검증, 그리고 체계적인 측정을 통해 많은 이들이 불변하다고 가정하는 하드웨어 제약을 우회할 수 있음을 보여줍니다.
