既定の4,096トークンでも、同時に8件受けると覚えておく量が16.00GBになりました。
24GBの機材で重みに8GB使うなら、残り16GBをちょうど使い切ります。
同時に受ける数だけ文脈が増えます。手元の機材では、8件あたりで上限に届きます。
Ollamaでは、同時に受けると文脈が増えます。公式はあるモデルに対する並列の処理は、並列な要求の数だけ文脈の大きさを増やす結果になると述べています。
どこで載らなくなるのか。実際に計算して数えました。
層 32・頭 32・頭あたり 128・16bit で持つ場合、1トークン 512 KB
既定の文脈は 4,096 トークン。同時に受ける数を上げると、その数だけ文脈が要る
同時に受ける数 必要な文脈の合計 覚えておく量 重み以外に使える分に対する割合
1件 4,096 トークン 2.00 GB 13%
2件 8,192 トークン 4.00 GB 25%
4件 16,384 トークン 8.00 GB 50%
8件 32,768 トークン 16.00 GB 100%
16件 65,536 トークン 32.00 GB 200%
同時1件なら2.00GB、空きの13%です。8件にすると16.00GBでちょうど100%になります。
16件では200%です。載りません。24GBの機材で重みに8GBを使う条件での話です。
文脈の既定値を変えた場合(同時4件のとき)
既定の文脈 必要な文脈の合計 覚えておく量 使える分に対する割合
2,048 8,192 トークン 4.00 GB 25%
4,096 16,384 トークン 8.00 GB 50%
8,192 32,768 トークン 16.00 GB 100%
32,768 131,072 トークン 64.00 GB 400%
同時4件のまま文脈を8,192にすると、同じ16.00GBです。同時8件・文脈4,096と変わりません。
つまり2つは掛け算です。どちらを2倍にしても同じだけ増えます。
この量の出どころはKVキャッシュの記事で扱いました。
同時数と文脈の長さは、どちらも同じ勾配で効く。
Parallel request processing for a given model results in increasing the context size by the number of parallel requests.原文Ollama 公式ドキュメント「FAQ」 この内容の有効期限2027-02-18
全体が載らなければ動きません。だから文脈の長さが、そのまま同時に扱える人数になります。
Ollamaでは、モデルが丸ごと載る必要があります。公式はGPUでの推論を使うとき、新しいモデルは、同時の読み込みを許すためにVRAMへ完全に収まらなければならないと述べています。
収まるかどうかは文脈の長さで決まります。実際に計算して数えました。
層 32・頭 32・頭あたりの次元 128・16bitで持つ場合
1トークンあたり 512 KB を覚えておく必要がある
文脈の長さ 1人あたり 8人同時 32人同時
1,000トークン 0.49 GB 3.9 GB 15.6 GB
4,000トークン 1.95 GB 15.6 GB 62.5 GB
8,000トークン 3.91 GB 31.3 GB 125.0 GB
32,000トークン 15.63 GB 125.0 GB 500.0 GB
128,000トークン 62.50 GB 500.0 GB 2000.0 GB
80GB のメモリに、重み以外で何人分入るか(重みを 16GB とする)
文脈の長さ 入る人数
1,000トークン 131人
4,000トークン 32人
8,000トークン 16人
32,000トークン 4人
128,000トークン 1人
80GBの機材でも、文脈128,000トークンなら1人です。1人で62.50GBを使います。
1,000トークンなら131人入ります。文脈を128倍にすると人数は131分の1で、ほぼ反比例です。
24GBの機材なら、重み8GBを引いて残り16GBです。文脈8,000トークンで4人という規模になります。
だから手元で動かす場合は、文脈を短くするか同時数を絞るかの判断が先に来ます。
必要量の見積もり方はVRAM見積もりの記事で扱いました。
When using GPU inference new models must be able to completely fit in VRAM to allow concurrent model loads.原文Ollama 公式ドキュメント「FAQ」 この内容の有効期限2027-02-18
文脈の窓には限りがあります。同じ前置きを繰り返すなら、使い回しで大きく減らせます。
Ollamaの文脈の窓には既定値があります。公式は既定では、Ollamaは4096トークンの大きさの文脈の窓を使うと述べています。
限りがあるので、同じ前置きを毎回入れるのは無駄です。実際に数えて比べました。
問い合わせ 2000件。前置き 2000トークン・問い 60トークン・出力 150トークン
使い回しは 5分もつものとし、置くとき 1.25倍・読むとき 0.1倍で数える
1分あたりの件数 使い回した回数 置き直した回数 入力の相当量 使わない場合との比
0.2件 1260回 740回 2,222,000 53.9%
1件 1980回 20回 566,000 13.7%
5件 1999回 1回 522,300 12.7%
20件 1999回 1回 522,300 12.7%
60件 1999回 1回 522,300 12.7%
1分に5件以上来るなら、入力の相当量は12.7%まで下がります。置き直しは1回だけです。
1分に0.2件だと53.9%です。間隔が空くと置き直しになるので、効果が半分以下になります。
前置きの長さを変えたとき(1分あたり5件の場合)
前置きの長さ 入力の相当量 使わない場合 比
200トークン 160,230 520,000 30.8%
500トークン 220,575 1,120,000 19.7%
1000トークン 321,150 2,120,000 15.1%
2000トークン 522,300 4,120,000 12.7%
8000トークン 1,729,200 16,120,000 10.7%
前置きが200トークンなら30.8%、8000トークンなら10.7%です。長いほど効きます。
ただし既定の窓は4,096トークンです。8,000トークンの前置きは、そのままでは入りません。
3つの計測はいずれも手元で書いた模型で、実際のOllamaを動かしたものではありません。層32・頭32といった構成は代表的な値を置いたもので、モデルごとに違います。24GBや80GBという機材の容量、重みが占める分もすべて置いた値です。使い回しの効き方も5分もつという前提での計算です。ここで見せているのは、同時に受ける数と文脈の長さが掛け算で効くという点と、使い回しの効果が到着の頻度で決まるという点の2つです。
By default, Ollama uses a context window size of 4096 tokens.原文Ollama 公式ドキュメント「FAQ」 この内容の有効期限2027-02-18
同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。
出品の仕組みを見る