0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[ローカルLLM]gpt-oss-120をローカルマシンで動作させて処理速度を検証した

Last updated at Posted at 2025-08-17

はじめに

gpt-oss-120bのような大きなモデルは自分のマシンだと動かないと思っていたのだけど、Redditを覗いていたら以下の書き込みを発見。

llama-serverのオプション(--n-cpu-moe)を使えば、VRAMの少ない環境(8GB)などでも25 tokens/secくらいの速度で動作させられるらしい。

--n-cpu-moeは、MoEの重みをCPUに保持させるオプションとのこと。

とういことで、コンシューマ用のマシンでどの程度の処理速度が出るか検証してみた。

環境

私の環境は以下の通り。

項目 (Item) 内容 (Content)
OS Kubuntu 24.04.03
CPU Ryzen 5 7600
メモリ (Memory) DDR5-5600 64GB
マザーボード (Motherboard) MSI MAG B650 TOMAHAWK WIFI
GPU1 ZOTAC GAMING GeForce RTX 5060 Ti 16GB Twin Edge
GPU2 MSI GeForce RTX 3060 VENTUS 2X 12G OC
GPUドライババージョン 575.64.03
$ nvidia-smi
Sun Aug 17 09:41:29 2025       
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 575.64.03              Driver Version: 575.64.03      CUDA Version: 12.9     |
|-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA GeForce RTX 5060 Ti     Off |   00000000:01:00.0  On |                  N/A |
|  0%   46C    P5             13W /  180W |    1567MiB /  16311MiB |      5%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
|   1  NVIDIA GeForce RTX 3060        Off |   00000000:06:00.0 Off |                  N/A |
|  0%   54C    P8             18W /  170W |      15MiB /  12288MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+

動かして処理速度検証

--n-cpu-moeの数値を調整すれば、GPUと組み合わせて動作させることができるようなので、以下の4パターンで検証してみた。

  • CPUのみ
  • CPU + RTX5060ti
  • CPU + RTX3060
  • CPU + RTX5060ti + RTX3060

CPUのみ

すべてCPUで処理。gpt-oss-120bは36レイヤということで、--n-cpu-moeには36を指定。

起動コマンド
docker run \
--rm \
-v ./models:/models \
-p 22015:8000 \
ghcr.io/ggml-org/llama.cpp:server-cuda-b6152 \
--model /models/gpt-oss-120b-GGUF/gpt-oss-120b-mxfp4-00001-of-00003.gguf \
--port 8000 \
--host 0.0.0.0 \
--ctx-size 32768 \
--jinja \
--reasoning-format none \
--n-cpu-moe 36 \
--flash-attn \
--temp 1.0 \
--top-p 1.0 

結果: 12.14 tokens/sec

動くは動くけれども、快適とは言えない速度。

CPU + RTX5060ti

36レイヤのうち、30レイヤをCPUで、6レイヤをRTX5060tiで処理。RTX5060tiの場合、--n-cpu-moe 30が限界で、これ以上、--n-cpu-moeの値を小さくするとOOMが発生する。

起動コマンド
docker run \
--rm \
--gpus all \
-v ./models:/models \
-p 22015:8000 \
-e CUDA_VISIBLE_DEVICES=0 \
ghcr.io/ggml-org/llama.cpp:server-cuda-b6152 \
--model /models/gpt-oss-120b-GGUF/gpt-oss-120b-mxfp4-00001-of-00003.gguf \
--port 8000 \
--host 0.0.0.0 \
--ctx-size 32768 \
--jinja \
--reasoning-format none \
--n-gpu-layers 1000 \
--n-cpu-moe 30 \
--flash-attn \
--temp 1.0 \
--top-p 1.0 

結果: 24.10 tokens/sec

早くはないけど、十分実用的な速度。

CPU + RTX3060

36レイヤのうち、31レイヤをCPUで、5レイヤをRTX3060で処理。RTX3060の場合、--n-cpu-moe 31が限界で、これ以上、--n-cpu-moeの値を小さくするとOOMが発生する。

起動コマンド
docker run \
--rm \
--gpus all \
-v ./models:/models \
-p 22015:8000 \
-e CUDA_VISIBLE_DEVICES=1 \
ghcr.io/ggml-org/llama.cpp:server-cuda-b6152 \
--model /models/gpt-oss-120b-GGUF/gpt-oss-120b-mxfp4-00001-of-00003.gguf \
--port 8000 \
--host 0.0.0.0 \
--ctx-size 32768 \
--jinja \
--reasoning-format none \
--n-gpu-layers 1000 \
--n-cpu-moe 31 \
--flash-attn \
--temp 1.0 \
--top-p 1.0 

結果: 23.09 tokens/sec

あんまりRTX5060tiと変わらないのは意外。

CPU + RTX5060ti + RTX3060

36レイヤのうち、24レイヤをCPUで、RTX5060ti, RTX3060でそれぞれ6レイヤを処理。

なお、マルチGPUの場合は、--tensor-splitも合わせて使用する必要があるらしい。

正直、上記の書き込みを見てもどうやって指定すればよいかチンプンカンプンであったが、試行錯誤の結果、後述のtensor-splitとn-cpu-moeの指定の組み合わせで、GPUのVRAM使用量をギリギリまで使うような設定にできた。

image.png

起動コマンド
docker run \
--rm \
--gpus all \
-v ./models:/models \
-p 22015:8000 \
-e CUDA_VISIBLE_DEVICES=0,1 \
ghcr.io/ggml-org/llama.cpp:server-cuda-b6152 \
--model /models/gpt-oss-120b-GGUF/gpt-oss-120b-mxfp4-00001-of-00003.gguf \
--port 8000 \
--host 0.0.0.0 \
--ctx-size 32768 \
--jinja \
--reasoning-format none \
--n-gpu-layers 1000 \
--tensor-split 24,6,6 \
--n-cpu-moe 24 \
--flash-attn \
--temp 1.0 \
--top-p 1.0 

結果: 25.29 tokens/sec

マルチGPUにしても単一GPUと大して変わらない。なぜだ....

まとめ

今回は、gpt-oss-120bをローカルで実行して、処理速度を検証してみた。1つGPUを使うだけでも、それなりに実用的な速度がでることが確認できた。

測定結果まとめ:

パターン tokens/sec
CPUのみ 12.14
CPU + RTX5060ti 24.1
CPU + RTX3060 23.09
CPU + RTX5060ti + RTX3060 25.29
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?