30 poin oleh GN⁺ 2025-08-13 | 6 komentar | Bagikan ke WhatsApp
  • Dengan memanfaatkan opsi --cpu-moe di llama-cpp, layer expert MOE diproses di CPU dan hanya layer attention yang di-offload ke GPU, sehingga kinerja prefill cepat dapat dicapai dengan 5~8GB VRAM
  • Di GPU hanya tinggal KV cache, bobot dan aktivasi attention, tabel routing, LayerNorm, dan sebagainya yang merupakan parameter non-expert, sehingga penggunaan memori tetap rendah
  • Bahkan dengan GPU sekelas RTX 3060Ti dan RAM sistem 64GB~96GB, model 120B dapat dijalankan dengan ringan, dan performa terbaik dicapai pada GPU yang mendukung BF16 (RTX 3000+)
  • Saat menggunakan 5GB VRAM, tercatat performa 8.15ms per token (122.66 token/detik), dan dengan 8GB VRAM meningkat hingga 7.44ms (134.44 token/detik)
  • Arsitektur 120B dirancang agar optimal untuk hardware konsumen, sehingga tetap bisa berjalan cepat bahkan di lingkungan dengan sumber daya GPU terbatas

Struktur CPU-MOE dan offloading GPU

  • Dengan opsi --cpu-moe, seluruh layer expert (MOE) diproses di CPU
    • Contoh: --n-cpu-moe 36 → semua 36 blok MOE dijalankan di CPU
    • Jika perlu, sebagian MOE dapat dipindahkan ke GPU untuk menyesuaikan performa
  • Untuk menghemat VRAM, hanya komponen berikut yang ditempatkan tetap di GPU
    • KV cache (sequence)
    • Bobot dan aktivasi attention
    • Tabel routing
    • LayerNorm dan parameter non-expert lainnya
  • Karena bobot MOE tidak menetap di GPU, tidak ada beban besar dari parameter MLP berukuran besar

Kebutuhan memori dan hardware

  • GPU: 5~8GB VRAM sudah cukup (misalnya RTX 3060Ti)
  • GPU paling optimal bila mendukung BF16 (seri RTX 3000 ke atas)
  • RAM sistem: minimal 64GB, idealnya 96GB
    • Dengan memanfaatkan Linux mmap, layer expert yang “panas” tetap dipertahankan di memori meski seluruh model tidak muat sepenuhnya di memori

Angka performa

Lingkungan 5GB VRAM

  • Pemrosesan prompt: 8.15ms/token (122.66 token/detik)
  • Inferensi: 55.44ms/token (18.04 token/detik)

Lingkungan 8GB VRAM (--n-cpu-moe 36, sisanya GPU)

  • Pemrosesan prompt: 7.44ms/token (134.44 token/detik)
  • Inferensi: 39.03ms/token (25.62 token/detik)

Lingkungan 22GB VRAM (sebagian MOE di GPU)

  • Pemrosesan prompt: 6.13ms/token (163.01 token/detik)
  • Inferensi: 32.45ms/token (30.82 token/detik)

Kesimpulan

  • Desain GPT-OSS-120B dioptimalkan agar model berskala besar bisa berjalan cepat bahkan pada hardware konsumen
  • Berkat struktur CPU-MOE yang menjaga kecepatan sambil menekan penggunaan VRAM, pendekatan ini sangat cocok untuk lingkungan dengan sumber daya GPU terbatas

Pertanyaan inti & isi jawaban

Q1. Berapa penggunaan VRAM nyata pada konfigurasi ini?

  • Penulis asli: Sekitar 5GB VRAM jika semua MOE dijalankan di CPU, dan hanya layer attention yang dinaikkan ke GPU
  • Penjelasan tambahan: Di GPU hanya tinggal KV cache, bobot dan aktivasi attention, tabel routing, serta LayerNorm

Q2. Berapa RAM minimum yang dibutuhkan?

  • Penulis asli: Minimal 64GB, idealnya disarankan 96GB
  • Alasan: Linux mmap menjaga layer expert yang “panas” tetap berada di memori, sehingga akses cepat tetap mungkin tanpa harus memuat seluruh model

Q3. Kalau sebagian layer MOE dipindahkan ke GPU, apakah kecepatannya naik banyak?

  • Penulis asli: Bisa sedikit lebih cepat, tetapi perbedaannya tidak besar
  • Contoh:
    • Semua MOE di CPU: prompt 134 token/detik, inferensi 25 token/detik
    • 8 MOE di GPU: prompt 163 token/detik, inferensi 30 token/detik
    • Penggunaan VRAM naik menjadi 22GB

Q4. GPU seperti apa yang cocok?

  • Penulis asli: RTX 3060Ti atau lebih tinggi sudah cukup, dukungan BF16 (RTX 3000+) direkomendasikan
  • Alasan: Semua layer selain MOE berjalan dalam BF16

Q5. Bagaimana pengaturan perintahnya?

  • Penulis asli: Menyediakan contoh berdasarkan 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"  
    

6 komentar

 
kaydash 2025-08-14

Saya benar-benar sudah mencobanya, tapi sangat lambat.
Clock GPU hampir tidak terpakai,
memori khusus GPU 8GB dan memori fisik 64GB terpakai penuh,
dan 16 vCore hanya terpakai setengah.
Jadi ini sebaiknya dimaknai sekadar bisa jalan; ternyata bukan dalam bentuk yang memanfaatkan semua resource.
Satu kali kueri memakan waktu 6–8 menit.

 
cronex 2025-08-13

Saya juga harus coba seperti ini.

 
crawler 2025-08-13

Saya kira 32GB sudah cukup...

 
cnaa97 2025-08-13

Untuk sementara, di lm studio M4 Max 64GB juga tidak bisa jalan T_T

 
jinucho 2025-08-13

Karena 65GB... sayang sekali T_T

 
GN⁺ 2025-08-13
Opini Hacker News
  • Penasaran apakah guardrail bisa dinonaktifkan jika menjalankan model langsung di perangkat keras sendiri
    • Untuk melewati guardrail, perlu mencari semacam ‘abliterated finetune’ yang melacak lalu menghapus jalur neuron yang memicu respons penolakan
    • Menurut tulisan yang baru-baru ini saya baca, GPT-OSS dilatih hanya dengan data sintetis/generatif sehingga sejak awal tidak banyak memiliki ‘pengetahuan terlarang’
      Tulisan terkait
    • Bisa dilewati dengan prompt jailbreak, dan meski agak merepotkan, hasilnya berjalan dengan baik
    • Versi yang sebagian guardrail-nya dihapus mengalami penurunan performa yang cukup besar, jadi menurut saya malah merugikan
    • Pada dasarnya ini tertanam di dalam model, tetapi ada komunitas yang membongkar dan memodifikasinya
  • Di lingkungan 5950x + RAM 128GB + GPU 3060 12GB, kecepatan pembuatan token memang cepat, tetapi begitu konteks membesar sedikit saja, kecepatan pemrosesan jadi sangat lambat
    Karena itu saya lebih sering memakai model lain seperti qwen, mistral, dan gemma
    • Daripada ungkapan subjektif seperti ‘cepat’ atau ‘lambat’, saya penasaran dengan angka token yang lebih spesifik
    • Saya juga penasaran, selain chat sederhana/manipulasi teks, apa yang ingin dilakukan dengan model ini
  • Di lingkungan RAM 32GB + VRAM 16GB, model 20B bisa dimuat seluruhnya ke VRAM, tetapi jika jendela konteks diperbesar melewati 8k token, VRAM menjadi tidak cukup
    Orang lain menjalankan model 120B dengan VRAM yang lebih kecil, jadi mungkin penyebabnya adalah tidak adanya dukungan ROCm dan penggunaan Vulkan
    Tetap saja, menyenangkan mendorong perangkat keras sampai batasnya
    • Semakin besar ukuran konteks, semakin banyak layer yang harus di-offload ke RAM sistem
      llama.cpp memungkinkan kita mengatur langsung jumlah layer komputasi GPU, sedangkan ollama menyesuaikannya secara otomatis
      Akan bagus jika rasio RAM/VRAM bisa disesuaikan secara dinamis sesuai panjang sesi
  • Lucu juga menyebut 64GB RAM + 8GB VRAM sebagai ‘pas-pasan’, bagi saya itu setup bernilai ribuan dolar
    • RAM sekitar 300 CAD, GPU sekitar 400 CAD, jadi kalau desktop bisa dirakit cukup murah
    • Ini setara PC gaming kelas menengah ke bawah, jadi dengan upgrade beberapa ratus dolar sudah bisa langsung dijalankan di rumah
    • Ada juga produk pre-order di kisaran $1599~$1999 yang tidak terlalu mahal
    • Dengan di bawah 1000 dolar AS, komponen baru masih bisa dirakit, dan kalau bekas bisa lebih murah dengan performa GPU yang mungkin lebih baik
    • DDR5 64GB ada di kisaran $150, 3060 12GB sekitar $300, dan di eBay bisa ditemukan lebih murah
  • Penasaran apakah ada yang pernah menjalankan model 20B di MacBook Air M4 atau RTX 3060
  • Karena RAM kurang, saya tidak bisa memakai model besar, tetapi model 20B berjalan cepat di MacBook dan sudah cukup untuk kebutuhan saya
    Hanya saja function calling di llama.cpp masih rusak
    • Bug tersebut sudah diperbaiki di PR ini
    • Syukurlah itu bug, bukan batasan RAM, dan di MacBook Air RAM 16GB pun beberapa model berjalan dengan baik
      Saya berencana meng-host chatbot AI di kamar dengan mini PC seharga $149, dan model Qwen3 4B tampaknya cukup bagus
      Rencana terkait
  • Penasaran apakah di OpenWebUI atau GUI lain, optimasi pengaturan dengan spesifikasi ini memungkinkan, dan sepertinya model 20B akan lebih baik
  • Saya masih pemula dalam LLM, jadi penasaran apakah optimasi ini bisa diterapkan ke semua model MoE
    • Karena caranya menerapkan regex pada nama layer, jika penamaannya mirip maka bisa juga dipakai pada model lain
      Misalnya ini juga berjalan di Qwen 3, dan kita bisa menentukan regex sendiri untuk memindahkan layer tertentu ke perangkat tertentu
  • Penasaran apakah versi optimasi mlx bisa berjalan di Mac 64GB
    • Menurut estimasi LM Studio, kuantisasi 3-bit (~50GB) seharusnya bisa berjalan tanpa masalah