TL;DR
llama.cpp에 Dense 모델의 FFN을 CPU로 오프로딩하는 --n-cpu-ffn과 --cpu-ffn 옵션을 추가하는 PR이 제안됐다. 인용된 사례는 Q4_K_M으로 양자화한 Qwen3.8-27B를 16GB VRAM과 130k 컨텍스트에서 약 20 t/s로 실행했으며, FFN 배치가 VRAM 한계를 완화하는 방식이다. speculative decoding을 사용할 때는 MTP에 해당하는 block 64의 FFN을 GPU에 남겨야 한다는 주의사항도 함께 제시됐다.
주요 논점
작성자는 Dense 모델의 FFN CPU 오프로딩 옵션이 VRAM이 제한된 환경에서 큰 모델을 실행하는 데 유용하며, 기존 MoE용 옵션처럼 llama.cpp에 기본 기능으로 들어가야 한다고 봅니다.
실용적 조언
- speculative decoding을 사용할 때는 block 64(MTP)의 FFN을 CPU 오프로딩 대상으로 지정하지 말고 GPU에 유지해야 합니다.
- 16GB VRAM에서 Qwen3.8-27B를 실행하려면 Q4_K_M 양자화와 CPU 오프로딩을 함께 고려할 수 있으며, 게시물에 인용된 사례의 처리 속도는 약 20 t/s입니다.
섹션별 상세
용어 해설
- Dense 모델(Dense Model)
- — 각 입력 토큰이 전체 파라미터를 통과하는 모델 구조입니다. 일부 전문가만 선택하는 MoE와 달리 모든 FFN 블록을 계산하므로, VRAM이 부족할 때 FFN 일부를 CPU로 옮기는 오프로딩 설정이 메모리 배치와 속도에 직접 영향을 줍니다.
- 혼합 전문가 모델(MoE)
- — 여러 전문가 네트워크 중 입력마다 일부만 선택해 계산하는 구조입니다. llama.cpp는 MoE 모델의 FFN을 CPU로 옮기는 --n-cpu-moe와 --cpu-moe 옵션을 제공하며, 게시물은 Dense 모델에도 이에 대응하는 설정을 추가하자고 제안합니다.
- 피드포워드 네트워크(FFN)
- — Transformer 블록 안에서 토큰 표현을 비선형적으로 변환하는 핵심 계산 부분입니다. 게시물의 PR은 Dense 모델에서 FFN 블록 수 또는 FFN 오프로딩을 지정해 GPU VRAM 사용량을 줄이고 큰 모델을 실행하려는 목적을 가집니다.
- CPU 오프로딩(CPU Offload)
- — 모델의 일부 연산이나 가중치를 GPU 대신 CPU 메모리에서 처리하는 방식입니다. GPU에 남길 레이어와 CPU로 보낼 FFN을 나누어 16GB VRAM에서도 Qwen3.8-27B를 실행하는 구성이 사례로 제시됐지만, CPU 이동 비용 때문에 처리 속도와 배치가 함께 고려돼야 합니다.
- 추측 디코딩(Speculative Decoding)
- — 작은 보조 경로나 모델이 다음 토큰을 먼저 추측하고 주 모델이 이를 검증해 생성을 빠르게 하는 추론 방식입니다. 인용된 안내는 이 기능을 사용할 때 MTP에 해당하는 block 64의 FFN을 GPU에 남겨야 하므로 해당 블록을 CPU 오프로딩 대상으로 지정하지 말라고 합니다.
언급된 도구
Dense 모델과 MoE 모델의 FFN을 CPU로 오프로딩하는 추론 옵션을 제공하는 라이브러리입니다.
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.