기술 제원 및 공개 범위
C11 컴파일러와 make만으로 빌드 가능한 WASTE(Weight-Aware Streaming Tensor Engine)는 외부 의존성 없이 libc와 pthreads만 사용하는 임베드 가능한 추론 엔진이다. 이 엔진은 2.78조 개의 파라미터를 가진 Kimi K3 오픈 가중치 모델을 지원하며, 원본 1.42TB의 샤드 파일을 982GiB 크기의 단일 컨테이너로 변환해 처리한다. 증류(Distillation)나 가지치기(Pruning)를 거치지 않은 완전한 모델 가중치를 유지하면서도 소비자용 하드웨어에서 구동하는 것이 핵심이다.
메모리 요구사항은 컨텍스트 길이에 따라 차등 적용된다. 4K 컨텍스트 기준 최소 29.05GB의 RAM이 필요하며, 32K에서는 30.54GB, 128K에서는 35.63GB, 1M 컨텍스트에서는 83.21GB까지 요구량이 늘어난다. 상주 트렁크(Trunk) 가중치만으로 27.28GB를 점유하며, 모델 로드 시간은 약 20초가 소요된다. 또한 Kimi-Linear 48B 모델의 경우 19GiB 컨테이너와 최소 1.87GB RAM으로 구동 가능하며, 이때 10.7 tok/s의 처리량을 기록한다.
공개된 API는 총 26개 함수로 구성되어 모델 열기, RAM 상한 설정, 생성, 세션 저장 및 종료 기능을 제공한다. 추론 경로에서 Python을 완전히 배제하고 C로 구현해 오버헤드를 줄였으며, 모델 변환 단계에서만 PyTorch를 사용한다. 라이선스는 Apache 2.0으로 공개되어 자유로운 활용이 가능하다.
디스크 스트리밍 및 최적화 메커니즘
토큰당 모델의 약 4%만 활성화되는 Mixture of Experts(MoE) 구조를 활용해, 비활성 가중치를 RAM에 올리지 않고 NVMe에서 실시간으로 읽어오는 스트리밍 방식을 채택했다. .waste 컨테이너는 JSON 매니페스트, 상주 트렁크, 계층별 전문가 뱅크로 구성되며, 각 전문가 레코드는 4KiB 정렬되어 gate, up, down 행렬을 한 번의 `pread`로 읽어온다. 이때 macOS의 `F_NOCACHE`, Linux의 `O_DIRECT`, Windows의 `FILE_FLAG_NO_BUFFERING`을 통해 운영체제의 페이지 캐시를 우회함으로써 RAM 용량에 따른 적중률 왜곡을 방지한다.
읽기 성능을 높이기 위해 라우터 예측(Lookahead)과 연산 중첩 기술을 적용했다. 한 계층의 라우터가 전문가 ID를 결정하면 각 읽기를 별도 스레드로 요청해 데이터 도착 즉시 연산에 투입하며, 이를 통해 K3 기준 약 1.6배의 성능 개선을 이뤘다. 특히 다음 계층의 라우터를 현재 hidden state로 미리 실행해 전문가 6개를 선행 로드하는 기법을 통해, 전문가 캐시 적중률을 14%에서 38%로 끌어올렸다. 이 과정에서 실제 라우터가 최종 전문가를 다시 결정하므로 출력 로짓의 정확도는 유지된다.
가중치 압축에는 3단계 잔차 벡터 양자화(Residual Vector Quantization)를 사용해 가중치당 3.00비트를 할당했다. 전체 행렬을 복원하지 않고 부분 내적 표를 조회하는 방식으로 처리하며, 트렁크 영역은 4비트와 8비트를 유지해 출력 붕괴를 막았다. PyTorch 기준 구현과 비교했을 때 최종 로짓 차이는 3.6e-06 수준으로 정밀도를 유지했다. KV 캐시 최적화에서는 Kimi Delta Attention(KDA)과 gated multi-head latent attention(MLA)을 3:1로 조합해, 4K 컨텍스트 캐시 크기를 11.25GB에서 0.21GB로 약 53배 줄였다.
벤치마크 결과는 RAM 할당량에 따라 극단적으로 갈린다. 64GB MacBook Pro(M5 Pro)에서 46GB 예산을 설정했을 때 0.45~0.62 tok/s의 속도를 보였으나, 예산을 52GB 이상으로 높이면 오히려 0.02~0.15 tok/s로 속도가 급락한다. 이는 캐시 미스가 아니라 운영체제의 페이징(Paging) 현상으로 인해 발생하는 병목이다. 또한 내부 SSD(12.78GB/s)가 아닌 외장 USB 인클로저(0.94GB/s)를 사용할 경우, 토큰 하나를 처리하는 데 필요한 17GB의 읽기 작업으로 인해 약 13초의 지연시간이 발생한다.
구현 환경 및 실무 도입 영향
멀티모달 처리의 경우 401M 파라미터의 ViT(Vision Transformer)를 지원하며, 1024 패치 이미지 인코딩에 15.7초가 소요된다. 이미지 임베딩 역시 92개 MoE 계층을 통과하므로 텍스트 prefill과 유사한 비용이 발생한다. 서버 구현을 위해 ctypes로 C API를 호출하는 OpenAI 호환 HTTP 서버를 제공하며, `/v1/chat/completions` 등 주요 엔드포인트를 통해 스트리밍, 도구 정의, JSON 응답 스키마, thinking_effort 설정을 지원한다.
플랫폼 지원 범위는 macOS arm64, Linux arm64, Linux x86_64에서 검증되었으며, Windows x86_64는 MinGW-w64 교차 컴파일을 통해 기본 기능만 확인된 상태다. Metal 백엔드는 작은 행렬 연산이 빈번하게 발생하는 구조적 특성상 CPU보다 22% 느려 기본적으로 비활성화되어 있다. 모델 변환은 M5 Pro 기준 3개 프로세스로 약 4.7시간이 소요되며, 계층 단위 재개 기능을 통해 중단 지점부터 다시 처리가 가능하다.
실무자가 이 엔진을 도입할 때 가장 주의해야 할 점은 RAM 예산 설정과 저장장치의 물리적 위치다. 물리 RAM의 7/8 수준에서 토큰 작업 집합 단위로 예산을 낮게 설정해야 OS 페이징으로 인한 성능 붕괴를 막을 수 있으며, 모델 컨테이너는 반드시 내부 NVMe SSD에 배치해야 실용적인 토큰 생성 속도를 확보할 수 있다.




