PR

Macは長いコンテキストでRTXより遅い?XServer VPSで532・2287・4537トークン実測

【PR】この記事にはA8.netのアフィリエイト広告を含みます。

先に結論:Macが長いコンテキストでRTXより遅いかは、今回のXServer VPS実験だけでは判定できません。MacRTXも所有していないからです。ただし、同じCPU modelへ532・2,287・4,537 tokenを渡すと、prefill中央値は1.738秒→11.211秒→31.540秒へ増えました。入力は8.528倍、prefillは18.146倍です。XServer VPSは非同期処理の逃がし先にはなりますが、長文を送れば速くなるわけではありません。判定は一部解決です。

2026年9月1日、XServer VPS 4GBQwen3 0.6Bへ3種類の合成長文を各3回送りました。Ollamaが返すprompt_eval_countprompt_eval_durationを使い、生成16 tokenの時間とは分けて測っています。

長いコンテキストで問題になるprefillとは?

prefillは、回答を1 tokenずつ生成する前に、入力prompt全体を読み込む処理です。長いコード、チャット履歴、RAG文書、Android調査ログをまとめて送ると、最初の1文字が返るまでの待ち時間へ影響します。

Ollama Generate API公式文書は、応答にprompt_eval_countprompt_eval_durationを含めます。今回のprefill速度は、前者を後者の秒数で割って算出しました。

指標 意味 今回の使い方
prompt_eval_count 処理した入力token 文字数ではなく実tokenを採用
prompt_eval_duration 入力処理時間 prefill時間として比較
eval_count 生成token 全条件16に固定
eval_duration 生成時間 prefillと混ぜず記録
total_duration load等を含む総時間 利用者の待ち時間に近い値

MacRTXより長文処理が遅い?

model、量子化、runtimecache条件を揃えないと比較できません。メモリに載ること、promptを速く読むこと、回答tokenを速く生成することは別の性能です。

Redditの「Qwen3.5 MLX vs GGUF Performance on Mac Studio M3 Ultra 512GB」では、複数ファイルやMCPを含む実作業でprompt processingが長くなったという個別体験が報告されています。一方、cacheruntime更新で挙動が変わる例もあります。投稿者の条件をMac全体へ一般化しません。

ZennMac実測では何が報告されている?

Zennの「Hy3 T512をM3 Ultra 512GBで実測」では、59K token入力を処理できた一方、短文と長文でpeak memoryや生成速度が変わり、512GBでも余裕とは言えなかったと報告されています。対象modelは今回のQwen3 0.6Bと全く異なります。

この違いこそ重要です。「Mac」「RTX」「VPS」という機種名だけでなく、model sizecontextKV cachebackendをセットで記録しなければ一次情報として比較できません。

今回のXServer VPS実験環境は?

項目 条件
VPS 4 vCPU / 4GB RAM / 150GB NVMeGPUなし
OS Ubuntu 26.04
container上限 3 CPU / 2,200MiB / 追加swapなし / PID 256
Ollama 0.33.2、Docker
model qwen3:0.6b、既存volumeを再利用
context設定 num_ctx 8192
生成 num_predict 16、temperature 0seed 42
反復 各3run、中央値

公開中のCaddyFastAPIPostgreSQLは止めず、実験Ollamaだけを一時containerへ分離しました。

キャッシュ条件は揃えた?

runkeep_alive=0で終え、modelKV contextを解放してから次へ進みました。prefixcaserunごとに変えています。これは「同じ会話の続き」ではなく、長文を初めて読むcold prefillを比較するためです。

実運用ではstable prefixKV cacheを使えば、毎回すべてを読み直さずに済む可能性があります。今回の結果を、cache有効なagent sessionの待ち時間へそのまま当てはめないでください。

[PR]
VPSでいろいろ試すなら『XServer VPS』

532 tokenprefillは何秒だった?

3runのprefillは1.902秒、1.738秒、1.628秒で、中央値は1.738秒でした。prompt throughput中央値は306.084 tok/stotal中央値3.709秒、wall中央値3.714秒です。

run prompt token prefill prompt速度 total
1 532 1,901.922ms 279.717 tok/s 3,900.521ms
2 532 1,738.087ms 306.084 tok/s 3,709.355ms
3 532 1,627.599ms 326.862 tok/s 3,626.532ms

2,287 tokenでは何秒だった?

prefill中央値は11.211秒prompt throughput中央値203.997 tok/stotal中央値13.514秒でした。532 token比で入力は4.299倍、prefillは6.450倍です。

run prompt token prefill prompt速度 total
1 2,287 11,009.280ms 207.734 tok/s 13,301.904ms
2 2,287 11,615.216ms 196.897 tok/s 13,934.081ms
3 2,287 11,210.927ms 203.997 tok/s 13,513.789ms

4,537 tokenでは何秒だった?

prefill中央値は31.540秒prompt throughput中央値143.849 tok/stotal中央値34.339秒でした。532 token比で入力は8.528倍、prefillは18.146倍です。

run prompt token prefill prompt速度 total
1 4,537 31,661.370ms 143.298 tok/s 34,572.885ms
2 4,537 31,540.018ms 143.849 tok/s 34,338.944ms
3 4,537 30,192.960ms 150.267 tok/s 33,217.874ms

入力が長くなると何倍遅くなった?

token中央値 token倍率 prefill中央値 prefill倍率 prompt tok/s
532 1.000 1.738秒 1.000 306.084
2,287 4.299 11.211秒 6.450 203.997
4,537 8.528 31.540秒 18.146 143.849

532→4,537 tokenprompt throughputは約53.0%低下しました。このmodelCPU backendbatchcontext深度では、一定tok/sで単純比例しませんでした。

llama.cpp server公式READMEprompt token数、prompt処理秒数、prompt tok/sgeneration指標と分けています。長文比較では生成tok/sだけを載せないことが重要です。

総待ち時間はどれくらい増えた?

token load中央値 prefill中央値 total中央値 wall中央値
532 約1.655秒 1.738秒 3.709秒 3.714秒
2,287 約1.650秒 11.211秒 13.514秒 13.518秒
4,537 約1.654秒 31.540秒 34.339秒 34.344秒

長文になるほどload約1.65秒よりprefillが支配的になりました。4,537 tokenではtotalの約91.8%がprefillです。

RAMはどれだけ増えた?

Docker statsの条件別最大は1,521.7MiB、1,537.0MiB、1,543.2MiBでした。532→4,537 tokenの差は21.5MiBです。

prompt token container RAM最大 532 token
532 1,521.7MiB 基準
2,287 1,537.0MiB +15.3MiB
4,537 1,543.2MiB +21.5MiB

これは0.5秒samplingで得たcontainer全体の最大値です。modelが小さく、contextも4.5K程度なので差が小さい結果でした。70Bや100K contextmemory増加を示すものではありません。

最初の実験はなぜ失敗した?

初回は文字列の反復数500・2,000・4,000を、そのままtoken相当と見込みました。しかしrecord-about-...という識別子がQwen tokenizerで約8 tokenへ分割され、実際は4,036・4,098・4,098 tokenとなりました。後ろ2条件はcontext境界へ丸められ、比較になりません。

初回もOOMなし、restart 0ready 9/9container RAM最大1,549.3MiBで終了しました。一時containerを削除し、実測比から反復数を62・250・500へ修正。本測定で532・2,287・4,537 tokenを得ました。

文字数や単語数をtoken数と思わず、APIが返す実tokenを確認することが、今回最も初心者が迷いやすい点でした。

XServer VPSへ長文処理を逃がせば速くなる?

速くなるとは限りません。今回4,537 tokencold prefillだけで31.540秒かかりました。GPUなしCPU VPSMacRTXの高速代替ではありません。

一方、夜間のログ整形、記事素材のchunk分割、検索index作成、非同期要約なら、自宅PCを塞がずに処理できます。「低遅延チャット」と「待てるバックグラウンド処理」を分けるのが現実的です。

公開中のAPIは影響を受けた?

確認 結果
ready check 9/9成功
database 全回ok
artifact storage 全回ok
OOM / restart false / 0
container CPU最大 303.17%、3 CPU上限のsampling境界
experiment container 削除済み

VPS available RAMは実験前3,282.2MiB、削除後3,286.7MiB。swap freeは前後1,928.8MiBでした。

XServer VPSで便利だった点は?

AIスマホ調査システムではどう長文を扱う?

スクリーンショット、UI XML、操作履歴、料金、errorを毎回promptへ全部貼ると、調査が続くほどprefillが伸びます。VPS側で次のように分けます。

  1. 生の画像とUI XMLartifact storageへ保存する。
  2. 操作eventは時刻・画面・action・結果の構造化JSONにする。
  3. 直近の必要部分だけをretrievalする。
  4. 完了区間は短い要約へ圧縮する。
  5. stable system promptを固定し、cacheを壊す可変IDを本文へ混ぜない。

「大きなcontext windowがあるから全部入れる」のではなく、一次証跡を保存したまま、推論へ渡す量を制御します。

よくある質問

この結果でMacよりRTXが速いと言える?

言えません。今回測ったのはGPUなしXServer VPSだけです。Mac/RTXは未所有・未測定です。

なぜ指定512・2048・4096と完全一致しない?

入力文字列をQwen tokenizerが分割した実数を採用したためです。比較値は532・2,287・4,537 tokenです。

長文ならRAMが急増するのでは?

今回は532→4,537 tokencontainer最大が21.5MiB増でした。小型model4.5K contextに限るため、大型modelへ外挿できません。

keep_alive=0は実運用より不利?

cache再利用を消すので、同じ会話の継続より不利です。cold prefillを条件間で揃えるために使いました。

VPSで長文処理する価値はある?

即時応答には遅い場合がありますが、自宅PCを塞がない非同期要約、chunk化、index作成には利用できます。

[PR]
VPSでいろいろ試すなら『XServer VPS』

Macの長いコンテキスト問題はXServer VPSで解決した?

判定は一部解決です。MacRTXの速度差は未検証です。一方、GPUなしVPSでも4,537 tokenを処理でき、prefill中央値31.540秒、total中央値34.339秒、RAM最大1,543.2MiBを一次情報として取得できました。

解決したのは「長文を速くする」ことではなく、prefillを独立して測り、長文処理を非同期workerへ分離する判断材料を作れたことです。AIスマホ調査では証跡を全部promptへ詰めず、VPSへ保存・構造化し、必要な部分だけを各agentへ渡す構成に進めます。

コメント

タイトルとURLをコピーしました