lucienhuangfu/eLLM
eLLM can infer LLM on CPUs faster than on GPUs
What it solves
eLLM은 CPU에서 대형 언어 모델(LLM) 추론을 실행할 때 발생하는 성능 격차와 높은 비용 문제를 해결합니다. 일반적으로 GPU가 기본 선택이지만, VRAM이 제한되어 초장 컨텍스트에서는 프롬프트를 작은 청크로 나누어 처리해야 하는 경우가 많습니다. eLLM은 서버급 CPU의 큰 메모리와 캐시 용량을 활용해 CPU 추론을 최적화함으로써 멀티 GPU 시스템과 경쟁력을 갖추고, 일부 장기 컨텍스트 시나리오에서는 더 빠른 성능을 제공합니다.
How it works
eLLM은 "스토리지를 계산으로 교환"한다는 철학을 적용해 런타임 오버헤드와 지연 시간을 감소시킵니다:
- Elastic Static Computation Graph: 차원 우선 텐서 레이아웃을 사용해 전역적으로 유일한 정적 그래프를 구축함으로써 그래프를 재구성하지 않고도 다양한 입력 길이를 지원합니다.
- Static-Shape KV Cache: 페이지드 메모리 관리 대신 고정 형태 텐서를 미리 할당해 키‑값(KV) 캐시로 사용하고, 좌표 기반 직접 접근을 가능하게 하여 메타데이터 오버헤드를 줄입니다.
- Massive-Dimensional Tensors: 토큰과 시퀀스를 위한 매우 큰 차원을 예약해 "무제한" KV 텐서를 구현, 단일 Prefill 단계에서 전체 데이터를 처리할 수 있습니다.
- Head-by-Head Attention: Prefill 단계에서 헤드를 하나씩 계산합니다. 이를 통해 단일 헤드의 KV 데이터가 CPU의 대용량 L3 캐시에 가능한 오래 머무르게 하여 메모리 로드를 최소화합니다.
Who it’s for
이 프레임워크는 CPU 서버(Intel Xeon 4세대 이상, AMX 지원)에서 장기 컨텍스트 워크로드를 실행하는 사용자를 위해 설계되었습니다. 특히 다음과 같은 경우에 적합합니다:
- AI Agents: 대규모 컨텍스트를 받아 추론하는 컴퓨터 사용 에이전트.
- Developers: 파일 간 또는 모듈 간 컨텍스트를 다루는 코드 Copilot.
- Enterprise RAG: 대용량 외부 문서를 프롬프트에 삽입하는 시스템.
- Researchers: 방대한 자료를 다단계로 합성하는 심층 연구 워크플로.
Highlights
- Pure CPU Inference: GPU나 NPU가 필요 없으며 Xeon/EPYC 서버에서 실행됩니다.
- vLLM API Compatible: 기존 LLM 생태계와 손쉽게 통합할 수 있습니다.
- Long Context Support: 방대한 CPU RAM을 활용해 사실상 무제한에 가까운 컨텍스트 윈도우를 지원합니다.
- Reduced Latency: GPU가 요구하는 청크 처리 방식을 피해 TTFT(Time to First Token)를 최적화합니다.
- Cost Effective: GPU 배포에 비해 하드웨어 및 사용자당 추론 비용이 크게 낮아집니다.