OllamaのよくあるミスがWindows 11のAIパフォーマンスを低下させている可能性 ― 修正方法はこちら

  • abmhh
  • 0 comments
OllamaのよくあるミスがWindows 11のAIパフォーマンスを低下させている可能性 ― 修正方法はこちら
Windows ターミナルの Ollama 統計情報には、評価レートと、使用されている CPU と GPU の分割が表示されます。
ターミナルでOllamaを使い慣れていれば、そのパフォーマンスを簡単に把握できるようになります。 (画像提供: Windows Central)

最近、Windows 11 PCでAI LLMをローカルで使う方法として、Ollamaを試しています。学習目的以外にも、ChatGPTやCopilotのようなツールに頼るよりもローカルAIを実行する方が良い理由がいくつかあります。

でも、教育は非常に重要です。なぜなら、私は常に好奇心旺盛で、このような新しいテクノロジーがどのように機能するのか、そしてそれをどのように活用できるのか、知識を広げたいと思っているからです。

先週末、私はある側面について確かに学びました。それはパフォーマンスです。つい先週、Ollama社が新しいGUIアプリケーションをリリースしました。これにより、サードパーティ製のアドオンやターミナルを使わずに、LLMでこれまで以上に簡単に使用できるようになりました。

しかし、ターミナルは依然として便利な場所であり、そのターミナルを使って、自分のマシンで使用していた LLM が期待どおりに動作していなかったことに気付きました。

すべてはコンテキストの長さにかかっています。

コンテキストの長さはパフォーマンスの重要な要素です

Asking ChatGPT to solve a number sequence problem.

コンテキストの長さは、ローカルAIとChatGPTのどちらを使用するかの判断材料となります。(画像提供:Windows Central)

では、コンテキスト長とは何でしょうか?そして、AIモデルのパフォーマンスにどのような影響を与えるのでしょうか?コンテキスト長(コンテキストウィンドウとも呼ばれます)は、モデルが1回のインタラクションで処理できる情報の最大量を定義します。

簡単に言えば、コンテキストの長さが長くなると、モデルは会話からより多くの情報を「記憶」し、より大きなドキュメントを処理できるようになり、結果として、より長いセッションを通じて全体的な精度が向上します。

トレードオフとして、コンテキストの長さが長くなるとより多くの処理能力が必要になり、応答時間が遅くなります。コンテキストはトークンで測定されます。これはテキストの断片を表すのに適したラベルです。つまり、テキストが長くなるほど、処理に必要なリソースも増えます。

Ollamaは最大128KBのコンテキストウィンドウに対応していますが、サポートを実行するためのハードウェアが不足している場合、マシンの速度が極端に低下する可能性があります。私が実際に気づいたのは、10歳と11歳の子供向けのテストをgpt-oss:20bで実行しようとした時でした。

この例では、コンテキストの長さが短いとモデルがテスト全体を適切に処理するのに十分な量が提供されませんでしたが、コンテキストの長さが長いと、パフォーマンスが低下しました。

ChatGPT のコンテキストの長さは 100,000 トークンを超えますが、OpenAI の大規模なサーバーが背後にあるという利点があります。

適切なタスクに適切なコンテキストの長さを維持することは、パフォーマンスにとって重要です。

Changing context length in the Ollama GUI app.

Ollamaの新しいGUIアプリを使えば、コンテキストの長さを簡単に変更できます。(画像提供:Windows Central)

コンテキストの長さを頻繁に切り替えるのは少し面倒ですが、そうすることでモデルからより多くのものを引き出せるようになります。これはこれまであまり意識していませんでしたが、一度意識してみると、かなり楽になりました。

モデルの実行速度を確認するために、ターミナルでOllamaの設定をいろいろいじっていた時に、あることに気づきました。gpt:oss20bがコンテキスト長64kに設定されていることに気づかず、簡単な質問に対して1秒あたり9トークンの評価速度が得られたことに驚きました。

「もしウッドチャックが木を切ることができたら、どれくらいの量の木材を切るのでしょうか?」

また、この長さではGPUのVRAMを全く使用せず、メモリへの読み込みを拒否しているようで、CPUとRAMのみを使用して実行されていました。8kに下げると、同じ質問に対して1秒あたり43トークンのレスポンスが生成されました。4kに下げると、これが倍増して1秒あたり86トークンになりました。

ここでの追加の利点は (少なくともこのモデルの場合)、GPU が 4k で完全に使用され、8k では 93% が使用されることです。

ここで重要なのは、実際に大量のデータや非常に長い会話を扱っている場合を除いて、コンテキストの長さを短く設定するとパフォーマンスが大幅に向上するということです。

重要なのは、セッションから何を得ようとしているのかと、それを最も効率的に処理できるコンテキストの長さとのバランスを取ることです。

Ollama のコンテキストの長さを変更し、将来使用するために保存する方法

Setting a context length and saving a model using the Ollama CLI.

CLIからは、コンテキストの長さを設定できるだけでなく、そのモデルのバージョンを保存して、将来的に素早くアクセスできるようにすることもできます。(画像提供: Windows Central)

Ollama でコンテキストの長さを変更するには、ターミナルでの変更と新しい GUI アプリケーションでの 2 つの方法があります。

後者は最も簡単です。設定画面でスライダーを4Kと128Kの間で動かすだけです。欠点は、これらの値は固定されており、その間の値を選択できないことです。

ただし、ターミナルを使用する場合、Ollama CLI を使用すると、必要なコンテキストの長さをより自由に選択できるだけでなく、このコンテキストの長さが添付されたモデルのバージョンを保存する機能も得られます。

なぜこんなことをするのでしょうか?まず、その長さが永続的に設定されたモデルが提供されるので、毎回変更する必要がありません。とても便利です。しかし同時に、異なるユースケースに合わせて、異なるコンテキスト長を持つ複数の「バージョン」のモデルを作成できることも意味します。

これを行うには、PowerShell ウィンドウを開き、次のコマンドを使用して使用するモデルを実行します。

ollama run <modelname>

モデルが実行され、CLI環境に入ったら、このテンプレートに従ってコンテキスト長を変更します。ここでは、8kのコンテキスト長を適用しています。

/set parameter num_ctx 8192

末尾の数字は、コンテキストの長さを指定します。このコンテキストの長さを使用しますが、起動可能なバージョンを保存したい場合は、次のコマンドを入力します。

/save <createmodelnamehere> 

Ollama listing all currently available local LLMs it can use, including a saved version of gpt-oss:20b with an 8k context length.

コンテキスト長8KBのgpt-oss:20bバージョンを保存した後、いつでもOllamaから直接起動できるようになりました。(画像提供: Windows Central)

これで、保存したモデルを CLI または GUI アプリから起動したり、PC で Ollama を使用している他の統合で使用したりできるようになります。

欠点は、バージョンを増やすほどストレージの使用量が増えることです。しかし、十分なストレージ容量があれば、コンテキストの長さの変更を気にする必要がなくなり、便利な方法です。

小さなタスクを実行するときに最高のパフォーマンスを得るために 1 つの設定を低くし、より負荷の高い作業負荷のために 1 つの設定を高くするなど、自由に設定できます。

Ollamaでモデルのパフォーマンスを確認する方法

Using the verbose flag and ps command to see how fast a model is running in Ollama and the split of CPU and GPU usage.

Ollama CLIを使用すると、モデルの実行速度と、実行中のCPUとGPUの使用率の配分を確認できます。(画像提供: Windows Central)

最後に、Ollama でモデルの CPU と GPU の使用量の分割と、モデルが 1 秒あたりに吐き出しているトークンの数を確認する方法を示します。

使用しているモデルと利用可能なハードウェアに基づいて、これをいろいろ試して自分に最適なポイントを見つけることをお勧めします。

現時点では、Ollamaのみがインストールされており、サードパーティ製ツールがインストールされていない場合は、ターミナルを使用する必要があります。モデルを実行する際は、コマンドに--verboseタグを追加してください。例:

ollama run gemma3:12b --verbose

これは、レスポンス後に様々なパフォーマンス指標の詳細を含むレポートを生成します。最も簡単に確認できるのは最新の評価レートで、 1秒あたりのトークン数が多いほどパフォーマンスが高速であることを示します。

モデルがCPUとGPUにどの程度の割合で負荷をかけているかを確認したい場合は、まず/byeコマンドを使ってこの状態から抜け出す必要があります。その後、 ollama psと入力すると、CPUとGPUの使用率の内訳が表示されます。理想的には、GPUの使用率は100%、または可能な限りそれに近づくようにする必要があります。

例えば、RTX 5080を搭載した私のシステムでGPUを100%使用したい場合、gpt-oss:20bでコンテキスト長を8k未満にする必要があります。8kでは「わずか」93%ですが、それでも全く問題ありません。


これが皆さんの助けになれば幸いです。特にOllama初心者の皆さん。パフォーマンスについては完全に諦めていました。強力なGPUがあれば、何かを実行するだけで魔法のようにうまくいくだろうと単純に考えていました。

RTX 5080を使っていても、最高のパフォーマンスを得るには、期待値とコンテキスト長を調整する必要がありました。一般的に、これらのモデルに(まだ)大量のドキュメントを投入していないので、膨大なコンテキスト長は必要ありません。また、短いクエリであれば、(皆さんも)コンテキスト長は必要ありません。

あなたが間違いをしなくて済むように、私は喜んで間違いをします!

リチャード・ディバインは、10年以上の経験を持つWindows Centralの編集長です。元プロジェクトマネージャーであり、長年のテクノロジー愛好家でもある彼は、2011年にMobile Nationsに入社し、Windows Centralに加え、Android CentralやiMoreでも活躍しています。現在は、このサイトであらゆる種類のPCハードウェアとレビューの取材を担当しています。Mastodonでは、mstdn.social/@richdevine でフォローできます。