3970억 개 매개변수(397B) LLM, 노트북에서 구동 성공!
48GB RAM 맥북 프로(MacBook Pro)에서 4.4+ 토큰/초(tokens/second) 속도로 3970억 개 매개변수(397B) 모델을 구동하는 C/Metal 기반 추론 엔진(Inference Engine) 개발
SSD에서 모델을 스트리밍(Streaming)하며, OS 페이지 캐시(OS Page Cache)를 활용하여 성능을 최적화
2비트 양자화(Quantization) 사용 시 도구 호출(Tool Calling) 기능이 손상되는 문제 발생, 4비트 양자화(Quantization) 권장
커뮤니티에서는 2비트 양자화(Quantization)의 품질 저하에 대한 우려와 함께, 실용적인 모델(Practical Model) 구현에 대한 기대 표명
SSD 기반의 모델 스트리밍(Model Streaming) 기술
본 기술은 209GB에 달하는 모델 가중치(Expert weights)를 NVMe SSD에서 병렬 `pread()`를 통해 로드한다. 특히, OS 페이지 캐시(OS Page Cache)를 활용하여 별도의 캐싱 메커니즘 없이 성능을 확보한 점이 특징이다. 이는 메모리 컨트롤러(Memory Controller) 대역폭(Bandwidth) 제약으로 인해 SSD DMA와 GPU 연산의 동시 수행이 어렵다는 점을 고려한 설계이다. 결과적으로, SSD I/O 병목 현상(Bottleneck)을 최소화하고, GPU 활용도를 극대화했다.
4비트 양자화(Quantization) 및 FMA 커널(Kernel) 최적화
4비트 양자화(Quantization)를 통해 모델 크기를 줄이고, FMA(Fused Multiply-Add) 유닛을 활용한 커널 최적화를 통해 연산 속도를 향상시켰다. 구체적으로, `(nibble * scale + bias) * x` 연산을 `fma(nibble, scale*x, bias*x)`로 재구성하여 GPU 연산 효율(GPU Compute Efficiency)을 높였다. 이러한 최적화는 4.36 토큰/초(tokens/second)의 성능을 달성하는 데 기여했으며, 도구 호출(Tool Calling) 기능을 온전히 지원한다.
2비트 양자화(Quantization)의 한계와 트레이드오프(Trade-offs)
2비트 양자화(Quantization)는 5.74 토큰/초(tokens/second)의 더 빠른 속도를 제공하지만, 모델 품질 저하(Model Quality Degradation) 및 도구 호출(Tool Calling) 기능의 문제를 야기한다. 특히, JSON 출력에서 `\name\`과 같은 오류가 발생하여 실질적인 사용성을 저해한다. 커뮤니티에서는 2비트 양자화(Quantization)가 실용적인 작업(Real Work)에 부적합하다는 의견이 지배적이며, 4비트 양자화(Quantization)의 중요성을 강조한다.
Metal 쉐이더(Shader) 기반의 GPU 가속
본 시스템은 4비트 및 2비트 양자화(Quantization) 행렬-벡터 곱셈, SwiGLU 활성화, RMS 정규화(Normalization), GPU 어텐션(Attention), RoPE, MoE 결합 등 다양한 연산을 위해 Metal 쉐이더(Shader)를 활용한다. 특히, GatedDeltaNet 재귀 연산에 cblas_sscal, cblas_sgemv, cblas_sger를 사용하여 BLAS(Basic Linear Algebra Subprograms) 가속을 구현했다. 이러한 GPU 가속은 전반적인 추론 속도 향상에 기여한다.
커뮤니티의 비판적 시각과 대안 제시
커뮤니티에서는 2비트 양자화(Quantization)의 품질 저하를 지적하며, 실용적인 모델(Practical Model) 구현에 대한 아쉬움을 표명한다. 또한, 128GB 이상의 메모리를 가진 장치에서 2.5 BPW(Bits Per Weight) 양자화를 통해 20 토큰/초(tokens/second)의 성능을 달성한 사례를 언급하며, 더 나은 성능(Better Performance)을 위한 대안을 제시한다. 일부 사용자는 4비트 양자화(Quantization)를 기반으로 하이브리드 스트리밍(Hybrid Streaming)을 구현하여 RAM 사용량(RAM Usage)을 조절하는 방안을 제시하기도 한다.