Local / Edge実践ガイド

Ollamaのコンテキスト長を変える前に確認すること|num_ctxの設定

Ollamaのコンテキスト長を変える前に確認すること — num_ctxの設定
目次

公式サイトで次に進む

この記事で明示的に扱うソフトだけを表示します。配布・手順は各公式ページで確認してください。

local-gen.jpがファイルを配布するものではなく、互換性を保証するものでもありません。

Ollamaで長い会話やRAGを使うとき、いきなりnum_ctxを最大級の値へ変更する必要はない。

先に確認したいのは、いま実際にどれだけのコンテキスト長が割り当てられているかと、そのモデル自体がどこまで扱えるかだ。

Ollamaの公式資料では、利用できるVRAMに応じてコンテキスト長の初期値を変える仕組みが案内されている。また、OLLAMA_CONTEXT_LENGTHnum_ctxなど、設定を変更する方法も用意されている。

古い記事に書かれた固定値を前提にせず、自分の実行中モデルを確認してから変更する。

まずollama psで現在の値を見る

モデルを起動した状態で、次を実行する。

ollama ps

公式ガイドの例では、出力にCONTEXTPROCESSORが表示される。

  • CONTEXT:現在そのモデルへ割り当てられているコンテキスト長
  • PROCESSOR:モデルがCPU・GPUへどのように配置されているか

モデルカードに「128K対応」と書かれていることと、Ollamaが現在128Kを割り当てていることは別である。

モデル側の最大値を、いま使っている設定値として読み替えない。

サーバー全体のコンテキスト長を変える場合

Ollamaサーバー全体の設定を変える方法として、公式資料ではOLLAMA_CONTEXT_LENGTHが案内されている。

OLLAMA_CONTEXT_LENGTH=8192 ollama serve

ここでの8192は書き方の例であり、全員への推奨値ではない。必要な入力長とPCの条件に合わせて決める。

サーバー全体を変えると、そのOllama環境でモデルを使うときの基準が変わる。一回の処理だけ試したい場合に、必ずしも全体設定を変更する必要はない。

ollama runや独自APIでは個別に設定できる

対話中のollama runでは、FAQに次の設定方法が案内されている。

/set parameter num_ctx 8192

Ollamaの独自APIでは、送信内容のoptionsnum_ctxを含める方法がある。

{
  "model": "your-model",
  "prompt": "...",
  "options": {
    "num_ctx": 8192
  }
}

特定の会話やリクエストだけで長さを試したいときに使いやすい。

ただし、OpenAI互換APIは同じ設定方法とは限らない。Ollamaの公式OpenAI互換資料では、必要に応じてModelfileなどでモデル側の設定を作る方法が案内されている。

「OllamaのAPIならどの入口でも同じ方法でnum_ctxを渡せる」と考えない。

コンテキスト長を増やすとメモリも増える

Ollamaの公式ガイドでは、コンテキスト長を増やすとモデル実行に必要なメモリも増えると説明されている。

その結果、設定前はGPUへ収まっていた構成でも、必要メモリが増えることでCPU側へ置かれる割合が変わる場合がある。

変更後はもう一度、

ollama ps

を実行し、CONTEXTだけでなくPROCESSORも確認する。

必要以上に大きな値へすると、ほかのモデルやアプリへ使えるメモリも減る。

設定後は同じ入力で確かめる

数値を変えただけで終わらせず、もともと問題が起きていた入力をもう一度使う。

たとえば長い文書の前半を参照できない問題なら、同じ文書と同じ質問で確認する。

  1. 変更前のCONTEXTを記録する
  2. 必要な範囲だけnum_ctxを増やす
  3. ollama psで現在値と配置を確認する
  4. 同じ長文・同じ質問を再実行する
  5. 必要な情報を参照できるようになったか確認する

改善しない場合は、原因がコンテキスト長ではなく、RAGの検索、入力の作り方、モデル能力、途中での切り捨てなど別の場所にある可能性を考える。

コンテキスト長そのものの意味から整理したい場合は、32K・128K・256K・1Mのコンテキスト長の違いへ進める。

まとめ

  • まず`ollama ps`で、実際に割り当てられている`CONTEXT`とCPU・GPUへの配置を確認する
  • サーバー全体の設定と、`ollama run`や独自APIで個別に指定する`num_ctx`は分けて考える
  • コンテキスト長を増やすとメモリ使用量も増えるため、モデルの上限まで常に広げる必要はない
  • 設定を変えた後は、同じ長い入力で必要な情報を参照できるようになったか確認する
同じテーマから

この記事で扱ったデータ

モデル・GPU・実行ソフトの確認済みデータを、記事とは別に確かめられます。

サイト内検索