GPT-OSS-120B, 8GB VRAM만으로도 훌륭하게 구동가능
(old.reddit.com)-
llama-cpp의
--cpu-moe
옵션을 활용해 MOE 전문가 레이어를 CPU에서 처리하고, 주의(attention) 레이어만 GPU에 오프로드해 5~8GB VRAM으로 빠른 프리필 성능을 구현 - GPU에는 KV 캐시, Attention 가중치·활성값, 라우팅 테이블, LayerNorm 등 비전문가 파라미터만 상주해 메모리 사용량이 낮음
- RTX 3060Ti급 GPU와 64GB~96GB 시스템 RAM으로도 120B 모델을 가볍게 구동 가능하며, BF16 지원 GPU(RTX 3000+)에서 최적 성능을 발휘함
- 5GB VRAM 사용 시 토큰당 8.15ms(122.66 토큰/초) 성능을 기록했고, 8GB VRAM 사용 시 7.44ms(134.44 토큰/초)까지 개선됨
- 120B 구조는 소비자용 하드웨어에 최적화된 설계로, GPU 자원이 부족한 환경에서도 고속 실행이 가능함
CPU-MOE와 GPU 오프로딩 구조
-
--cpu-moe
옵션으로 전문가(MOE) 레이어를 전부 CPU에서 처리- 예:
--n-cpu-moe 36
→ 36개 MOE 블록 전부 CPU 실행 - 필요 시 일부 MOE만 GPU로 옮겨 성능 조정 가능
- 예:
- GPU에는 다음만 상주시켜 VRAM 절약
- KV 캐시(시퀀스)
- Attention 가중치와 활성값
- 라우팅 테이블
- LayerNorm 및 기타 비전문가 파라미터
- MOE 가중치는 GPU에 상주하지 않아 대형 MLP 파라미터 부담 없음
메모리 및 하드웨어 요구사항
- GPU: 5~8GB VRAM으로 충분 (예: RTX 3060Ti)
- GPU는 BF16 지원 시 최적 (RTX 3000 시리즈 이상)
- 시스템 RAM: 최소 64GB, 이상적으로는 96GB
- Linux mmap을 활용해 전체 모델이 메모리에 안 들어가도 ‘핫’ 전문가 레이어는 메모리에 유지
성능 수치
5GB VRAM 환경
- 프롬프트 처리: 8.15ms/토큰 (122.66 토큰/초)
- 추론: 55.44ms/토큰 (18.04 토큰/초)
8GB VRAM 환경 (--n-cpu-moe 36
, 나머지 GPU)
- 프롬프트 처리: 7.44ms/토큰 (134.44 토큰/초)
- 추론: 39.03ms/토큰 (25.62 토큰/초)
22GB VRAM 환경 (MOE 일부 GPU)
- 프롬프트 처리: 6.13ms/토큰 (163.01 토큰/초)
- 추론: 32.45ms/토큰 (30.82 토큰/초)
결론
- GPT-OSS-120B의 설계는 소비자용 하드웨어에서도 대규모 모델을 고속 실행하도록 최적화됨
- VRAM 사용량을 줄이면서도 속도를 유지하는 CPU-MOE 구조 덕분에 GPU 리소스가 제한된 환경에 특히 적합함
핵심 질문 & 답변 내용
Q1. 이 설정에서 실제 VRAM 사용량은 얼마나 되나요?
- 원 작성자: MOE 전부 CPU 실행 시 약 5GB VRAM, 주의 레이어만 GPU로 올림
- 추가 설명: GPU에는 KV 캐시, Attention 가중치·활성값, 라우팅 테이블, LayerNorm만 상주
Q2. RAM은 최소 얼마가 필요한가요?
- 원 작성자: 최소 64GB, 이상적으론 96GB 권장
- 이유: Linux mmap이 '핫' 전문가 레이어를 메모리에 유지해 전체 모델 적재 없이도 빠른 접근 가능
Q3. 일부 MOE 레이어를 GPU로 옮기면 속도가 많이 빨라지나요?
- 원 작성자: 약간 빨라질 수 있지만 큰 차이는 없음
-
예시:
- MOE 전부 CPU: 프롬프트 134토큰/초, 추론 25토큰/초
- MOE 8개 GPU: 프롬프트 163토큰/초, 추론 30토큰/초
- VRAM 사용량은 22GB로 증가
Q4. 어떤 GPU가 적합한가요?
- 원 작성자: RTX 3060Ti 이상이면 충분, BF16 지원(RTX 3000+) 권장
- 이유: MOE 외 모든 레이어가 BF16로 동작
Q5. 명령어 세팅은 어떻게 하나요?
-
원 작성자: PR #15157 기준 예시 제공
~/build/llama.cpp/build-cuda/bin/llama-server \ -m $LLAMA_MODEL_DIR/gpt-oss-120b-mxfp4-00001-of-00003.gguf \ --n-cpu-moe 36 \ --n-gpu-layers 999 \ -c 0 -fa \ --jinja --reasoning-format none \ --host 0.0.0.0 --port 8502 --api-key "dummy"
실제로해봤는데 너무 느려요
gpu 클럭은 거의 안쓰고
gpu 전용메모리 8GB, 물리메모리64GB를 가득 사용하고,
16vCore는 절반만씁니다.
그냥 돌아간다에 의미를 두어야지 모든 리소스를 다 사용하는 형태는아니였어요.
질의 한번에 6~8분걸렸습니다.
Hacker News 의견
- 직접 하드웨어에서 모델을 돌리면 가드레일을 해제할 수 있는지 궁금함
- 가드레일을 우회하려면, 거부 반응을 일으키는 뉴런 경로를 추적해 삭제하는 식의 ‘abliterated finetune’을 찾아야 함
- 최근 읽은 글에 따르면 GPT-OSS는 인공/생성 데이터로만 학습돼서 애초에 ‘금지된 지식’이 많지 않음
관련 글 - jailbreak 프롬프트로 우회 가능하며, 약간 번거롭지만 잘 작동함
- 가드레일이 일부 제거된 버전은 성능이 확 떨어져서 개인적으로는 손해라고 생각함
- 기본적으로는 모델에 내장돼 있지만, 이를 크랙하고 수정하는 커뮤니티가 존재함
- 5950x + 128GB RAM + 12GB 3060 GPU 환경에서 토큰 생성 속도는 빠르지만, 컨텍스트가 조금만 커져도 처리 속도가 매우 느려짐
그래서 qwen, mistral, gemma 같은 다른 모델을 주로 사용 중임- ‘빠르다’ ‘느리다’ 같은 주관적 표현보다 구체적인 토큰 수치가 궁금함
- 단순 채팅/텍스트 조작 외에 이 모델로 무엇을 하려는지 궁금함
- 32GB RAM + 16GB VRAM 환경에서 20B 모델은 VRAM에 전부 올릴 수 있지만, 컨텍스트 창을 8k 토큰 이상 늘리면 VRAM이 부족해짐
다른 사람들은 더 적은 VRAM으로 120B 모델을 돌리는데, 아마 ROCm 미지원과 Vulkan 사용 때문일 수 있음
그래도 하드웨어 한계까지 밀어붙이는 게 재미있음- 컨텍스트 크기가 커질수록 더 많은 레이어를 시스템 RAM으로 오프로드해야 함
llama.cpp는 GPU 계산 레이어 수를 직접 설정할 수 있지만, ollama는 자동 조정함
세션 길이에 따라 RAM/VRAM 비율을 동적으로 조정할 수 있으면 좋겠음
- 컨텍스트 크기가 커질수록 더 많은 레이어를 시스템 RAM으로 오프로드해야 함
- 64GB RAM + 8GB VRAM을 ‘겨우’라고 말하는 게 웃김, 나에겐 수천 달러짜리 세팅임
- RAM 약 300 CAD, GPU 약 400 CAD로 데스크톱이면 저렴하게 가능함
- 게이밍 PC 중저가 수준이라, 몇 백 달러 업그레이드로 집에서 바로 돌릴 수 있음
- $1599~$1999 정도면 비싸지 않은 프리오더 제품도 있음
- 미화 1000달러 이하로 새 부품 조립 가능, 중고면 더 저렴하고 GPU 성능도 나을 수 있음
- DDR5 64GB는 $150, 12GB 3060은 $300 수준이며, eBay에서 더 싸게 구할 수 있음
- MacBook Air M4나 RTX 3060에서 20B 모델을 돌려본 사람이 있는지 궁금함
- RAM이 부족해 큰 모델은 못 쓰지만, 20B 모델은 MacBook에서 빠르고 내 용도에 충분함
다만 llama.cpp에서 function calling이 아직 깨져 있음 - OpenWebUI나 다른 GUI에서 이 스펙으로 설정 최적화가 가능한지 궁금하며, 20B 모델이 더 나을 것 같음
- LLM 초보인데, 이 최적화가 모든 MoE 모델에 적용 가능한지 궁금함
- 레이어 이름에 정규식을 적용하는 방식이라, 비슷한 네이밍이면 다른 모델에도 가능함
예를 들어 Qwen 3에서도 동작했고, 직접 정규식을 지정해 특정 레이어를 특정 장치로 옮길 수 있음
- 레이어 이름에 정규식을 적용하는 방식이라, 비슷한 네이밍이면 다른 모델에도 가능함
- mlx 최적화 버전이 64GB Mac에서 돌아갈지 궁금함
- LM Studio의 추정치로는 3-bit 양자화(~50GB)면 문제없이 가능함