메모리 벽을 허물기: 10년 된 Xeon에서 Gemma 4 실행하기

로컬 AI의 지배적인 서사는 최신 H100이나 최고급 Mac Studio가 있어야 최첨단 모델을 실행할 수 있다는 것입니다. 하지만 대규모 언어 모델(LLM) 추론의 실제 병목 현상은 항상 순수 연산 능력이 아니라 "메모리 벽"입니다. 토큰을 생성할 때, 프로세서는 실제로 계산을 수행하는 시간보다 RAM에서 캐시로 가중치를 이동시키기 위해 기다리는 데 더 많은 시간을 소비합니다.

배포 파이프라인을 블랙박스 설치가 아닌 진지한 엔지니어링 과제로 다룸으로써, 이러한 모델들이 구상되기도 전에 이미 오래된 하드웨어에서도 Gemma 4 26B Mixture-of-Experts (MoE)와 같은 최첨단 아키텍처를 실행하는 것이 가능합니다. 구체적으로, 128GB의 DDR3 RAM과 GPU가 없는 2016년형 Intel Xeon E5-2620 v4는 소프트웨어가 하드웨어의 물리적 현실에 맞춰 조정된다면 "읽기 속도"의 생성 성능을 달성할 수 있습니다.

하드웨어 과제

이것이 왜 어려운지 이해하려면 재활용된 엔터프라이즈 서버의 사양을 살펴보아야 합니다.

  • CPU: Intel Xeon E5-2620 v4 @ 2.10 GHz (8 physical cores, 16 threads)
  • Instruction sets: AVX2 (Lacks AVX-512, AVX-VNNI, and BF16)
  • Memory: 128 GB DDR3 (Significantly slower than modern DDR4/DDR5)
  • GPU: None

이 환경에서 시스템은 심각하게 메모리 제한적(memory-bound)입니다. 생성되는 모든 토큰은 기가바이트 단위의 가중치를 느린 DDR3 RAM에서 CPU 캐시로 끌어와야 합니다. 공격적인 최적화 없이는 ollama나 기본적인 llama-cpp와 같은 표준 도구들이 매우 느릴 것입니다. 왜냐하면 이들은 일반적인 GPU 사용 사례를 위해 설계되었으며 메모리 병목 현상을 우회하기 위한 필요한 "조절 장치"를 노출하지 않기 때문입니다.

최적화 스택

이를 실행 가능하게 만들기 위해, 저자는 특수 포크 버전인 ik_llama.cpp와 모델 아키텍처를 CPU 캐시 계층 구조에 직접 매핑하는 정밀한 플래그 세트를 활용했습니다.

1. Speculative Decoding과 MTP

--spec-type mtp --draft-max 3 --spec-autotune 플래그를 사용하여, 시스템은 26B 검증기(verifier)와 훨씬 작은 "초안 작성자(drafter)" 모델을 쌍으로 연결합니다.

Speculative decoding은 메모리 벽을 극복하기 위한 훌륭한 해결책입니다. CPU 연산은 거대한 가중치를 스트리밍하는 비용에 비해 상대적으로 저렴하기 때문에, 시스템은 (L3 캐시에 완전히 들어가는) 아주 작은 drafter를 사용하여 다음 몇 개의 토큰을 추측합니다. 그런 다음 더 큰 verifier가 단 한 번의 패스(pass)로 이 추측들을 확인합니다. 이를 통해 시스템은 verifier의 메모리 대역폭 비용을 한 번만 지불하면서 여러 개의 토큰을 생성할 수 있습니다.

2. MoE 라우팅과 캐시 스래싱(Cache Thrashing)

Gemma 4 26B-A4B와 같은 Mixture-of-Experts (MoE) 모델은 각 토큰마다 전문가(expert)의 하위 집합을 사용합니다. 하지만 128개의 서로 다른 전문가 사이를 오가는 것은 CPU가 RAM에서 새로운 가중치를 가져오기 위해 캐시를 끊임없이 비우는 "캐시 스래싱" 현상을 유발할 수 있습니다.

  • --cpu-moe: 가중치가 더 오래 로컬 상태를 유지하도록 CPU 캐시 계층 구조에 맞춰 라우팅을 구체적으로 조정합니다.
  • --merge-up-gate-experts: 두 개의 프로젝션을 하나의 행렬 곱셈(matmul)으로 융합합니다. 이는 프로세서가 결과를 메모리에 쓰고 즉시 다시 읽는 것을 방지하여 메모리 버스 이동 횟수를 줄여줍니다.

3. 메모리 피닝(Memory Pinning)과 리패킹(Repacking)

OS가 성능을 저해하는 것을 방지하기 위해, 구성은 엄격한 메모리 관리를 채택합니다.

  • --run-time-repack: 시작 시 RAM의 가중치 행렬을 CPU가 예상하는 인입 형태에 맞춰 재구성하여 "캐시 미스"를 줄입니다.
  • --mlock: 모델을 물리적 RAM에 고정(pin)합니다. 이는 Linux 커널이 가중치를 하드 드라이브로 "스왑(swapping)"하는 것을 방지하여, 생성 속도가 0으로 급락하는 것을 막아줍니다.
  • --no-kv-offload: 엔진이 Key-Value (KV) 캐시를 위해 존재하지 않는 GPU를 검색하지 않도록 명시적으로 지시하여, 불필요한 하드웨어 체크를 건너뜁니다.

4. 고급 어텐션 메커니즘

이 설정에서 가장 중요한 성과 중 하나는 --flash-attn on을을 통해 CPU 기반 Flash Attention을 사용하는 것입니다.

보통 프롬프트의 모든 단어가 다른 모든 단어와 어떻게 연관되는지 계산하는 것은 RAM에 기록되어야 하는 거대한 $N imes N$ 행렬을 생성합니다. Flash Attention은 "Kernel Fusion"을을 통해 프로세서의 로컬 캐시 내에서 이러한 점수를 작은 덩어리로 계산하여, 시스템 RAM에 거대한 행렬을 실체화할 필요 없이 이를 수행합니다. 이 GPU 전용 최적화 기술을 표준 CPU에 이식하는 것은 주요한 소프트웨어 엔지니어링 성과입니다.

또한, --mla-use 3은 Multi-Head Latent Attention을 활성화하여 KV 캐시(모델의 단기 기억)를 압축하여, 128GB의 RAM을 소진하지 않고도 거대한 컨텍스트 창(최대 262K)을 사용할 수 있게 합니다.

결과 및 트레이드오프

최종 메모리 점유율은 약 82 GB입니다: 가중치 25 GB와 전체 컨텍스트에서의 KV 캐시 56 GB입니다.

성능은 "읽기 속도"로 묘사되지만, 실질적인 트레이드오프를 고려하는 것이 중요합니다. 커뮤니티 논의에서 언급되었듯이, 이러한 오래된 Xeon 서버는 현대적인 ARM 기반 노트북이나 전용 GPU 설정에 비해 전력 소모가 크고 소음이 매우 큽니다. 하지만 이 하드웨어의 접근성은 실험을 위한 강력한 도구로서의 가치치를 제공합니다.

"최첨단 AI를 로컬에서 실행하는 병목 현상은 단순히 실리콘에 있지 않습니다. 그것은 추론 엔진이 실제로 어떻게 작동하는지 깊이 이해하는 데 대한 필요성입니다."

결론

26B 파라미터 MoE 모델을 10년 된 서버에서 실행할 수 있다는 사실은 블랙박스 AI 도구들이 만드는 "사용성 장벽(usability moat)"이 인위적임을 증명합니다. 단순화된 래퍼(wrapper)를 사용하기보다 기저저의 메모리 아키텍처와 상호작용함으로써, 로컬 AI의 요구 사항은 "비싼 신규 하드웨어"에서 "지식 기반의 구성(informed configuration)"으로 전환됩니다.

홈랩(homelab)을 운영하거나 재활용된 서버를 가지고 있다면, 오픈 웨이트 AI의 최첨단 기술은 이미 당신의 손에 있습니다. 단지 명령줄(command line)을 다루는 데 기꺼이 손을 더럽히려는 의지만지가 필요할 뿐입니다.

Sources