Ollama 0.30系は本当に遅いのか? RTX 5080/5060 Tiで速度低下とCPUオフロードの罠を検証

Ollamaのバージョン別推論速度を比較する記事のアイキャッチ(RTX 5080/5060 Ti、ローカルLLM) ローカルAI環境

「Ollamaをアップデートしたら推論が遅くなった気がする」——こうした声はGitHubのIssueでも見かける。ユーザー報告にはばらつきがあり、「大幅に遅くなった」というものから「変わらない」というものまで幅がある。これは、バージョンそのものの速度差と、アップデートに伴って変わる設定(特にコンテキスト長の自動設定)やGPU構成の影響が、切り分けられないまま混ざっているからだ。

そこで、手元のRTX 5080 16GBとRTX 5060 Ti 16GB(2枚構成)で、Ollamaの 0.23.3・0.30.6・0.30.7 を同じプロンプト・同じコンテキスト長・同じGPUに固定して実測した。先に結論を言うと、本環境のRTX 5080ではqwen3:8bが0.30.6で落ちて0.30.7で0.23.3並みに戻った一方、ほかのモデルは0.30.7でも0.23.3比で数%低いままだった。RTX 5060 Tiでは3バージョンを通じてほぼ同等。要するに「0.30系がずっと遅い」わけではない。本記事が測ったのは生成tokens/secと起動可否に限られるが、その範囲で見る限り、速度だけを理由に最新版を避ける根拠は薄かった。

なお、ここで示す数値はいずれも筆者環境(後述)での参考値であり、ドライバや筐体、電力設定の異なる環境で同じになるとは限らない。

先に結論:3バージョンの損得早見表

観点 0.23.3(比較旧版) 0.30.6 0.30.7(2026年6月10日確認時点の最新)
推論速度(本環境のRTX 5080) 基準 一部モデルで数%〜1割低下 qwen3:8bは0.23.3並みに回復・他は数%低いまま
推論速度(本環境のRTX 5060 Ti 16GB / Oculink) 基準 ほぼ同等 ほぼ同等
gemma4:12b の起動 起動不可 起動可 起動可
コンテキスト長の既定 本環境では4096 VRAM残量に応じ自動拡大 VRAM残量に応じ自動拡大

判断の目安はシンプルだ。

  • gemma4のような新しいモデルを使いたい → 0.30.5以降(対応+クラッシュ修正済み)を選ぶ
  • 速度を気にして旧版に留まっていた → 本環境では0.30.6で見えた低下が0.30系全体で続くわけではなかったので、最新版を一律に避ける理由は薄い

「最新にすると遅くなる」と一括りにはできない。どのバージョンの、どのモデルかで答えが変わる。以下、実測の中身を見ていく。

Ollama 0.30系で何が変わったのか(リリース時系列)

0.30系は内部の実行エンジン(llama.cppバックエンド)まわりが更新されたバージョン群だ。gemma4まわりの変更が複数のバージョンに分かれているので、時系列を整理しておく(公式リリースノートより)。

  • v0.30.3:Gemma 4 12B(マルチモーダル)モデルに対応
  • v0.30.4:gemma4:12bが浮動小数点例外でクラッシュする既知の不具合
  • v0.30.5:そのクラッシュを修正(x86 / CUDA / Linux / Windows)
  • v0.30.6:Gemma 4 QAT weights(gemma4:12b-it-qatなど)を追加
  • v0.30.7:Hermes Desktopのネイティブ対応など(2026年6月10日の確認時点での最新)

つまり、gemma4:12bはv0.30.3で対応が追加され、v0.30.5で既知の浮動小数点例外クラッシュが修正された。少なくともこの既知不具合を避けるには 0.30.5以降 が前提で、本記事のWindows/NVIDIA環境では0.30.6・0.30.7で起動を確認した。速度比較もこの0.30.6と0.30.7を対象にしている。

同じGPUで3バージョンはどれだけ違うのか

実測値を示す。プロンプトと生成トークン数を固定し、コンテキスト長は全バージョンとも4096に揃えた。数値は1秒あたりの生成トークン数(tokens/sec、大きいほど速い)で、各モデルをGPUに載せた状態で、測定条件を揃えて取り直した中央値だ(測定条件は「検証環境」の節にまとめた)。あくまで筆者環境での参考比較であり、厳密な再現ベンチとして扱うものではない。

本環境のRTX 5080

モデル 0.23.3 0.30.6 0.30.7
qwen3:8b 128.2 116.9 127.3
gemma3:12b 86.1 80.6 81.5
llama3.1:8b 144.5 137.2 136.5
gemma4:latest(e4b) 146.5 140.1 137.1
gemma4:12b 起動不可 66.4 66.6

本環境のRTX 5060 Ti 16GB(Oculink接続)

モデル 0.23.3 0.30.6 0.30.7
qwen3:8b 74.5 75.2 75.3
gemma3:12b 50.6 49.2 49.1
llama3.1:8b 84.7 83.4 81.2
gemma4:latest(e4b) 93.4 87.8 92.8
gemma4:12b 起動不可 42.5 42.6

傾向はこうだ。

  • 本環境のRTX 5080では、0.30.6で一部モデルが数%〜1割ほど低下していた。最も安定して測れたqwen3:8bで-9%(128.2→116.9)。これは0.30.7では127.3まで戻り、0.23.3とほぼ同じになっている。
  • ただし回復はモデルによる。gemma3:12b・llama3.1:8b・gemma4:latestは0.30.7でも0.23.3比で数%低いままだった。
  • 本環境のRTX 5060 Tiでは、3バージョンを通じてほぼ同等(誤差〜数%の範囲)。低下も回復もほとんど見えない。

要するに、本環境で見るかぎり「アップデートで遅くなった」は 0.30.6での一時的・部分的な低下として現れ、最新の0.30.7では少なくともqwen3:8bでは解消していた。0.30.6だけを見て0.30系全体を判断するのは避けたい。

測定で踏んだ落とし穴

この比較は最初から綺麗に取れたわけではない。最初の測定では「0.30.6が40%以上遅い」という、まったく違う結果が出ていた。原因を一つずつ潰すと、いずれもバージョンとは無関係の測定環境の問題だった。

  • GPUの取り違え:環境変数CUDA_VISIBLE_DEVICESの番号が物理カードと一致せず、しかも起動のたびに割り当てが入れ替わった。nvidia-smiでモデルがどちらのカードに載ったかを毎回確認しないと、5080と5060 Tiを取り違えたまま記録してしまう。番号ではなくnvidia-smi -Lで得られるGPUのUUID(CUDA_VISIBLE_DEVICES=GPU-xxxx...)で指定すると、この入れ替わりを避けやすい。
  • コンテキスト長の自動拡大:後述するが、0.30系は空きVRAMに応じてコンテキスト長を自動で大きくする。これを揃えずに測ると、KVキャッシュが膨らんでVRAMに収まらず、CPUへ処理がはみ出して激遅になる。ollama psPROCESSOR列が100% GPUか、CONTEXT列が意図した値かを見ると、この取りこぼしに気づける。
  • モデルの載せっぱなし:複数モデルを連続で測ると前のモデルがVRAMに残り、メモリ不足でやはりCPU処理に落ちる。

これらを排除し、1モデルずつ・GPUを固定・コンテキスト長を揃えて測り直して、ようやく上記の数値に収束した。少なくとも本記事の初回測定では、コンテキスト長の自動拡大・GPUの取り違え・VRAM不足によるCPUオフロードが、速度低下として現れていた。ネット上の報告を読む際も、生成速度とロード時間、GPU配置、num_ctxを切り分けて確認したい。

「遅くなった」前に確認する3つの罠(Ollama速度) Ollamaで遅く感じたら、バージョンより先に3点を確認する。①GPUの取り違え:CUDA番号が物理カードと入れ替わるためnvidia-smiでロード先を確認しUUIDで固定。②コンテキスト長の自動拡大:空きVRAMに応じ4kから32kに拡大しKVキャッシュが膨張、ollama psのCONTEXTとPROCESSORを確認しnum_ctxを明示。③モデルの載せっぱなし:前のモデルがVRAMに残るためkeep_alive0やollama stopで解放。これらを潰すと見かけの40%低下は消え、純粋なバージョン差は数%から1割に収束した。 「遅くなった」前に確認する3つの罠 バージョンを疑う前に、測定環境のこの3点を潰す ① GPUの取り違え 症状 CUDA番号が物理カードと入れ替わり、起動のたびに変わる 確認 nvidia-smi -L / ollama ps で、モデルが載った物理GPUを毎回チェック 対処 番号でなくUUIDで CUDA_VISIBLE_DEVICES を指定して固定する ② コンテキスト長の自動拡大 症状 空きVRAMに応じ4k→32kに拡大、KVキャッシュが膨張しCPUへ落ちて激遅 確認 ollama ps の CONTEXT 列(割当長)と PROCESSOR 列(GPU/CPU)を見る 対処 num_ctx を 4096 などに明示指定(API options / 環境変数 / Modelfile) ③ モデルの載せっぱなし 症状 前のモデルがVRAMに残り、次のモデルがメモリ不足でCPU処理に落ちる 確認 nvidia-smi のメモリ使用量を、測定の前後で見る 対処 1モデルずつ測り、keep_alive:0 / ollama stop でアンロードしてから次へ この3つを潰すと、見かけの「-40%」は消え、純粋なバージョン差は数%〜1割に収束した。
図2:「遅くなった」と感じたら確認する3つの罠

0.30.6で遅くなったのはなぜか——仮説を立てて検証する

0.30.6の結果には引っかかる点があった。速いはずのRTX 5080でだけ速度が落ち、遅いRTX 5060 Tiでは落ちないのはなぜか。

最初に立てた仮説はこうだった。「RTX 5080はVRAMが高速で、RTX 5060 Ti(Oculink接続)はメモリまわりが速くない。だからメモリ速度に関係した要因で、速いカードだけが影響を受けているのではないか」。

ただ、この仮説にはすぐ穴がある。同じRTX 5080なら、VRAMの物理帯域はバージョンを変えても同じだ。物理帯域そのものがバージョン間の差を生むとは考えにくい(ただし実装変更でメモリアクセスの効率が変わる可能性は残る)。

そこで、速度低下が「リクエストごとの固定コスト」なのか「1トークンを生成する速度そのものの低下」なのかを切り分けた。生成トークン数を変えれば判別できる——固定コストなら短い生成ほど差が大きく、長い生成では薄まる。1トークンあたりの低下なら、生成の長さに関係なく一定の差になる。RTX 5080で生成トークン数を64と1024に変えて、0.23.3と0.30.6を比べた結果がこれだ(qwen3:8b)。

生成トークン数 0.23.3 0.30.6
64 135.9 121.6 -10.5%
1024 132.5 118.3 -10.7%

差は生成の長さにほぼ関係なく、一定の約-10.6%だった。固定コストなら短い生成で差が大きくなるはずだが、64でも1024でも同じだけ落ちている。つまり、リクエスト単位のコストではなく、1トークンを生成する速度そのものが落ちていたということになる。なお、レスポンスのログ上はプロンプト処理(プリフィル)よりも生成(デコード)側の低下が目立つ傾向だった。

ここから言えるのは、0.30.6の低下はVRAMの物理帯域ではなく、生成時の計算処理(行列演算の実装)の効率に起因しそうだ、という点だ。当初の「VRAM速度が原因では」という仮説は、速いカードで差が出るという方向は当たっていたが、原因の特定としては外れていた。なお、両GPUはいずれも同世代(Ollamaのサポート上は同じCompute Capability)で、「アーキテクチャの違い」を主因と断定できるだけの根拠は本記事の範囲では得られていない。原因は未特定で、実行エンジン・カーネル・ドライバ・モデル配置などのいずれかが影響した、という仮説にとどまる。

そして注目すべきは、この低下がqwen3:8bでは0.30.7で戻っていたことだ。0.30.6で116.9まで落ちたが、0.30.7では127.3で、0.23.3の128.2にほぼ並ぶ。本記事の測定では戻ったように見えるが、公式リリースノートに速度・カーネル改善の記載はなく、原因は特定できない(実行エンジン・ドライバ・モデル配置などの影響は仮説にとどまる)。いずれにせよ、0.30.6だけを見て「0.30系は遅い」と結論づけると実態を取り違える、という点は複数バージョンを実測して初めて見えてくる。

gemma4:12bはなぜ旧版で動かないのか

表で唯一「起動不可」なのがgemma4:12bだ。0.23.3でロードしようとすると、サーバーログに次のエラーが出て失敗する。

error loading model architecture: unknown model architecture: 'gemma4'

旧版の実行エンジンがgemma4というモデル構造を知らないためで、VRAMは足りているのにロードできず500エラーになる。設定で回避できる類の問題ではなく、エンジンが対応していない以上、旧版では動かしようがない。一方、0.30.6・0.30.7では問題なく起動し、本環境のRTX 5080で66 tokens/sec前後、RTX 5060 Tiで43 tokens/sec前後が出た。

紛らわしいのは、gemma4:latestgemma4:26bは本環境では0.23.3でも起動した点だ。本環境のgemma4:latestは公式タグではgemma4:e4bと同じもの(digest c6eb396dbd59、9.6GB)だった。一方、gemma4:12bはv0.30.3で対応が追加されたモデルで、旧版では動かない。同じ「gemma4」でも、旧版での起動可否はタグ・digest単位で確認するのが確実だ。

gemma4:12bは約12Bで、テキストに加えて画像を入力できるマルチモーダルモデルだ(Ollamaの公式タグでもText/Image入力に対応と示されている)。手元のPCで画像の内容を説明させたり、図表から情報を読み取らせたりできる。ローカルにpullした非cloudタグのモデルを使い、Ollama CloudやWeb search機能を有効にしていなければ、処理はローカルで完結する(機密データを扱うなら:cloudタグを使っていないことを確認し、必要ならOLLAMA_NO_CLOUD=1でクラウド機能を無効化しておくとよい)。こうした新しいモデルが新エンジンを必要としている。

なおlatestというタグは「最新」を指すだけで、中身はモデルが更新されれば変わりうる。後から同じ条件で再現したいなら、gemma4:12bのようにサイズを明示したタグで指定し、ollama showollama listでdigestを控えておくのが安全だ。

なお、16GBのGPUでGemma 4 12Bを動かしたときの速度やVRAM使用量は、別記事で詳しく実測している

gemma4:12bを使いたいなら0.30.5以降が前提になる。ここが、最新版を使う明確な動機だ。

コンテキスト長が自動で大きくなる罠

0.30系で挙動が変わった点として、検証中にはっきり確認できたのがコンテキスト長の既定値だ。Ollamaは利用できるVRAMの合計に応じてコンテキスト長を自動で決める。現行の公式Context lengthページによれば、おおよそ「24GiB未満:4k」「24〜48GiB:32k」「48GiB以上:256k」という区分になっている(公式FAQには「既定4096」の記述も残っているので、実際に割り当てられた値はollama psCONTEXT列で確認するのが確実だ)。

本環境では、qwen3:8bを明示指定なしでロードしたとき、0.23.3ではコンテキスト長が4096だったのに対し、0.30系では利用可能VRAMを32GiB級として扱ったようで、明示指定なしでは32768まで広がった。長い文脈を扱えるのは便利だが、その分KVキャッシュがVRAMを多く消費し、16GBのGPU1枚に収めるつもりだったモデルがVRAMに収まらなくなり、一部がCPUにオフロードされて急に遅くなる——というのが、先に触れた「見かけの速度低下」の一因だった。

対策は、コンテキスト長を用途に合わせて明示指定することだ。長文を扱わないならnum_ctxを4096などに固定すればKVキャッシュの肥大化を防げる。指定方法はいくつかある。

  • ネイティブAPI:リクエストのoptions"num_ctx": 4096を渡す(本記事の測定もこの方法でバージョン間を揃えた)。
  • 実行中に一時指定ollama runで開いたセッション内で/set parameter num_ctx 4096。そのセッション限り。
  • サーバー既定:環境変数OLLAMA_CONTEXT_LENGTH=4096(古い資料ではOLLAMA_NUM_CTXの場合もある)。
  • ModelfilePARAMETER num_ctx 4096を書いてモデルを作り直すと焼き込まれる。OpenAI互換APIではリクエストでcontextを直接変えられないため、この方法を使う。

アップデート後に「なぜか重い」と感じたら、バージョンより先にこのコンテキスト長の自動拡大とVRAM配分を疑うのが近道だ。コンテキスト長をどこまで伸ばせるか、KVキャッシュの量子化でどれだけVRAMを節約できるかは、別記事で実測している

結局、どのバージョンを使うべきか

本環境での検証から言える実用的な判断はこうだ。

0.30系(できれば0.30.5以降)へ更新したほうがよい場合

  • gemma4:12bのような、新しいモデル構造を要求するモデルを使いたい
  • 長い文脈を多用し、コンテキスト長の自動拡大が都合よく働く

旧版のままでも困らない場合

  • 使っているモデルが旧版でも問題なく動く
  • 動作実績のあるバージョンを変えたくない無人運用など

本記事で測った生成tokens/secだけを見る限り、少なくとも本環境では「0.30.6で見えた低下が0.30系全体で続く」とは言いにくかった。ただし、回答の品質・最初のトークンまでの時間(TTFT)・ロード時間・画像理解・長時間の安定性は評価していない。更新は、使うモデルと条件で再確認したうえで判断したい。gemma4対応のような明確なメリットがあるなら、最新版へ更新する価値は分かりやすい。

なお、特定のバージョンに固定したい・戻したい場合、Windows版は自動更新でダウンロード・再起動適用される挙動があるため、固定運用したいなら更新通知や自動更新の設定も確認しておきたい。バージョンを指定するなら、Windowsのwingetで目的のバージョンが提供されているか確認してからインストールする(表示されない場合は実行しない)。

winget show --id Ollama.Ollama --versions --source winget
winget install --exact --id Ollama.Ollama --version 0.23.3 --source winget

筆者環境では、アップデートとダウングレードを繰り返した際に、実行エンジンのライブラリが新旧で混在してサーバーが起動直後にクラッシュする(モデルのロード要求がエンジンに届かず500エラーになる)ことがあった。これは公式に一般化できる現象ではないが、入れ替え後に不調が出たときは、いったん完全にアンインストールしてから入れ直すと改善した。

winget uninstall --id Ollama.Ollama
winget install --exact --id Ollama.Ollama --version 0.23.3 --source winget

ただし、これを行う前にモデルの保存先(Windows既定はC:\Users\%username%\.ollama\modelsOLLAMA_MODELSを設定している場合はその場所)を確認し、必要に応じて退避しておくこと。アンインストールでモデルが必ず残ると保証されているわけではない。winget未収載の最新版(執筆時点でGitHubのみのv0.30.7など)は、公式のダウンロードページまたはGitHub ReleasesのOllamaSetup.exeから入れることになる。

どのOllamaバージョンを使うべきか — 判断フロー gemma4:12bなど新しいモデルを使うなら0.30.5以降へ更新する(対応はv0.30.3、既知クラッシュ修正はv0.30.5、最新0.30.7も可)。使わず生成速度を最優先するなら旧版維持も合理的、そうでなければ最新0.30.7でよい。迷ったらバージョンより先にnum_ctxとGPUのVRAM配分を確認する。 どのOllamaバージョンを使うべき? — 用途から逆算する判断フロー(本環境の実測にもとづく) Ollamaを更新する? gemma4:12bなど 新しいモデルを使う? はい → 0.30.5以降へ更新 対応はv0.30.3、既知クラッシュの 修正はv0.30.5。最新0.30.7でも可。 いいえ 生成速度を最優先? はい 旧版維持も可 本環境では0.30.7で 回復したが、動作実績を 変えたくないなら。 いいえ 最新0.30.7 でOK。新機能も 使える。 迷ったら:バージョンより先に num_ctx とGPUのVRAM配分を確認する。
図3:用途から逆算するバージョン選びの判断フロー

検証環境と測定条件

本記事の測定は筆者の自作環境(RTX 5080とRTX 5060 Ti〔Oculink接続〕の2枚構成、Windows)で実施した。詳しいハードウェア構成は検証環境のページにまとめてある。これは厳密な再現用ベンチではなく筆者環境での参考比較だが、条件を記しておく。

  • ネイティブAPI(/api/generatestream:false)にoptionsnum_ctx:4096num_predict:80を指定。temperature等のサンプリングは指定せず既定のまま、seedは固定していない(このため各回にばらつきが出る)。
  • プロンプトは全モデル共通の短文(GPU上のローカルLLMを題材にした生成依頼)。生成長依存の検証ではより長いプロンプトでqwen3:8bを使用。
  • 各モデルを1つずつロードし、測定後はkeep_alive:0またはollama stopでアンロードしてから次へ(VRAM残留を避けるため)。
  • tokens/secはレスポンスのeval_count÷eval_durationから算出。各モデル3回測定し中央値を採用。
  • GPUはCUDA_VISIBLE_DEVICESで1枚に固定し、毎回nvidia-smiでモデルが載った物理カードと、ollama psPROCESSOR100% GPUであることを確認した(番号が物理カードと入れ替わるため)。
  • バージョンは0.23.3 / 0.30.6 / 0.30.7。gemma4:latestは測定時digest c6eb396dbd59

ここで測ったのは生成のtokens/secと起動可否に限る。各回のraw値(eval_counteval_duration)や測定日時・ドライバ版まではここに載せていないため、上記はあくまで参考比較として読んでほしい。これらの数値は筆者環境での参考値であり、ドライバ・OS・筐体・電力設定・PCIeリンク幅の異なる環境では結果が変わりうる。

なお、Ollama公式はContext lengthページで、コンテキスト長を大きくすると必要メモリが増えること、ollama psPROCESSOR列でCPUオフロードの有無を確認することを案内している。本記事でもこの点を確認しながら測定した。

まとめ

  • RTX 5080/5060 Tiで0.23.3・0.30.6・0.30.7を同条件で実測すると、本環境では0.30.6でRTX 5080のqwen3:8bが-9%ほど低下し、0.30.7で0.23.3並みに戻った(公式に速度改善の明記はなく筆者環境での実測。他モデルは0.30.7でも数%低いまま)。RTX 5060 Tiでは3バージョンを通じてほぼ同等。
  • 「大幅に遅くなった」という体感は、コンテキスト長の自動拡大・GPUの取り違え・VRAM不足によるCPUオフロードといった測定環境の要因や、生成速度とロード時間の混同が混じっていることがある。少なくとも本記事の初回測定はそうだった。
  • gemma4:12bは旧版では起動できない(対応はv0.30.3、既知クラッシュ修正はv0.30.5。本環境のWindows/NVIDIAでは0.30.6・0.30.7で起動を確認)。画像入力対応の新しいモデルを使うなら、最新版へ更新する価値は分かりやすい。
  • 速度を一律の理由に最新版を避ける必要は薄い。使いたいモデルが動くかを軸に、品質や安定性は運用環境で再確認して選ぶのが実態に合っている。体感で重いと感じたら、バージョンより先にnum_ctxとGPUのVRAM配分を確認するのが近道だ。

参考(公式ドキュメント)

関連記事

タイトルとURLをコピーしました