30 ポイント 投稿者 GN⁺ 2025-08-13 | 6件のコメント | WhatsAppで共有
  • 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で、Attentionレイヤーのみを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"  
    

6件のコメント

 
kaydash 2025-08-14

実際に試してみましたが、かなり遅いです。
GPUクロックはほとんど使われず、
GPU専用メモリ8GBと物理メモリ64GBをいっぱいまで使い、
16 vCoreは半分しか使いません。
単に動くということに意味を置くべきで、すべてのリソースを使い切る形ではありませんでした。
1回の問い合わせに6〜8分かかりました。

 
cronex 2025-08-13

自分も似たように試してみようと思います。

 
crawler 2025-08-13

32GBあれば十分だと思っていたのに…。

 
cnaa97 2025-08-13

ひとまず lm studio M4 Max 64GB では動きません(泣)

 
jinucho 2025-08-13

65GBなので……残念ですね(涙)

 
GN⁺ 2025-08-13
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)なら問題なく動かせる