~/tools / ローカルLLMをサーバーで動かす / Ollama Log Reader

Ollama Log Reader — Ollama のログからメモリ・GPU・速度を読む

Ollama のサーバーログ(server.log、journalctl、docker logs のもの)を貼り付けると、重要な点を抜き出します。モデルを読み込むたびにどれだけのメモリをどこで使ったか(重みと KV キャッシュ、計算用バッファを CPU と GPU ごとに)、GPU に載ったレイヤー数、コンテキスト長、リクエストとそのステータス、プロンプトと生成の速度、そしてすべての警告を説明つきで表示します。プロンプトがコンテキストに合わせて切り詰められたとき、モデルがメモリに収まらなかったとき、Ollama がモデルを読み込み直したときも分かります。データはブラウザの外に出ません。

ログの場所

Ollama のトラブルシューティングのページによります。Windows では、そのフォルダの中で最も新しいログが server.log です。

# macOS
cat ~/.ollama/logs/server.log

# Linux (systemd)
journalctl -u ollama --no-pager

# Docker
docker logs <container-name>

# Windows
explorer %LOCALAPPDATA%\Ollama

77 行のうち 76 行を読み取りました。

  • 23 行目コンテキストは 4096 トークンで、モデルが対応する 32768 より短くなっています。それより長い入力には、より大きな num_ctx または OLLAMA_CONTEXT_LENGTH と、KV キャッシュ用のより多くのメモリが必要です。
  • 43 行目コンテキストは 256 トークンで、モデルが対応する 32768 より短くなっています。それより長い入力には、より大きな num_ctx または OLLAMA_CONTEXT_LENGTH と、KV キャッシュ用のより多くのメモリが必要です。
  • 49 行目プロンプトは 633 トークンあり、コンテキストに収まりませんでした。Ollama は先頭の 4 トークンとプロンプトの末尾を残して残りを捨て、130 トークンにしました。num_ctx を上げるか、プロンプトを短くするか、truncate を false にして送ると、代わりにエラーが返ります。
  • 53 行目633 トークンのリクエストは、256 トークンのコンテキストに収まらず、拒否されました(truncate が false のときに起きます)。num_ctx を上げるか、入力を短くしてください。
  • 55 行目Ollama は、別の設定(たとえば別の num_ctx)でモデルを読み込むために、llama-server を停止してすぐに起動し直しました。クラッシュではありません。
  • 58 行目num_ctx 65536 はモデルの学習時のコンテキストより長いため、Ollama は 32768 を使いました。
  • 失敗したリクエスト: 400 POST /api/chat, 404 POST /api/chat

サーバー

バージョン
0.40.11
アドレス
[::]:11434
デバイス
cpu cpu (1.9 GiB / 1.9 GiB)
既定のコンテキスト長
4096

設定(環境変数)

OLLAMA_HOST
http://0.0.0.0:11434
OLLAMA_CONTEXT_LENGTH
0 (0 = 既定値)
OLLAMA_NUM_PARALLEL
1
OLLAMA_MAX_LOADED_MODELS
0 (0 = 既定値)
OLLAMA_KEEP_ALIVE
5m0s
OLLAMA_FLASH_ATTENTION
false

モデルの読み込み

2026-11-07T08:32:08.625Z の読み込み 1 14 行目

モデル
Qwen2.5 0.5B Instruct · Q4_K - Medium · 373.71 MiB (6.35 BPW) · sha256-c5396e06af29
コンテキスト長
4096 (学習時は 32768)
並列リクエスト数
1
重み
512 MiB
KV キャッシュ
48.0 MiB (f16)
計算用バッファ
41.3 MiB
合計
601 MiB
デバイスごと
CPU 393 MiB, CPU_REPACK 208 MiB
システムメモリ
1946 MiB のうち空き 1638 MiB、スワップの空き 777 MiB
起動時間
1.27 秒

2026-11-07T08:32:10.384Z の読み込み 2 34 行目

モデル
Qwen2.5 0.5B Instruct · Q4_K - Medium · 373.71 MiB (6.35 BPW) · sha256-c5396e06af29
コンテキスト長
256 (学習時は 32768)
並列リクエスト数
1
重み
512 MiB
KV キャッシュ
3.0 MiB (f16)
計算用バッファ
18.8 MiB
合計
533 MiB
デバイスごと
CPU 325 MiB, CPU_REPACK 208 MiB
システムメモリ
1946 MiB のうち空き 1638 MiB、スワップの空き 763 MiB
起動時間
1.02 秒

2026-11-07T08:32:12.223Z の読み込み 3 59 行目

モデル
Qwen2.5 0.5B Instruct · Q4_K - Medium · 373.71 MiB (6.35 BPW) · sha256-c5396e06af29
コンテキスト長
32768 (学習時は 32768)
並列リクエスト数
1
重み
512 MiB
KV キャッシュ
384 MiB (f16)
計算用バッファ
139 MiB
合計
1034 MiB
デバイスごと
CPU 826 MiB, CPU_REPACK 208 MiB
システムメモリ
1946 MiB のうち空き 1638 MiB、スワップの空き 764 MiB
起動時間
1.02 秒

llama-server が報告した速度

処理したプロンプトトークンプロンプトの速度生成したトークン生成の速度
35217.5 トークン/秒759.9 トークン/秒
130227.3 トークン/秒1194.8 トークン/秒
30202.7 トークン/秒562.7 トークン/秒

リクエスト

時刻ステータス所要時間リクエスト
2026/11/07 - 08:31:422000.007 秒GET /api/version
2026/11/07 - 08:32:0020017.49 秒POST /api/pull
2026/11/07 - 08:32:002000.040 秒GET /api/tags
2026/11/07 - 08:32:102001.62 秒POST /api/chat
2026/11/07 - 08:32:122001.89 秒POST /api/chat
2026/11/07 - 08:32:124000.005 秒POST /api/chat
2026/11/07 - 08:32:132001.31 秒POST /api/chat
2026/11/07 - 08:32:134040.002 秒POST /api/chat

プロンプトが収まらないとき、Ollama は num_ctx − max((num_ctx − num_keep) ÷ 2, 1) トークンまで切り詰めます。回答の余地が残るように、コンテキストのおよそ半分です。速度の表のプロンプトトークンは、キャッシュになかったトークンだけを数えています。

llama-server は生成速度を計算するとき、最初に生成されたトークンを数えません。そのため、その値は API レスポンスの eval_count を eval_duration で割った値より少し低くなります。

ログの形式はリリースごとに変わります。このツールは Ollama v0.40.15 とそれが使う llama.cpp のビルドに従い、知らない行は読み飛ばします。

メッセージは Ollama のソースコード(v0.40.15)と llama.cpp に基づき、2026-11-07 に macOS と Linux での Ollama 0.40.11 の実際のログで確認しました。 Ollama: Troubleshooting

すべてブラウザの中で処理されます。このツールはどこにも接続しません。ログにはファイルパス、IP アドレス、モデル名が含まれることがあります。

Ollama が遅いとき、長いプロンプトの冒頭が無視されるとき、リクエストが 500 エラーで失敗するときは、たいていサーバーログに理由があります。ログには、Ollama 自身の行(time=… level=… msg=…)、HTTP リクエストごとの1行([GIN] …)、そして Ollama が各 GGUF モデルを読み込むために実行する llama.cpp のプログラム llama-server の出力が混ざっています。このツールはその3種類をすべて読みます。モデルを読み込むたびに、コンテキスト長(-c)、並列リクエスト数(-np)、モデルのファイル形式とサイズ、学習時のコンテキスト長、GPU にオフロードされたレイヤー数、重みと KV キャッシュと計算用バッファのメモリをデバイスごとに表示します。また、リクエストをステータスと所要時間つきで一覧にし、llama-server が各リクエストの後に出力するプロンプトと生成の速度も示します。そのうえで、Ollama のソースコード(v0.40.15)のメッセージに基づいて、何が起きたかを説明します。プロンプトがコンテキストに収まらないとき、Ollama は先頭の num_keep トークンとプロンプトの末尾を残して間を捨て、プロンプトがコンテキストのおよそ半分になるまで切り詰めます。私たちのテストでは、num_ctx 256 に対して 633 トークンのプロンプトが 130 トークンに切り詰められました。truncate を false にすると、同じリクエストは 400 エラーで拒否されました。モデルの学習時の長さを超える num_ctx は、その長さまで下げられます。モデルがメモリに収まらないと、読み込みに失敗します。私たちのテストでは、メモリ 1.9 GiB で GPU のない Linux で、qwen2.5:7b の重みに 4,460 MiB が必要となり、llama-server は signal: killed で止められ、リクエストは 500 を返しました。llama-server が終了したという行のすぐ後に新しい起動が続く場合は、クラッシュではなく、Ollama が別の設定でモデルを読み込み直していることを意味します。ログの形式はリリースごとに変わります。このツールは知っている行を読み、それ以外は読み飛ばします。macOS (Apple M1)と、GPU のない Docker 上の Linux での Ollama 0.40.11 の実際のログで確認しました。

このツールの計算部分は、オープンソース(MIT ライセンス)で公開しています。 github.com/seigo5555/toolkitbox-lib/src/ollama-log.ts

こんな時に使う

  • 長いプロンプトが無視されるように見える理由や、リクエストが 400 や 500 で失敗した理由を調べる
  • モデルが実際にどれだけメモリを使ったか、GPU、CPU、またはその両方のどれで動いたかを確認する
  • より大きな VPS を契約する前に、サーバーがどのコンテキスト長と設定を使っていたかを確認する

使い方

  1. ログを取得します。macOS では cat ~/.ollama/logs/server.log、Linux では journalctl -u ollama --no-pager、Docker ではコンテナ名を指定した docker logs です。
  2. 貼り付けます。journalctl または docker のタイムスタンプで始まる行も読み取れます。
  3. まず警告を読み、次にモデルの読み込み、速度、リクエストを読みます。

FAQ

長いプロンプトの冒頭がモデルに無視されるのはなぜですか?

ログに "truncating input prompt" の行があれば、プロンプトがコンテキストに収まらなかったということです。Ollama は先頭の num_keep トークンと末尾を残して中間を捨て、プロンプトがコンテキストのおよそ半分になるまで切り詰めました。num_ctx(または OLLAMA_CONTEXT_LENGTH)を上げるか、プロンプトを短くするか、truncate を false にして送ってください。そうすると、Ollama は切り詰めずにエラーを返します。

"signal: killed" とは何ですか?

llama-server が外部から停止されたということです。私たちの Linux でのテストでは、メモリに収まらないモデルを読み込んでいる最中にこれが起き、リクエストは 500 を返しました。2秒以内に新しい "starting llama-server" の行が続く場合は、Ollama が別の設定でモデルを読み込み直すために、古いプロセスを自分で止めています。

ログの生成速度が eval_count を eval_duration で割った値より低いのはなぜですか?

llama-server は最初に生成されたトークンを数えません。それはプロンプト処理の最後のステップから出てくるためで、1トークン少ない数で割ります。私たちのテストでは、675.82 ms で 7 トークンが 8.88 トークン/秒と報告されましたが、7 を同じ時間で割ると 10.4 になります。

モデルが GPU で動いたかどうかはどう分かりますか?

モデルの読み込みの「GPU に載ったレイヤー数」を見てください。すべてのレイヤーが GPU にあれば、モデルは完全に GPU で動いています。一部のレイヤーだけなら、残りは CPU で動いています。モデルが読み込まれている間は、ollama ps の PROCESSOR 列に同じ内訳が表示されます。

読み取られない行があるのはなぜですか?

このツールが読むのは、Ollama 自身の行、リクエストの行、そしてメモリ、コンテキスト、速度に関係する llama-server の行です。モデルのメタデータの一覧のような、その他の行は読み飛ばします。形式はリリースごとに変わるので、かなり古い、または新しいバージョンの行は認識されないことがあります。

ログはどこかに送信されますか?

いいえ。ログはブラウザの中で読み取られます。ログにはファイルパス、IP アドレス、モデルの名前が含まれることがあるので、ほかの場所に貼り付けるときは注意してください。

関連する記事

関連ツール