27P 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"  
    

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

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

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

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

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)면 문제없이 가능함