30P by neo 2달전 | ★ favorite | 댓글 6개
  • 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"  
    

일단 lm studio M4 max 64gb에서 안돌아감 ㅠㅠ

65기가라서... 아쉽네요 ㅜㅜ

실제로해봤는데 너무 느려요
gpu 클럭은 거의 안쓰고
gpu 전용메모리 8GB, 물리메모리64GB를 가득 사용하고,
16vCore는 절반만씁니다.
그냥 돌아간다에 의미를 두어야지 모든 리소스를 다 사용하는 형태는아니였어요.
질의 한번에 6~8분걸렸습니다.

비슷하게 함 해봐야겠어요.

32gb면 충분할 줄 알았는데...

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 비율을 동적으로 조정할 수 있으면 좋겠음
  • 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이 아직 깨져 있음
    • 해당 버그는 이 PR에서 수정됨
    • RAM 한계가 아니라 버그라 다행이며, 16GB RAM MacBook Air에서도 여러 모델을 잘 돌림
      방에서 $149 미니 PC로 AI 챗봇을 호스팅할 계획이며, Qwen3 4B 모델이 좋아 보임
      관련 계획
  • OpenWebUI나 다른 GUI에서 이 스펙으로 설정 최적화가 가능한지 궁금하며, 20B 모델이 더 나을 것 같음
  • LLM 초보인데, 이 최적화가 모든 MoE 모델에 적용 가능한지 궁금함
    • 레이어 이름에 정규식을 적용하는 방식이라, 비슷한 네이밍이면 다른 모델에도 가능함
      예를 들어 Qwen 3에서도 동작했고, 직접 정규식을 지정해 특정 레이어를 특정 장치로 옮길 수 있음
  • mlx 최적화 버전이 64GB Mac에서 돌아갈지 궁금함
    • LM Studio의 추정치로는 3-bit 양자화(~50GB)면 문제없이 가능함