実は大学のゼミのフェローを20年以上続けているのだが、最近になって初めて知ったことがある。自分の登録区分は、事務系でも技術系でもなく、教育系だったということだ。
正直なところ、あまり実感はなかった。活動の多くはほぼボランティアで、交通費や機材費まで自腹になることもある。それでも身分やタイトルそのものは公的なものらしい。
教育系と言われても最初は少し違和感があった。しかし改めて考えてみると、カンボジアのフリースクールでPC環境を整備したり、AI活用の話をしたり、学習環境そのものを作る活動は、確かに教育に近いのかもしれない。
今年は初めて授業も担当した。しかも受講者の95%以上が女子学生である。AIやローカルLLMの話をすると、どうしても「どのモデルが速いのか」「どれが賢いのか」という話になりがちだが、実際に必要なのは「学生が使える環境をどう作るか」だったりする。
現在はカンボジア向けも含めてローカルLLM環境の構築を進めているのだが、調べ始めると毎回のように面白い発見があり、なかなか作業が前に進まない。
今回も発端は単純だった。
学生向け環境として使うことを考え、
「MacBook Air M4 32GB RAMやMacBook Pro M1 Ultra 32GB RAMでは、どのモデルを載せるのが現実的なのだろう」
と調べ始めたのである。
本来であればMacだけ調べればよかったのだが、比較対象が欲しくなり、
-
DGX Spark
-
EVO-X2(Strix Halo)
-
MacBook Air M4 32GB
-
Apple Silicon向けMLX
まで調べ始めてしまった。
DGX SparkやEVO-X2(Strix Halo)は、ある意味で検証機として非常に優秀である。一般的なPCでは最初にメモリ不足や性能不足にぶつかることが多いが、これらの環境では「とりあえず128Kや256Kで試してみる」が比較的気軽にできる。
そのため、
-
Contextサイズは本当にどれくらいメモリを消費するのか
-
Agent AI用途ではどこまで必要なのか
-
Apple SiliconのMLXはどれくらい効率が良いのか
といった、本来知りたかったことを検証しやすい。
結果として、Contextサイズとメモリ消費について予想外に面白い結果が見えてきた。
そう考えると、今やっているローカルLLM環境の検証も単なる趣味のベンチマークではない。「現場で使えるAI環境をどう作るか」という、ある意味では教育環境づくりの延長線上にある話なのだろう。もっとも、そのおかげで環境構築作業はまた少し遅れることになったのだが。
閑話休題
DGX Spark、EVO-X2(Strix Halo)、MacBook Air M4 32GB RAMで、Agent AI向けのローカルLLMモデルをロードし、Contextサイズごとのメモリ使用量を確認してみた。
なお、ここで表示しているGPUメモリ使用量は、基本的にモデルをロードした直後の値である。実際の利用では、プロンプト長、出力長、Tool Calling、RAG、Web Search、会話履歴、同時実行数などによって使用量が変わる。そのため、数値をそのまま上限値として扱うのではなく、実運用では余裕を持った設定にした方がよい。
DGX Spark / EVO-X2(Strix Halo)
DGX Spark / EVO-X2 (Strix Halo) / Ollama v0.24.0での測定結果
Agent AI用途では「Contextを増やすとVRAMを大量消費する」と思われがちだが、実際に測定してみると少し違った結果になった。
また、GPUが使うメモリは、DGX Spark 、EVO-X2 (Strix Halo)ともに測定値上は同じだった。
|
Model
|
Size
|
16K
|
GPU
|
32K
|
GPU
|
64K
|
GPU
|
128K
|
GPU
|
256K
|
GPU
|
|---|---|---|---|---|---|---|---|---|---|---|---|
|
qwen3.5:4b
|
3.4 GB
|
◎ 軽量Agent / 小型環境向け
|
6.4 GB
|
○ 実用Agentの下限
|
7.1 GB
|
△ 長文Agentは重め
|
8.6 GB
|
○ 軽量長文Agent向け
|
11 GB
|
△ 超長文は扱えるが推論力が限界
|
17 GB
|
|
qwen3.5:9b
|
6.6 GB
|
◎ 快適Chat / 軽いAgent
|
9.2 GB
|
◎ 標準Agent構成
|
9.9 GB
|
○ RAG・長めの作業向け
|
11 GB
|
◎ 本格RAG・Agent向け
|
14 GB
|
○〜◎ 大規模RAG / 長大Agent向け
|
20 GB
|
|
qwen3.6:35b
|
23 GB
|
◎ 高品質Chat / Agent
|
26 GB
|
◎ 品質重視の標準
|
27 GB
|
◎ 重い設計・分析向け
|
28 GB
|
◎◎ 大規模分析・調査向け
|
30 GB
|
◎◎ 超長文分析・大型RAG向け
|
34 GB
|
|
gpt-oss:20b
|
13 GB
|
○ Code / 推論用途
|
14 GB
|
◎ Repo解析・長文Code
|
14 GB
|
○〜◎ 重いCode/RAG向け
|
15 GB
|
◎ Code Agent・Repo解析向け
|
17 GB
|
◎ 大規模Repo / 長大ログ解析向け
|
17 GB
|
DGX Spark、EVO-X2(Strix Halo)、MacBook Air M4 32GB RAMで測定した結果、当初考えていた以上に「Contextサイズのコスト」は小さいことが分かった。
多くの人は、
-
Contextを増やす
-
VRAMが大量消費される
-
現実的ではない
と考えている。しかし実測してみると、少なくとも Ollama v0.24.0 環境では事情が少し違っていた。
例えば qwen3.5:9b は、
16K : 9.2 GB
32K : 9.9 GB
64K : 11 GB
128K : 14 GB
256K : 20 GB
だった。
また qwen3.6:35b は、
16K : 26 GB
32K : 27 GB
64K : 28 GB
128K : 30 GB
256K : 34 GB
だった。
つまり、
Contextを4倍にしたから
VRAMも4倍になる
というわけではない。
実際には Contextサイズよりもモデルサイズの方が圧倒的に支配的である。
特に qwen3.6:35b は、16Kから64Kへ増やしても約2GBしか増加していない。
gpt-oss:20b に至っては、
16K : 14 GB
32K : 14 GB
64K : 15 GB
128K : 17 GB
256K : 17 GB
であり、128Kから256Kへ増やしてもGPU使用量は変化しなかった。
もちろん、これは Ollama の実装、量子化方式、GPUアーキテクチャ、モデル構造に依存するため、他のモデルや他の環境でも同じ結果になるとは限らない。
しかし少なくとも今回の測定環境では、
-
VRAM消費を決めるのは主にモデルサイズ
-
Contextサイズの増加による影響は思ったより小さい
という結果になった。
Apple Silicon はさらに別世界だった
MacBook Air M4 32GB RAM / Ollama v0.24.0での測定結果
|
Model
|
Size
|
16K
|
GPU
|
32K
|
GPU
|
64K
|
GPU
|
128K
|
GPU
|
256K
|
GPU
|
|---|---|---|---|---|---|---|---|---|---|---|---|
|
qwen3.5:4b
|
3.4 GB
|
◎ 軽量Agent / 小型環境向け
|
6.1 GB
|
○ 実用Agentの下限
|
6.5 GB
|
△ 長文Agentは重め
|
7.5 GB
|
○ 軽量長文Agent向け
|
9.4 GB
|
△ 超長文は扱えるが推論力が限界
|
13 GB
|
|
qwen3.5:9b
|
6.6 GB
|
◎ 快適Chat / 軽いAgent
|
8.8 GB
|
◎ 標準Agent構成
|
9.2 GB
|
○ RAG・長めの作業向け
|
10 GB
|
◎ 本格RAG・Agent向け
|
12 GB
|
○〜◎ 大規模RAG / 長大Agent向け
|
16 GB
|
|
qwen3.6:35b
|
23 GB
|
ロードできずに強制再起動
|
|
テストせず
|
|
テストせず
|
|
テストせず
|
|
テストせず
|
|
|
qwen3.5:4b-mlx
|
4.0 GB
|
◎ 軽量Agent / モバイル向け
|
3.4 GB
|
◎ 軽量Agent
|
3.3 GB
|
◎ 長文対応軽量Agent
|
3.3 GB
|
○ 軽量RAG向け
|
3.3 GB
|
○ 超長文対応だが推論力は限定的
|
3.3 GB
|
|
qwen3.5:9b-mlx
|
8.9 GB
|
◎ 快適Chat / Agent
|
8.0 GB
|
◎ 標準Agent構成
|
8.0 GB
|
◎ 長文RAG向け
|
8.0 GB
|
◎ 本格Agent向け
|
8.0 GB
|
◎ 大規模RAG・長文Agent向け
|
8.0 GB
|
|
qwen3.6:27b-mlx
|
19 GB
|
◎ 高品質Chat
|
18 GB
|
◎ 高品質Agent
|
18 GB
|
◎ 設計・分析向け
|
18 GB
|
◎ 大規模RAG向け
|
18 GB
|
◎◎ 長文分析・調査向け
|
18 GB
|
|
qwen3.6:35b-mlx
|
21 GB
|
◎ 高品質Chat
|
20 GB
|
◎ 高品質Agent
|
20 GB
|
◎ 重い設計・分析向け
|
20 GB
|
◎ 大規模RAG向け
|
20 GB
|
◎◎ 最大品質・長文分析向け
|
20 GB
|
|
gpt-oss:20b
|
13 GB
|
○ Code / 推論用途
|
14 GB
|
◎ Repo解析・長文Code
|
14 GB
|
○〜◎ 重いCode/RAG向け
|
14 GB
|
◎ Code Agent・Repo解析向け
|
15 GB
|
◎ 大規模Repo / 長大ログ解析向け
|
15 GB
|
MacBook Air M4 32GB RAMで測定した結果はさらに興味深かった。
通常GGUF版では qwen3.6:35b はロードできず、OSごと再起動が発生した。
一方で Apple Silicon 向けに最適化された MLX版では、
qwen3.6:35b-mlx
が問題なくロードできた。
さらに興味深いのは、MLX版では Contextサイズを変更してもメモリ使用量がほとんど変化しなかったことである。
今回の測定では、
qwen3.5:4b-mlx 約3.3GB
qwen3.5:9b-mlx 約8.0GB
qwen3.6:27b-mlx 約18GB
qwen3.6:35b-mlx 約20GB
でほぼ固定だった。
また、
OLLAMA_CONTEXT_LENGTH=65536
を指定していても、
ollama ps
では
CONTEXT 262144
と表示されるケースも確認できた。
MLX版のメモリ管理やContext管理は通常のGGUF版とは大きく異なる可能性がある。
少なくとも今回の測定結果だけを見ると、Apple Siliconでは「Contextサイズを気にする」よりも、「どのモデルサイズを選ぶか」の方が重要に見える。
Agent用途での現実的なContextサイズ
以前は Agent用途でも32Kを基準と考えていた。
しかし現在の Open WebUI は、
-
Web Search
-
Tool Calling
-
Knowledge(RAG)
-
Memory
-
会話履歴
などが同時に Contextへ投入される。
そのため Agent用途では、
32K = 最低ライン
64K = 実用ライン
128K = 本格RAG
256K = 特殊用途
と考えた方が現実的である。
特に Open WebUI の Agent モードを活用するのであれば、64K程度あるとかなり余裕が出る。
コンテキストサイズ別用途
|
用途
|
推奨
|
|---|---|
|
Chat
|
32K
|
|
普段使いAgent
|
64K
|
|
本格RAG / 長文設計書
|
128K
|
|
大量ログ解析
|
256K
|
|
大規模Repo解析
|
256K
|
|
複数資料横断RAG
|
256K
|
|
長時間Agent処理
|
256K
|
|
デモ・速度重視
|
32K〜64K
|
現時点でのおすすめ構成
|
環境
|
推奨
|
|---|---|
|
小型GPU / UMA少なめ
|
qwen3.5:4b + 64K
|
|
16GB VRAM / 32GB UMA
|
qwen3.5:9b + 64K
|
|
DGX Spark
|
qwen3.6:35b + 64K〜128K
|
|
EVO-X2 (Strix Halo)
|
qwen3.6:35b + 64K〜128K
|
|
MacBook Air M4 32GB
|
qwen3.5:9b-mlx + 256K
|
|
高品質Agent
|
qwen3.6:27b-mlx
|
|
長文分析・調査
|
qwen3.6:35b-mlx
|
|
コード・Repo解析
|
gpt-oss:20b + 128K〜256K
|
まとめ
今回の測定で分かったことは単純である。
Contextサイズを増やすと確かにメモリ使用量は増える。しかし、少なくとも今回のDGX Spark / EVO-X2 / Ollama v0.24.0環境では、VRAM消費を支配していたのはContextサイズよりもモデルサイズだった。
一方で、Agent AI用途ではContextサイズそのものは非常に重要である。Web Search、Tool Calling、Knowledge(RAG)、Memory、会話履歴はすべてContextへ投入されるため、Context不足はAgentの品質低下や情報欠落に直結する。
つまり、
- VRAM消費を決めるのは主にモデルサイズ
- Agentの使い勝手を決めるのは主にContextサイズ
と考えると理解しやすい。
今回の測定結果だけで言えば、
32K = 最低ライン
64K = 実用Agent
128K = 本格RAG
256K = 長大入力専用
という印象だった。
そして予想外だったのは、Apple Silicon向けのMLX版である。
MacBook Air M4 32GB RAMでも qwen3.6:35b-mlx をロードでき、qwen3.5:9b-mlx では256K Contextでも約8GB程度のメモリ使用量に収まった。
ただし、MLX版ではモデルサイズが大きくなるほど初回応答までの待ち時間が長くなる傾向もあった。そのため、普段使いでは qwen3.5:9b-mlx、品質重視では qwen3.6:27b-mlx、長文分析や検証では qwen3.6:35b-mlx という使い分けが現実的だと思う。
Apple Silicon向けMLXは、単なる高速化ではなく、ローカルLLMの前提そのものを変える可能性がある。
筆者ならどうするか
今回の測定結果を踏まえると、自分なら以下のように使い分ける。
Open WebUIの普段使い
qwen3.5:9b
Context: 64K
理由は単純で、品質・速度・メモリ消費のバランスが非常に良いからである。
Web Search、Tool Calling、Knowledge(RAG)、Memoryを使ったAgent用途でも十分実用になる。
DGX Spark / EVO-X2
qwen3.6:35b
Context: 64K〜128K
高品質なAgent用途ならこれが本命になる。
今回の測定では64Kでも十分余裕があり、128Kも現実的だった。
長文設計書、RAG、複数資料の横断分析などでは9Bとの差が見えてくる。
MacBook Air M4 32GB
qwen3.5:9b-mlx
Context: 256K
今回最も驚いたのはこれだった。
MLX版はメモリ消費が非常に小さく、256Kでも約8GB程度しか使用しなかった。
普段持ち歩くマシンで256K Contextが実用になるとは正直思っていなかった。
コード・ログ解析
gpt-oss:20b
Context: 128K〜256K
大量ログや大規模Repo解析では今でも強い。
Agent用途というよりは、エンジニア向けの専門モデルという印象である。
結論として、Agent AI用途ではまず64Kを基準に考える。
VRAM消費を支配しているのは主にモデルサイズであり、Agentとしての使い勝手を支配しているのはContextサイズである。
そしてApple SiliconのMLXは、少なくとも現時点では想像以上に面白い存在だった。