13년 된 Xeon에서 Gemma 4 26B, GPU 없이 5 tok/s

Gemma 4 26B를 GPU 없이 13년 된 Xeon 서버에서 초당 약 5토큰으로 돌렸다는 글이 HN에서 크게 읽힌 이유는 향수 때문이 아니다. 이 실험은 local inference가 어디까지 내려올 수 있는지, 그리고 “돌아간다”와 “쓸 만하다” 사이의 비용 계산이 어떻게 바뀌는지를 보여준다. 대상 하드웨어는 dual Xeon E5-2690 v2, Ivy Bridge 세대, AVX1만 있고 AVX2와 FMA3는 없는 오래된 HP StoreVirtual 장비다.

문제는 단순히 느린 CPU가 아니었다. 사용한 엔진은 Gemma 4의 MoE inference에 필요한 최적화를 담은 ikawrakow의 ik_llama.cpp였고, 빠른 경로 일부가 AVX2를 전제로 삼고 있었다. 글쓴이는 Claude와 함께 빌드 실패와 이상 출력을 추적했다. 핵심은 graph builder가 AVX2 전용 fused op를 계속 만들고, non-AVX2 dispatcher에는 해당 case가 없어 일부 tensor가 계산되지 않는 버그였다. 결과는 NaN이 아니라 그럴듯한 다국어 잡음이어서 더 찾기 어려웠다.

수정은 AVX2가 없을 때 fused up-gate 경로를 두 개의 일반 matmul과 SILU 곱으로 풀어내는 쪽이었다. scalar compile fix와 CI stub 정리도 함께 들어갔다. 최종 결과는 Gemma 4 26B-A4B Q8_0 모델이 CPU-only에서 decode 약 5.2 tok/s, prompt eval 약 16 tok/s를 내는 구성이다. 빠른 서비스형 inference와 비교하면 느리지만, 실험용 local model이나 배치 작업, API 장애 시 fallback으로는 의미 있는 숫자다.

HN 댓글은 곧바로 경제성으로 넘어갔다. 전기요금까지 넣으면 inference provider가 더 싸다는 계산도 있었고, 오래된 서버를 이미 갖고 있다면 제어권과 프라이버시가 값어치라는 반론도 있었다. 이 논쟁이 좋은 이유는 local AI를 낭만으로만 보지 않기 때문이다. token 가격, 전력, 냉각, 속도, 데이터 통제, 오프라인 사용성을 한 번에 놓고 따져야 한다.

이 사례의 더 큰 의미는 agent 사용법에도 있다. “AI가 고쳐줬다”가 아니라, 사람이 실패 조건을 만들고 로그를 읽고 올바른 출력의 기준을 잡았을 때 agent가 낡은 C++ inference code를 따라 들어갈 수 있었다. local inference의 미래가 꼭 최신 GPU만 뜻하지는 않는다. 때로는 버려진 서버, 오래된 instruction set, 그리고 정확한 디버깅 질문이 모델을 움직인다.