레거시 Xeon 하드웨어에서 Gemma 4 26B 실행하기
레거시 Xeon 하드웨어에서 Gemma 4 26B 실행하기
Google의 Gemma 4 26B mixture-of-experts (MoE) 모델은 GPU 없이 13년 된 Ivy Bridge Xeon CPU에서 초당 약 5개의 토큰으로 실행될 수 있습니다. 이는 ik_llama.cpp 추론 엔진 내에서 AVX2 및 FMA3 명령어 세트에 대한 스칼라 폴백(scalar fallbacks)을 구현함으로써 달성되었으며, 이를 통해 현대적인 MoE 아키텍처를 레거시 엔터프라이즈 하드웨어에서 작동할 수 있게 합니다.
하드웨어 및 성능 벤치마크
2013년 하드웨어에서 260억 개의 파라미터를 가진 모델을 실행하는 것은, 구형 시스템에서의 로컬 LLM 추론에 있어 원시 연산 명령어가 아닌 메모리 대역폭이 주요 병목 현상임을 보여줍니다.
시스템 사양:
- 하드웨어: 재사용된 HP StoreVirtual 스토리지 박스
- CPU: Dual Intel Xeon E5-2690 v2 (Ivy Bridge, 2013)
- 명령어 세트: AVX1 전용 (AVX2 없음, FMA3 없음)
- RAM: DDR3
- GPU: 없음
- 총 하드웨어 비용: $300 미만
성능 지표 (Gemma 4 26B-A4B, Q8_0):
- 디코딩 속도: ~5.2 tokens/sec
- 프롬프트 평가: ~16 tokens/sec
기술적 과제: AVX2 명령어 세트 격차
ik_llama.cpp 포크를 포함한 현대적인 고성능 추론 커널은 일반적으로 AVX2 및 FMA3(2014년 Intel Haswell/v3 세대와 함께 도입됨)를 최소 하드웨어 기준으로 가정합니다. Ivy Bridge (v2) CPU는 이러한 명령어가 없기 때문에, 소프트웨어가 존재하지 않는 CPU 명령어를 실행하려고 시도할 때 즉각적인 빌드 실패나 런타임 크래시가 발생합니다.
빌드 시 GGML_USE_IQK_MULMAT를 비활성화하면 대부분의 코드베이스가 스칼라 또는 SSE 수학 연산으로 폴백되도록 강제할 수 있지만, Gemma 4 MoE의 피드포워드 네트워크(FFN) 내 특정 그래프 연산은 여전히 문제가 되었습니다. 구체적으로, MOE_FUSED_UP_GATE 및 FUSED_UP_GATE 연산이 그래프 빌더에 의해 생성되지만, non-AVX2 빌드용 디스패처에 대응하는 연산 경로가 부족했습니다. 이는 모든 전문가(expert) FFN의 목적지 텐서가 계산되지 않아 모델이 초기화되지 않은 메모리를 처리하게 되는 침묵의 실패(silent failure)를 초래했습니다.
해결책: 스칼라 폴백 구현
침묵의 데이터 오염을 해결하고 pre-AVX2 하드웨어와의 호환성을 확보하기 위해, 패치( ik_llama.cpp에 PR #2138로 제출됨)를 통해 세 가지 주요 수정 사항이 구현되었습니다:
1. 스칼라 컴파일 경로 수정
iqk_quantize.cpp의 여러 스칼라 #else 분기에서 hsum_i32_8와 같은 AVX2 헬퍼를 잘못 참조하고 있었습니다. 이를 이식 가능한 스칼라 루프로 재작성하였으며, 빌드 시 AVX2 전용 IQK 호출이 유출되지 않도록 #if GGML_USE_IQK_MULMAT 가드를 추가했습니다.
2. 런타임 디스패처 버그 수정
디스패처를 수정하는 대신, 그래프 빌더를 업데이트하여 레거시 하드웨어에 기존 연산 경로가 있는 연산을 생성하도록 했습니다. GGML_USE_IQK_MULMAT가 비활성화된 경우:
- 결합된
up_gate_exps텐서는 두 개의ggml_view_3d슬라이스로 분선됩니다. - 두 개의 별도
ggml_mul_mat_id호출이 실행됩니다. - 결과는
ggml_fused_mul_unary(gate, up, SILU)를 사용하여 결합됩니다.
이 접근 방식은 기본 GGML 구현체(mul_mat_id 및 fused_mul_unary)를 활용하여, AVX2 융합 커널이 필요하지 않더라도 MoE 레이어가 올바르게 계산되도록 보장합니다.
3. CI 및 빌드 시스템 스텁(Stubs)
non-AVX2 하드웨어에서 테스트 스위트가 실행될 수 있도록, IQK 소스 코드의 #else 스텁 섹션에 누락된 <cstdint> 포함 및 잘못된 함수 시그니처를 iqk_mul_mat.h와 일치하도록 수정했습니다.
배포 제약 사항 및 주의 사항
pre-AVX2 하드웨어를 사용하여 이러한 결과를 재현하려는 사용자는 다음 제약 사항을 준수해야 합니다:
- 런타임 리패킹 비활성화:
--run-time-repack플래그를 생략해야 합니다. 이 기능은 양자화된 가중치를 AVX2 전용인 인터리브 레이아웃(Q8_0_R8)으로 재정렬하는 것으로, AVX1 하드웨어에서 사용 시 깨진 출력이 발생합니다. - Build Configuration: 프로젝트를
GGML_USE_IQK_MULMAT를 off로 설정하여 컴파일해야 합니다.
로컬 레거시 추론에 대한 커뮤니티의 관점
기술 사용자들 사이의 논의는 로컬 추론의 교육적/개인정보 보호 가치와 클라우드 제공업체의 경제적 현실 사이의 긴장을 강조합니다.
"서버가 추론 중 아마도 약 500W를 소비할 것으로 예상합니다... 따라서 로컬에서 18k 토큰을 추론하는 비용은 0.15USD이며, 이는 추론 제공업체의 비용보다 30배 더 비효율적입니다."
레거시 하드웨어의 전기 요금이 API 토큰 비용보다 높을 수 있지만, 지지자들은 이 설정의 주요 동력이 데이터 프라이버시와 유료 API를 사용할 수 없는 경우를 대비한 로컬 폴백(fallback)을 유지할 수 있는 능력이라고 주장합니다.