<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Llama.cpp on 現役エンジニアのAI事情</title>
    <link>https://www.engineer-labnote.top/tags/llama.cpp/</link>
    <description>Recent content in Llama.cpp on 現役エンジニアのAI事情</description>
    <generator>Hugo</generator>
    <language>ja-jp</language>
    <lastBuildDate>Sat, 12 Sep 2026 20:27:24 +0900</lastBuildDate>
    <atom:link href="https://www.engineer-labnote.top/tags/llama.cpp/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Ollama vs llama.cpp直接実行、同じGGUFなのに速度が2.7倍違った話</title>
      <link>https://www.engineer-labnote.top/posts/202609122027-ollama-vs-llama-cpp-chokusetsu-jikkou-onaji-gguf-nanoni-soku/</link>
      <pubDate>Sat, 12 Sep 2026 20:27:24 +0900</pubDate>
      <guid>https://www.engineer-labnote.top/posts/202609122027-ollama-vs-llama-cpp-chokusetsu-jikkou-onaji-gguf-nanoni-soku/</guid>
      <description>&lt;img src=&#34;https://i.ibb.co/S4Y87fbM/c1deb3f95461.png&#34; alt=&#34;Ollama vs llama.cpp直接実行、同じGGUFなのに速度が2.7倍違った話&#34; style=&#34;width:100%;max-width:720px;height:auto;display:block;margin:0 auto;border-radius:8px;&#34; /&gt;
&lt;h2 id=&#34;きっかけollamaは中身llamacppなのに直接使うとどれくらい違うのか&#34;&gt;きっかけ：Ollamaは中身llama.cppなのに、直接使うとどれくらい違うのか&lt;/h2&gt;
&lt;p&gt;Ollamaは内部的にllama.cpp(ggml)を使っている、というのはよく知られた話。実際、Ollamaのインストールフォルダの中には&lt;code&gt;llama-server.exe&lt;/code&gt;がそのまま同梱されている。&lt;/p&gt;
&lt;p&gt;じゃあ「Ollama経由」と「llama.cppを直接叩く」で、同じGGUFファイルを使った場合にどれくらい速度が変わるのか、実際に検証してみた。今回はこれまでの比較で最速だったGemma4-12B-Hereticを使い、Ollamaのモデルストレージにある実体ファイル(.gguf)をそのままllama.cppに読み込ませて比較している。&lt;/p&gt;
&lt;h2 id=&#34;最初の落とし穴同梱バイナリはcpu専用だった&#34;&gt;最初の落とし穴：同梱バイナリはCPU専用だった&lt;/h2&gt;
&lt;p&gt;最初、Ollamaに同梱されている&lt;code&gt;llama-server.exe&lt;/code&gt;をそのまま使おうとしたら、いきなり躓いた。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;warning: no usable GPU found, --gpu-layers option will be ignored
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Ollamaに同梱されているこのバイナリ、GPUサポート無しでビルドされたものだった。Ollama自体はきちんとVulkanでGPU推論しているのに、同梱の&lt;code&gt;llama-server.exe&lt;/code&gt;単体では動かないという、地味に紛らわしい罠。この状態で生成速度を測ったら4.1 tok/sしか出ず、当然ながらCPU実行だとこうなる。&lt;/p&gt;
&lt;p&gt;正しく比較するため、llama.cpp公式のVulkan対応Windows版バイナリ(GitHub Releases)を別途取得して検証し直した。&lt;/p&gt;
&lt;h2 id=&#34;本題gpu対応版でもollamaには届かなかった&#34;&gt;本題：GPU対応版でも、Ollamaには届かなかった&lt;/h2&gt;
&lt;img src=&#34;https://i.ibb.co/WNr5nyGH/cca6ed4ae0d6.png&#34; alt=&#34;Ollama vs llama.cpp直接実行の速度比較グラフ&#34; style=&#34;width:100%;max-width:720px;height:auto;display:block;margin:0 auto;border-radius:8px;&#34; /&gt;
&lt;p&gt;Vulkan対応版のllama.cppで、同じGGUFファイル・同じGPU2枚環境で計測した結果:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Ollama(既定設定)&lt;/strong&gt;: 33.1 tok/s&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;llama.cpp直接(既定設定)&lt;/strong&gt;: 12.1 tok/s&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;llama.cpp直接(&lt;code&gt;--split-mode none --main-gpu 0&lt;/code&gt;、GPU1枚に固定してパイプライン分割を無効化)&lt;/strong&gt;: 18.4 tok/s&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;既定設定のままだと、Ollamaの方が&lt;strong&gt;約2.7倍速い&lt;/strong&gt;という結果になった。llama.cppの既定の&lt;code&gt;--split-mode&lt;/code&gt;(layer、GPU間でレイヤーをパイプライン分割する方式)を&lt;code&gt;none&lt;/code&gt;(単一GPUのみ使用)に変えると18.4 tok/sまで改善したが、それでもOllamaには届かなかった。&lt;/p&gt;
&lt;p&gt;前回の記事で「GPU1枚に余裕で収まるモデルは複数GPUの恩恵がない」という結果を出したばかりだが、llama.cpp側の既定設定(layer分割)では、逆に複数GPUへの分割自体がオーバーヘッドになって遅くなっていた、という点は興味深い。Ollamaはおそらく、モデルサイズとGPU容量を見て「1枚に収まるなら1枚だけ使う」という判断を内部で自動的にやってくれているのだと思われる。&lt;/p&gt;
&lt;h2 id=&#34;結論&#34;&gt;結論&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Ollama同梱の&lt;code&gt;llama-server.exe&lt;/code&gt;はCPU専用ビルド&lt;/strong&gt; — そのまま使うと不当に遅い比較になるので要注意。GPU版で検証し直す必要があった&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;既定設定同士の比較では、Ollamaがllama.cpp直接実行より約2.7倍速い&lt;/strong&gt; — 同じエンジン・同じGGUFでもラッパー側のチューニングでここまで差が出る&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;llama.cppの既定の&lt;code&gt;--split-mode&lt;/code&gt;(layer)は、1枚に収まるモデルには不利に働く&lt;/strong&gt; — &lt;code&gt;--split-mode none&lt;/code&gt;で単一GPU固定にすると速度は改善するが、それでもOllamaには届かなかった&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;「中身は同じllama.cppだから同じ速度のはず」は誤り&lt;/strong&gt; — Ollamaは単なるラッパーではなく、実行時のGPU割り当てやバッチ設定などで実質的なチューニングを行っている&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;「速度で困ったらOllamaをやめて生のllama.cppを使えばいい」という発想は、少なくとも今回の環境・条件では成り立たなかった。むしろOllama側のデフォルトの賢さを再確認する結果になった。次はllama.cpp側のバッチサイズやスレッド数など、さらに細かいパラメータチューニングでOllamaに追いつけるか試してみたい。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
