ローカルLLM「Ornith-1.0」を試す〜速度と賢さを実測

コード生成に特化したローカルLLM(LLM: 大規模言語モデル。文章やコードを生成するAI)が、家庭の機材でどこまで使えるのかを確かめてみました。試したのは Ornith-1.0 という比較的新しいモデル群で、自己改善型の強化学習で「解き方そのもの」を学ぶという触れ込みです。Gemma 4 と Qwen 3.5 を土台に、9B から 397B まで幅があります。本記事では、家庭の機材で現実的に載る 35B(MoE)と 9B(dense)の2本を、デスクトップの RTX 3090 とミニPC(Ryzen AI Max+ 395・統合メモリ128GB。CPUとGPUが同じメモリを共有する方式で、GPU用メモリとしても大きく使えます)の2台で動かし、速度と賢さを実測しました。

結論から書くと、35B(MoE)は24GBのグラフィックボードに収まったまま95トークン/秒前後で動き、推論もコードも安定して解けました。9B は軽くて速い反面、まれに生成が暴走することがあり、堅実さでは 35B が一歩上でした。以下、速度と賢さの順に実測値を見ていきます。

測定した環境

2台の測定機
デスクトップ
RTX 3090(VRAM 24GB)/ Ubuntu / ollama

ミニPC
Ryzen AI Max+ 395(統合メモリ 128GB)/ ollama

量子化(モデルを圧縮してファイルと必要メモリを小さくする手法)は Q4_K_M、生成256トークン×3回の中央値で比較しました。ミニPC側はメモリマップを無効にして測定しています。

速度は帯域とアーキで素直に分かれた

まず生成速度です。結果は次のとおりでした。数字は1秒あたりの生成トークン数を表します。

モデル RTX 3090 ミニPC
35B(MoE / 21GB) 95.2 t/s 55.9 t/s
9B(dense / 5.6GB) 97.2 t/s 32.1 t/s

RTX 3090 では 35B も 9B もほぼ同じ速さで動きました。35B のほうが総パラメータは大きいのに失速しないのは、MoE(混合エキスパート)という仕組みで一度に使う部分が小さいからです。一方、ミニPC側では同じ 35B が 55.9 t/s なのに対し、サイズの小さい 9B のほうが 32.1 t/s と遅くなりました。小さいモデルが遅いのは直感に反しますが、dense なモデルは毎回すべての層を読み出すため、メモリ帯域(1秒あたりにメモリと何ギガバイトやり取りできるかの速さ)が控えめな統合メモリ機では不利に働きます。MoE と dense で速さの出方が逆転する、分かりやすい例だったと言えます。

賢さは推論で差が出て、コードは両方とも満点

速度の次に、答えが一つに定まる問題で正答数を数えました。論理トラップや多段計算を含む推論8問と、出力予測やバグ特定などのコード理解10問です。いずれも、回答がそのつどばらつかない設定(同じ入力なら同じ答えが返る状態)にして測りました。

35B(MoE)
推論 8 / 8
コード 10 / 10

9B(dense)
推論 7 / 8
コード 10 / 10

コード理解は 9B でも 35B でも全問正解でした。リスト内包表記の出力予測、可変デフォルト引数の落とし穴、添字の境界バグなど、つまずきやすい題材でも崩れません。コード特化をうたうだけの実力はあるという手応えでした。推論のほうは 9B が1問だけ取りこぼし、35B は満点です。落とした1問は「100台の機械なら何分か」という古典的なひっかけで、サイズの大きいモデルのほうが慎重に解き切る傾向が見えました。賢さの差は、コードよりも一般的な推論のほうに表れるようです。

実際のコーディング課題でも試した

出力予測やバグ特定だけでなく、もう少し実務に近い形でも確かめました。手元のコーディング採点ハーネスで、コード生成・リファクタ・デバッグの7課題を解かせ、生成されたコードを隔離環境(ネットワークを遮断したコンテナ)で実行して採点しています。回答がばらつかない設定にして、1つの課題につき1回だけ解かせました。

モデル / 機材 合格 平均品質
35B(MoE)/ RTX 3090 7 / 7 95.7
35B(MoE)/ ミニPC 7 / 7 95.9
9B(dense)/ RTX 3090 6 / 7 95.4
9B(dense)/ ミニPC 7 / 7 96.2

35B のほうは2台とも7課題すべてに通り、品質も96前後でそろいました。日常のコード書きで頼るには十分な水準です。9B はミニPC側では全問通りましたが、RTX 3090 側で1課題だけ生成が長いループに陥り、時間切れで落としました。答えが安定するはずの設定でもまれにこうした暴走が起きるようで、安定して任せるなら 35B のほうが堅実でした。軽さを取るなら 9B、堅実さを取るなら 35B、という住み分けが見えてきます。

1台に載せ切るか、何本も常駐させるか

今回いちばん実感したのは、2台の性格の違いでした。RTX 3090 は 35B(21GB)をまるごと GPU に載せ切り、95 t/s という速さで返してきます。単発の応答を速く欲しい使い方なら、24GB に収まる MoE モデルとの相性が良いです。

ミニPC側は速度では及びませんが、128GB の統合メモリを活かして Ornith の 35B と 9B、さらに別のコード用30Bモデルの3本を同時に GPU に常駐させたまま測定できました。合計で47GBを超える割り当てで、これは24GBのカードには収まらない構成です。速さの3090、何本も抱えておけるミニPC、という住み分けがそのまま数字に表れました。手元で複数のモデルを使い分けたい場合は、容量の余裕がそのまま使い勝手につながります。

まとめ

Ornith-1.0 をローカルで動かした範囲では、35B(MoE)が 24GB のグラフィックボードに収まりつつ高速で、推論もコードも安定して解けました。9B でもコードは満点で、軽さを優先するなら十分な選択肢です。量子化 Q4 でも速度と正答数は崩れず、家庭の機材でコード特化モデルを常用する現実味を確かめられました。次回は実際のコーディング作業に近いタスクで、応答までの待ち時間も含めた使い心地を見ていく予定です。

測定条件: ollama / Q4_K_M / 生成256トークン×3回の中央値。推論・コードは回答がばらつかない設定で測定。数値は筆者環境での実測値で、モデルや量子化、設定により変動します。