레거시 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_GATEFUSED_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_idfused_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)을 유지할 수 있는 능력이라고 주장합니다.

Sources