GPT-OSS-120B, 8GB VRAM만으로도 훌륭하게 구동가능

3 days ago 13

  • 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"

Read Entire Article