ローカルLLMでコーディングは文脈長64kが分かれ目

ローカルLLMでコーディングは文脈長64kが分かれ目

本サイトの記事には広告が含まれます。

この記事は「ローカルLLM完全ガイド」の一部です。

ローカルLLMでClaude Codeのようなコーディングエージェントを動かすなら、モデル選びより先に「文脈長を64kにできるか」を確かめてください。OllamaはVRAM 24GiB未満だと既定の文脈長が4kで、Claude Codeの最初の依頼(約1万トークン)はエラーにならないまま約2割に切られました。

コード補完や短い相談なら、16GBのPCでも7B級のモデルで足ります。分かれ目になるのは、リポジトリを読ませて直させる「エージェント」の使い方です。この記事では、既定のまま繋いだときに実際に何が起きたかのログと、文脈長を伸ばすとメモリがどれだけ増えるかの数字から、「手元のメモリで、どこまでローカルに任せるか」を決めます。

目次

結論(30秒)

  • エージェント用途は文脈長64k以上が条件。Ollama公式もエージェントとコーディングツールには64000トークン以上を勧めている(2026年11月2日確認)
  • Ollamaの既定はVRAMで決まり、24GiB未満なら4k。GPUのない検証用VMでは起動ログにdefault_num_ctx=4096と出た
  • 既定4kのままClaude Codeを繋ぐと、最初の依頼10,080トークンが2,050トークンに切られた。Claude Codeは終了コード0で、依頼と無関係な答えを返した。画面にエラーは出ない
  • 文脈長を伸ばすとKVキャッシュはその分だけ増える。4k→32kで48MiB→384MiB(ちょうど8倍)。64kで動く30B級のコーディングモデルは、計算で重み+文脈が約25GBになり、32GB以上のマシンが目安

製造業の社内IT担当として、「社内のコードを外に出さずにAIに書かせたい」と相談される立場から書いています。今回測ったのは、Linux・GPUなしの検証用VMで、小さなモデル(qwen2.5:0.5b)を使った「何トークン届いたか」と「メモリ」だけです。エージェントとしての品質と速度は測っていません。

既定のまま繋ぐと何が起きるか:依頼の8割が黙って消える

この節の要点: 既定4kのOllamaにClaude Codeを繋ぐと、依頼の頭から大半が捨てられます。止まらずに答えが返るので、設定の問題だと気づきにくいのが厄介です。

検証用のLinux VM(Debian 13、8 vCPU、メモリ16GB、GPUなし)に、Ollama 0.40.13とClaude Code 2.1.316を入れて、公式の手順どおりANTHROPIC_BASE_URL=http://127.0.0.1:11434で繋ぎました。作業フォルダはファイル2つだけの小さなリポジトリで、指示は「README.mdを読んで1行で要約して」です。

既定4kでは、Claude Codeの依頼の2割しか届かない

ファイル2つ、指示1行でも、Claude Codeが最初に送る依頼は10,080トークンありました(文脈長32kで受けたときのOllamaのログ)。ツールの説明やシステムの指示が先に積まれるためです。これを既定4kのOllamaが受けると、ログには次の2行が出ました。

truncating input messages which exceed context length truncated=1
truncating input prompt limit=2050 prompt=9809 keep=4 new=2050

モデルに渡ったのは2,050トークンです。Claude Codeは終了コード0で終わり、返ってきたのはREADMEの要約ではなく、関係のない文でした。画面には切り詰めの警告もエラーも出ません。

もう1つ、Claude Codeは起動時に次の警告を出していました。

Claude Code doesn't recognize the model "qwen2.5:0.5b", so it assumes a context window of 200k tokens.

Claude Codeは知らないモデル名を「文脈200k」とみなします。実際は4kしかないので、Claude Code側は「まだ余裕がある」と判断したまま会話を積み、Ollama側で黙って切られます。公式の設定(CLAUDE_CODE_MAX_CONTEXT_TOKENS)で本当の文脈長を教えると、この警告は消えました(後の手順で説明します)。

同じ依頼を文脈長32kで受けると、10,080トークンが切られずに全部モデルへ渡りました(ログはtruncated = 0)。最初の1往復だけで1万トークンです。ファイルを読み、コマンドの結果を受け取るたびに増えていくので、公式が64k以上を勧めるのは大げさではありません。

文脈長を伸ばすと、メモリはどれだけ増えるか

この節の要点: 増えるのは「KVキャッシュ」で、文脈長に比例します。1トークンあたりの量はモデルの設定値から計算でき、実測はその式どおりでした。

KVキャッシュは、モデルが読んだ文章を覚えておくための作業領域です(仕組みはKVキャッシュの解説記事に書きました)。量は次の式で決まります。

1トークンあたりのKV(f16)= 2(KとV)× 層の数 × KVヘッドの数 × ヘッドの次元 × 2バイト

文脈長を8倍にすると、KVキャッシュも8倍になった

文脈長(num_ctx)KVキャッシュ(Ollamaのログ)モデル全体(/api/psのsize)メモ
4,096(既定)48MiB648,722,512バイト
16,384192MiB868,158,012バイト
32,768384MiB1,103,039,036バイト
65,536を指定—1,103,039,036バイトollama psのCONTEXTは32768。モデルの最大長で頭打ち
32,768+q8_0204MiB914,326,813バイトOLLAMA_KV_CACHE_TYPE=q8_0+Flash Attention。f16の53%

前提: Ollama 0.40.13、qwen2.5:0.5b(24層・KVヘッド2・次元64)、検証用Linux VM(GPUなし)で2026年11月2日に測定。

48MiB÷4,096=12,288バイトで、式(2×24×2×64×2)と一致しました。式どおりに増えるので、手元にないモデルでも、設定ファイル(config.json)の4つの数字から必要なメモリを前もって計算できます。

表の4行目も大事です。65,536を指定しても、モデルの最大長が32,768なら32,768で止まります。エラーにはならず、ollama psのCONTEXT欄を見て初めて分かります。

モデル別:64kで動かすと何GBになるか

この節の要点: 64kを使えるモデルは限られ、使えるモデルは重みも大きい。16GBでエージェント用途を組むのは計算の上でも難しいです。

Hugging Faceの各モデルのconfig.jsonから1トークンあたりのKVを計算し、Ollamaのライブラリに載っている重みのサイズと足しました。

64kまで使えるqwen3-coderは、重み+文脈で約25GB

モデル(Ollamaのタグ)重みKV/トークン(f16)モデルの最大長最大長(または64k)でのKV合計の目安
qwen2.5-coder:7b4.7GB57,344バイト32,76832kで約1.9GB約6.6GB(64kには届かない)
qwen3:8b5.2GB147,456バイト40,96040kで約6.0GB約11.2GB(64kには届かない)
qwen3:14b9.3GB163,840バイト40,96040kで約6.7GB約16.0GB(64kには届かない)
qwen3-coder:30b19GB98,304バイト262,14464kで約6.4GB(q8_0なら約3.4GB)約25.4GB(q8_0なら約22.4GB)

前提: 重みはollama.com/libraryの表示、KVはconfig.json(2026年11月2日確認)からの計算。64kは65,536トークンで計算。OS・ほかのアプリ・計算用のバッファの分は含まないので、実際にはこれより多く要ります。q8_0の比率は上の実測(53%)を使いました。

ここから言えるのは2つです。1つは、小さいモデルは「メモリが足りない」より先に「最大長が足りない」こと。7〜14B級はメモリには収まっても、最大長が32k〜40kで64kに届きません。もう1つは、64kを使える30B級は重み+文脈で20GBを超えることです。16GBのMacでqwen3-coder:30bを動かした例は4ツールの比較記事にありますが、毎秒0.20トークンで実用の速さにはなりませんでした。

判断表:メモリ別に、どこまでローカルに任せるか

この節の要点: 補完と相談はメモリが小さくてもローカルで回せます。エージェントは、64kの文脈を載せられるかで線を引きます。

使えるメモリ(GPU/ユニファイドメモリ)コード補完・短い質問(〜8k)コードを貼って相談(〜32k)エージェント(Claude Codeなど、64k以上)
16GB○7B級(qwen2.5-coder:7bで約5GB)○7〜8B級(32kで約6.6〜10GB)×64kを使えるモデルが載らない。クラウドか社内サーバーへ
24GB○○14B級まで(qwen3:14b 32kで約14.7GB)△30B級はq8_0でも計算で約22.4GB。OSの分を足すと余裕がない
32GB○○○30B級を64kで(f16で約25.4GB)。ほかの重いアプリは閉じる
48GB以上○○○30B級を128kまで(計算で約31.9GB)

前提: メモリの数字はconfig.jsonとollama.com/libraryからの計算で、OS・アプリ・計算用バッファの分を含まない。エージェントとしての品質と速度は測っていない。

社内で使う立場から付け足すと、「コードを社外に出さない」ことが目的なら、16GBのPCを全員に配ってエージェントを動かすより、補完と相談は手元で、エージェントは32GB以上の社内サーバー1台に寄せるほうが現実的です。16GBのMacでどのモデルが日本語で使えるかは16GB Macの日本語LLM選びにまとめています。

文脈長の設定手順(Mac/Linux/Windows)と確かめ方

この節の要点: Ollama側で文脈長を上げ、Claude Code側には本当の文脈長を教えます。最後にollama psのCONTEXT欄で確かめます。

Ollama側:文脈長を64kにする

  • Macのアプリ: Ollamaの設定画面にある文脈長(Context length)のスライダーを動かす(公式の手順)
  • Macでコマンドから: launchctl setenv OLLAMA_CONTEXT_LENGTH 65536を実行してから、Ollamaのアプリを再起動する
  • Linux(systemd): sudo systemctl edit ollama.serviceで開いた画面に次を書き、sudo systemctl daemon-reload && sudo systemctl restart ollama
[Service]
Environment="OLLAMA_CONTEXT_LENGTH=65536"
  • Windows: タスクバーからOllamaを終了し、「環境変数を編集」で自分のアカウントにOLLAMA_CONTEXT_LENGTH=65536を追加して、Ollamaを起動し直す
  • その場で試すだけなら: OLLAMA_CONTEXT_LENGTH=65536 ollama serve

メモリが厳しいときは、OLLAMA_KV_CACHE_TYPE=q8_0を足すとKVキャッシュが約半分になります(公式FAQ。今回の実測では53%)。Flash Attentionが使える環境で効きます。

Claude Code側:本当の文脈長を教える

export ANTHROPIC_BASE_URL=http://localhost:11434
export ANTHROPIC_AUTH_TOKEN=ollama
export ANTHROPIC_API_KEY=""
export CLAUDE_CODE_MAX_CONTEXT_TOKENS=65536
claude --model qwen3-coder:30b

CLAUDE_CODE_MAX_CONTEXT_TOKENSは、Claude Codeが知らないモデルの文脈長を指定する環境変数です(Claude Codeの公式ドキュメント)。指定すると、Claude Codeはその長さを前提に会話の要約(compaction)を進めます。Ollamaのollama launch claudeで起動する方法もあります。

確かめる

モデルを1回動かしてから、ollama psを実行します。公式ドキュメントに載っている出力例は次の形です(モデルは公式の例のまま)。

NAME             ID              SIZE      PROCESSOR    CONTEXT    UNTIL
gemma4:latest    c6eb396dbd59    9.6 GB    100% GPU     131072     2 minutes from now
  • CONTEXTが設定した値になっているか。小さければ、設定が効いていないか、モデルの最大長で頭打ちになっている
  • PROCESSORが100% GPUか。CPUの割合が出ていたら、メモリに収まらず一部がCPUに回っている。公式も「CPUへ逃がさないように」と書いている
  • Claude Codeの起動時に「assumes a context window of 200k tokens」の警告が消えているか

症状から直す場所を探す

この節の要点: 文脈長の問題は、エラーではなく「答えがおかしい」形で出ます。ログの文言で見分けます。

症状どこに何が出るか原因直す場所
依頼と関係ない答えが返る。エラーは出ないOllamaのログにtruncating input prompt limit=2050 prompt=9809Ollamaの文脈長が既定4kのままOLLAMA_CONTEXT_LENGTHかアプリのスライダー
64kにしたのに直らないollama psのCONTEXTが32768など小さいモデルの最大長で頭打ち最大長の長いモデルに替える
起動時に「assumes a context window of 200k tokens」Claude Codeの画面Claude Codeがモデルを知らず200kとみなしているCLAUDE_CODE_MAX_CONTEXT_TOKENS
文脈長を上げたら極端に遅くなったollama psのPROCESSORにCPUの割合重み+KVがメモリに収まらない文脈長を下げる/OLLAMA_KV_CACHE_TYPE=q8_0/小さいモデル

やらないほうがいいこと

  • 「エラーが出ないから動いている」と判断しない。今回の既定4kの実行は、終了コード0で答えも返りました。切られたかどうかはOllamaのログかollama psでしか分かりません
  • 文脈長をとりあえず最大にしない。256kなどにすると、KVがメモリからあふれてCPUに回り、かえって使えなくなります。64kから始めて、PROCESSORが100% GPUのままかを見て上げます
  • 公式FAQの「既定は4096」だけを見て判断しない。FAQにはそう書いてありますが、文脈長のページではVRAMに応じて4k/32k/256kに変わると書かれています(2026年11月2日確認)。自分の環境の値はollama psかログで確かめます

導入前に確かめること(チェックリスト)

  • [ ] 何に使うかを決めた(補完・相談だけか、エージェントまでか)
  • [ ] 使うモデルのconfig.jsonで最大長を見た(64k以上あるか)
  • [ ] 重み+64kのKVを計算し、メモリに収まるかを見た(OSの分を残して)
  • [ ] Ollamaの文脈長を設定し、ollama psのCONTEXTで確かめた
  • [ ] PROCESSORが100% GPU(MacならGPU側)のままかを見た
  • [ ] Claude CodeにCLAUDE_CODE_MAX_CONTEXT_TOKENSを設定し、200kの警告が消えたのを見た
  • [ ] 最初の数回はOllamaのログでtruncatingが出ていないかを見た

FAQ

Q1. ローカルLLMでClaude Codeは実用になりますか?

A. 文脈長64k以上を確保できるメモリ(計算では32GB以上が目安)があれば、試す価値があります。既定の4kのままでは、最初の依頼の約2割しかモデルに届かず、まともに動きません。品質と速度は今回測っていないので、自分のリポジトリで小さな作業から確かめてください。

Q2. コーディング用のローカルLLMに必要なメモリは?

A. 補完や短い質問なら16GBで7B級が動きます。エージェント用途で64kを使える30B級(qwen3-coder:30b)は、重み19GB+KV約6.4GBで約25.4GB(計算値、OSの分を除く)なので、32GB以上が目安です。

Q3. Ollamaのコンテキスト長(num_ctx)はどう変えますか?

A. 環境変数OLLAMA_CONTEXT_LENGTHを設定してOllamaを再起動します(Macはアプリの設定のスライダーでも変えられます)。API経由ならnum_ctxをリクエストに入れます。効いたかどうかはollama psのCONTEXT欄で確かめます。

Q4. 16GBのMacでローカルLLMのコーディングはできますか?

A. 補完と、コードを貼っての相談はできます。エージェントは、64kを使えるモデルが16GBに収まらないので、計算の上でも難しいです。手元は補完と相談、エージェントはクラウドか社内サーバーという分け方をおすすめします。

Q5. 文脈長を伸ばすと何が増えますか?

A. KVキャッシュです。今回の測定では4k→16k→32kで48→192→384MiBと、文脈長に比例して増えました。1トークンあたりの量は「2×層×KVヘッド×ヘッド次元×2バイト」で計算できます。

まとめ

ローカルLLMでコーディングをするとき、補完と相談は小さいメモリでも回ります。エージェントに任せるかどうかは、「64kの文脈を載せられるか」で決まります。Ollamaは既定のままだと4kで、Claude Codeの依頼は黙って切られました。設定するのは、OllamaのOLLAMA_CONTEXT_LENGTHと、Claude CodeのCLAUDE_CODE_MAX_CONTEXT_TOKENSの2つです。

まだ確かめていないのは、Macでの既定値(ユニファイドメモリをどう数えるか)と、GPUのある環境で64kにしたときの速度と品質です。測れたら追記します。

関連記事

参考(一次ソース)

更新履歴

  • 2026-11-02: 初版(Ollama 0.40.13・Claude Code 2.1.316、検証用Linux VM(GPUなし)で測定)

確認日: 2026-11-02

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次