Intel Optane PMem으로 1조 파라미터 LLM 로컬 실행 가이드

TL;DR

Intel Optane Persistent Memory(PMem)를 활용한 로컬 LLM 추론으로 1조 파라미터 모델을 4 tokens/초 수준에서 실행하는 데 성공한 사례가 등장했다. 768GB PMem이 희소 전문가(sparse expert) 가중치를 수용하고, 12GB GPU는 핫패스(hot path) 텐서만 담당하는 계층적 메모리 구조가 핵심이다. Optane이 단종된 현재 시점에서도 이 아키텍처는 대용량 모델 추론의 메모리 계층화 설계에 중요한 시사점을 제공한다.


배경: 1조 파라미터 모델을 로컬에서 실행한다는 것의 의미

GPT-4급 이상의 프론티어 모델은 통상 수백 GB에서 수 TB의 가중치를 보유한다. 이를 단일 소비자 하드웨어에서 실행하려면 세 가지 병목을 동시에 해결해야 한다. 총 메모리 용량, 메모리 대역폭, 그리고 추론 프레임워크의 이기종 메모리 지원이다.

최근 Reddit에 올라온 빌드 사례는 이 세 가지를 모두 Intel Optane PMem + llama.cpp 조합으로 돌파했다. 사용된 모델은 Kimi K2.5(Unsloth Q2_K_XL 양자화)로, 파라미터 수는 1조(1 trillion)에 달한다. 생성 속도는 약 4 tokens/초로, 실용적인 대화 수준에는 미치지 못하지만 소비자 하드웨어에서 이 규모의 모델이 실행 자체가 가능하다는 점에서 주목할 만하다.


핵심 메커니즘: PMem × MoE × 계층적 텐서 배치

Intel Optane PMem의 포지셔닝

Intel Optane Persistent Memory는 DIMM 슬롯에 장착되지만, 내부적으로는 3D XPoint(크로스포인트) 기술 기반의 비휘발성 메모리다. DRAM 대비 레이턴시는 높지만 SSD 대비로는 압도적으로 낮으며, 무엇보다 DIMM 폼팩터 특성상 CPU 메모리 컨트롤러가 직접 접근할 수 있다.

이 빌드에서는 768GB PMem을 Memory Mode로 구성했다. Memory Mode에서는 DRAM과 PMem이 하나의 통합 주소 공간으로 노출되며, 메모리 컨트롤러가 접근 패턴에 따라 데이터를 두 계층 사이에서 자동으로 이동시킨다. 구체적인 계층화 정책은 플랫폼 펌웨어와 메모리 컨트롤러 구현에 따라 다르며, 공개된 원본 사례에서도 내부 동작의 상세는 명시되지 않았다. 핵심은 768GB라는 대용량 주소 공간을 CPU가 직접 접근할 수 있다는 점이다.

[CPU] ←→ [DRAM + PMem 768GB: 통합 주소 공간]
              ↕
         [GPU VRAM 12GB: 핫패스 텐서]

중고 시장에서 동급 DRAM 용량(768GB)을 구성하는 비용과 비교하면 PMem은 현저히 저렴하게 확보 가능하다는 점도 이 접근법의 현실적 동기다. 2025년 기준 eBay에서 128GB Optane PMem 200 시리즈 모듈은 개당 $80~$150 수준에 거래되고 있으며, 768GB 구성에는 6개 모듈이 필요하다. 동급 DRAM(DDR4 128GB LRDIMM)이 개당 $300~$500 이상임을 감안하면 비용 차이는 3~5배에 달한다.

MoE 아키텍처와의 궁합

Kimi K2.5는 Mixture-of-Experts(MoE) 구조를 채택한다. MoE의 핵심 특성은 토큰당 활성화되는 파라미터가 전체의 일부에 불과하다는 점이다. 전체 1조 파라미터 중 실제 추론 시 활성화되는 것은 수십억 수준에 그친다.

이 특성이 계층적 메모리 배치와 맞물리면 다음과 같은 분리가 가능해진다.

텐서 유형 배치 위치 이유
어텐션 가중치 GPU VRAM (12GB) 매 토큰 활성화, 레이턴시 민감
Dense 레이어 GPU VRAM 상시 사용
공유 전문가(shared expert) GPU VRAM MoE 내 항상 활성화 경로
라우팅 구성요소 GPU VRAM 경량, 레이턴시 민감
희소 전문가(sparse expert) PMem/DRAM 토큰별 선택적 활성화, 대역폭 허용 가능

llama.cpp에서의 실제 MoE 오프로딩 설정

llama.cpp에서 이 배치를 제어하는 핵심 플래그는 --split-mode--gpu-layers(-ngl)다. 원본 Reddit 사례에서 사용된 정확한 명령어는 공개되지 않았으므로, 아래는 llama.cpp 공식 문서와 MoE 오프로딩 관련 이슈(#5099, #6217 등)를 기반으로 한 참고용 구성이다. 실제 환경에 따라 -ngl 값과 메모리 배분은 조정이 필요하다.

# llama.cpp MoE 오프로딩 참고 구성 (실제 환경에서 검증 필요)
./llama-cli \
  -m kimi-k2.5-Q2_K_XL.gguf \
  -ngl 10 \
  --split-mode none \
  -c 2048 \
  -n 128 \
  --threads 16
  • -ngl 10: GPU에 올릴 레이어 수. 12GB VRAM 한도 내에서 어텐션·Dense·공유 전문가 레이어를 수용하도록 조정한다. 값이 너무 크면 VRAM OOM이 발생하므로 낮은 값부터 시작해 점진적으로 늘려야 한다.
  • --split-mode none: 단일 GPU 구성에서 텐서 분할을 비활성화한다.
  • -c 2048: 컨텍스트 길이. 길수록 KV 캐시가 VRAM을 추가 점유하므로 초기 테스트에서는 낮게 설정한다.

주의: llama.cpp는 활발히 개발 중인 프로젝트로, MoE 관련 플래그와 동작은 버전에 따라 변경될 수 있다. 실행 전 ./llama-cli --help로 현재 버전의 지원 플래그를 반드시 확인하라. 특히 --override-tensor 같은 세밀한 텐서 배치 제어 기능은 빌드 옵션과 버전에 따라 가용 여부가 다르다.


실제 구성 단계별 가이드

이 빌드를 재현하려는 독자를 위해 필수 단계를 정리한다. 단, 원본 사례의 상세 설정이 공개되지 않은 부분은 일반적인 PMem 구성 절차를 기반으로 한다.

1단계: 하드웨어 요건 확인

  • CPU: Intel Xeon 3세대(Ice Lake SP, Sapphire Rapids) 또는 2세대(Cascade Lake SP). PMem 200 시리즈는 Ice Lake SP 이상을 권장한다.
  • 플랫폼: 듀얼 소켓 서버 보드(예: Supermicro X12 시리즈). 소비자용 플랫폼(LGA1700 등)은 PMem을 지원하지 않는다.
  • PMem 모듈: Intel Optane PMem 200 시리즈(128GB 또는 256GB 모듈). eBay, ServerMonkey 등 중고 서버 부품 마켓에서 검색한다.
  • GPU: VRAM 12GB 이상(예: RTX 3060 12GB, RTX 4070). 원본 사례는 12GB GPU를 사용했다.

2단계: PMem Memory Mode 설정

PMem을 Memory Mode로 구성하려면 서버 BIOS/UEFI에서 설정하거나 ipmctl 도구를 사용한다.

# ipmctl로 현재 PMem 상태 확인
sudo ipmctl show -dimm

# Memory Mode로 구성 (전체 용량을 Memory Mode로)
sudo ipmctl create -goal MemoryMode=100

# 설정 적용을 위해 재부팅 필요
sudo reboot

# 재부팅 후 구성 확인
sudo ipmctl show -goal
sudo ndctl list

Memory Mode 설정 후에는 PMem의 비휘발성 특성이 비활성화된다. 데이터 영속성이 필요하다면 App Direct Mode를 사용해야 하나, LLM 추론 용도에서는 Memory Mode가 적합하다.

3단계: 시스템 메모리 확인 및 llama.cpp 빌드

# 메모리 구성 확인
free -h
numactl --hardware

# llama.cpp CUDA 빌드
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
cmake -B build -DGGML_CUDA=ON
cmake --build build --config Release -j$(nproc)

4단계: 토큰 생성 속도 측정 환경 기록

벤치마크 수치를 비교·재현하려면 측정 환경을 명시해야 한다. 원본 사례에서 보고된 4 tokens/초는 다음 조건에서 측정된 것으로 추정되나, 원문에 배치 크기와 컨텍스트 길이가 명시되지 않아 정확한 재현은 어렵다.

변수 원본 사례 재현 시 권장 기록 항목
모델 Kimi K2.5 Q2_K_XL 모델명 + 양자화 방식
배치 크기 미공개 -b 값 (기본값: 512)
컨텍스트 길이 미공개 -c
GPU 레이어 수 미공개 -ngl
스레드 수 미공개 --threads
측정 구간 미공개 prefill vs. decode 구분

llama.cpp의 내장 벤치마크 도구를 활용하면 재현 가능한 수치를 얻을 수 있다.

# llama-bench로 토큰 생성 속도 측정
./build/bin/llama-bench \
  -m kimi-k2.5-Q2_K_XL.gguf \
  -ngl 10 \
  -c 2048 \
  -b 1 \
  -n 64

한국 개발 환경 연결 포인트

카카오, 네이버, 토스 등 국내 AI 인프라 팀이 직면하는 현실적 문제 중 하나는 대형 모델 서빙 비용 대비 성능 최적화다. 특히 온프레미스 또는 프라이빗 클라우드 환경에서 수백 GB 규모 모델을 서빙할 때, GPU 클러스터 비용은 선형적으로 증가한다.

이 빌드가 제시하는 아이디어는 직접 적용보다 설계 철학 차원에서 참고할 만하다. vLLM이나 TensorRT-LLM 같은 프로덕션 프레임워크에서도 CPU 오프로딩과 KV 캐시 계층화가 점진적으로 지원되고 있으며, 이기종 메모리 계층(HBM → DRAM → NVMe)을 활용한 추론 최적화는 국내 대형 서비스의 비용 절감 전략과 직결된다. 네이버 HyperCLOVA X 같은 대형 모델의 배치 추론에서도 메모리 계층 설계는 핵심 엔지니어링 과제다.


한계 및 현실적 제약

Optane 단종 문제: Intel은 2022년 Optane 사업부를 정리했다. 신규 구매는 중고 시장에 의존해야 하며, 지원되는 서버 플랫폼(Ice Lake Xeon 등)도 구세대다. 이 아키텍처를 재현하려면 중고 서버 생태계를 활용해야 한다는 현실적 장벽이 있다.

속도 제약: 4 tokens/초는 대화형 인터페이스 기준으로 체감상 느리다. 프로덕션 서비스에서 요구하는 수십 tokens/초 수준에는 도달하지 못한다. PMem의 레이턴시(DRAM 대비 수 배)가 희소 전문가 로딩 시 병목으로 작용한다.

재현 가능성: 768GB PMem을 지원하는 플랫폼 구성 자체가 일반적이지 않다. Intel Xeon 3세대(Ice Lake SP) 기반 듀얼 소켓 서버가 필요하며, 소비자 플랫폼에서는 구현 불가능하다. 또한 원본 사례에서 llama.cpp 버전, 정확한 플래그 조합, 측정 환경이 공개되지 않아 수치 재현에는 추가적인 실험이 필요하다.


결론

이 빌드는 메모리 계층화가 LLM 추론 확장성의 핵심 변수임을 실증한 사례다. GPU VRAM의 절대적 한계를 PMem이라는 중간 계층으로 우회하고, MoE의 희소 활성화 특성을 메모리 계층 분리와 결합한 설계는 단순한 하드웨어 실험을 넘어 아키텍처적 통찰을 담고 있다.

Optane이 단종된 현재, 유사한 역할을 담당할 수 있는 기술로는 CXL(Compute Express Link) 기반 메모리 확장 카드가 부상하고 있다. Samsung, SK Hynix 등이 CXL DRAM 모듈을 출시하고 있으며, 장기적으로는 이 빌드의 아이디어가 CXL 생태계에서 재현될 가능성이 있다.


출처: Reddit – Computer build using Intel Optane Persistent Memory


댓글 남기기