llama-cpp의 --cpu-moe 옵션을 활용해 MOE 전문가 레이어를 CPU에서 처리하고, 주의(attention) 레이어만 GPU에 오프로드해 5~8GB VRAM으로 빠른 프리필 성능을 구현
- CPU-MOE와 GPU 오프로딩 구조
- --cpu-moe 옵션으로 전문가(MOE) 레이어를 전부 CPU에서 처리
- 예: --n-cpu-moe 36 → 36개 MOE 블록 전부 CPU 실행
- 필요 시 일부 MOE만 GPU로 옮겨 성능 조정 가능
- GPU에는 다음만 상주시켜 VRAM 절약
- KV 캐시(시퀀스)
- Attention 가중치와 활성값
- 라우팅 테이블
- LayerNorm 및 기타 비전문가 파라미터
- MOE 가중치는 GPU에 상주하지 않아 대형 MLP 파라미터 부담 없음
Step 1: 최초 추론 실행
- 어떤 방식이라도 최초 추론(baseline inference) 을 빠르게 실행하는 것이 출발점
- GPU에서 영감을 받아 여러 엔지니어가 동시에 vLLM, SGLang, TensorRT-LLM의 실험을 병행
- 여러 엔지니어가 병렬로 vLLM, SGLang, TensorRT-LLM을 시도함. TensorRT-LLM이 가장 빠르다고들 하지만 보통 세팅하기도 가장 어렵고, 최신 아키텍처 반영도 잘 안 되고, 프로덕션 환경과 똑같은 하드웨어-드라이버-라이브러리 스택에서 모델을 직접 컴파일해야 해서 정말 번거로움. 멀티모달은 한동안 거의 불가능할 정도였고, 대표적인 라마 멀티모달 모델조차 제대로 동작이 안 됐음. 가치가 있는지 의문이고, 예를 들어 GPT-OSS-120B를 H100에서 vLLM으로 돌리면 문제없이 돌아가고 토큰 착실하게 130~140t/s 뽑아줌. 제목만 보면 GPU 하나에 500t/s가 나올 줄 알았는데 실상은 텐서 병렬 세팅임. gpt-oss를 위해 TRT-LLM 따로 패키징한 것도 조금 우스움. TRT-LLM 자체가 좀 혼란스러운 툴임
TRT-LLM을 경험해보면 DX 측면으로 도전과제가 많음. 멀티모달 할 때는 여전히 vLLM을 많이 씀. 그래도 우리가 서비스하는 트래픽처럼 대용량, 저지연 환경에서는 벤치마크에서 TRT-LLM이 항상 우수해서 이쪽 툴링에 많이 투자했음
- 실제로해봤는데 너무 느려요
gpu 클럭은 거의 안쓰고
gpu 전용메모리 8GB, 물리메모리64GB를 가득 사용하고,
16vCore는 절반만씁니다.
그냥 돌아간다에 의미를 두어야지 모든 리소스를 다 사용하는 형태는아니였어요.
질의 한번에 6~8분걸렸습니다.
llama-cpp은 CPU로도 빠르게 LLM을 서빙할 수 있는 프레임워크라는 점만 알고,
아직 안 써봤는데 MoE Layer, 즉 전문가 선택에 관여하는 파라미터를 CPU로 하고 실제 생성 과정은 GPU로 실행한다는 아이디어 자체가 흥미로워서 퍼왔다.
References:
https://news.hada.io/topic?id=22458
https://www.baseten.co/blog/sota-performance-for-gpt-oss-120b-on-nvidia-gpus/
https://news.hada.io/topic?id=22490
https://old.reddit.com/r/LocalLLaMA/comments/1mke7ef/120b_runs_awesome_on_just_8gb_vram/
'AI Codes' 카테고리의 다른 글
| LangChain의 structured output 방법 정리 (0) | 2025.12.12 |
|---|---|
| 코드와 데이터 라이센스 관련 리서치 (0) | 2025.06.10 |
| IDE에 로컬 LLM 연결 시도 후기 (0) | 2025.04.29 |