ローカルAIの速度を測る方法|LM Studio・Ollamaでtokens/s・メモリ・VRAMを比較
- 公開日
- 2026-07-14
- 更新日
- 2026-08-10
- 情報確認日
- 2026-08-10
- 編集・運営
- Local AI Compass
ローカルAIの「遅い」は、モデルの読み込みが遅いのか、最初の1トークンまでが長いのか、生成中のtokens/sが低いのかで対策が変わります。LM StudioとOllamaを同じ条件で測り、RAM・VRAM・モデルサイズ・コンテキストを一緒に記録すると、感覚ではなく再現できる判断になります。
導入前に確認すること
- Windowsのバージョン、メモリ容量、GPU/VRAM、空き容量を確認する
- 最初は軽量モデル、短い質問、少ない同時作業から始める
- 公式サイトの対応OS、利用規約、モデルのライセンスを確認する
症状別クラスターから速度を測る
「遅い」をロード、Prompt Processing / TTFT、generationへ分けたら、LM StudioのPrompt Processing記事やOllamaのAPI usageへ進みます。速度記事は特定の快適ラインを決めるページではなく、同じPC・モデル・contextで再現条件を残す測定ページです。
| 症状 | 測定項目 | 次に読む |
|---|---|---|
| LM Studioの最初の1文字が遅い | Prompt Processing / TTFT、入力長、履歴 | Prompt Processing記事を確認 |
| Ollamaの返答開始が遅い | prompt_eval_count/duration、context、PROCESSOR | Ollama速度記事を確認 |
| 文字が出た後に遅い | generation、eval_count/duration、GPU/CPU | 速度条件を固定して測る |
| 途中で終了する | 完走、done/done_reason、RAM/VRAM、ログ | LM Studio/Ollamaの途中停止記事を確認 |
- LM StudioのPrompt Processingが遅い - 入力処理と最初の文字までを分ける
- Ollamaが遅い - API usageとPROCESSORを読む
- LM Studioの生成中も遅い - generationの条件を固定して測る
- LM Studioの回答が途中で止まる - 正常終了と途中停止を分ける
- Ollamaの回答が途中で止まる - done_reasonとログを記録する
agentを測る時は1往復で終わらせない
agentではTTFTやtokens/sだけでなく、tool call回数、総時間、peak RAM/VRAM、ファイルI/O、失敗・再試行を記録します。同じmodel・同じ入力・同じtoolで比較し、機種一般の速度へ広げません。
- agent workload PC負荷 - 計測項目の分解を見る
MTPのA/B比較を追加する
| 固定するもの | baseline / MTP |
|---|---|
| GGUF | 同じrepo、revision、quant、ファイル |
| 入力 | 同じprompt、言語、seed、sampling |
| 負荷 | 同じcontext、batch、GPU layers、Flash Attention |
| 記録 | TTFT、prompt processing、generation tokens/s、peak VRAM、accepted tokens |
| MTP | off / draft-mtp、n-max=1/2 |
MTPの速度差はgenerationだけでなく、prompt processing、TTFT、peak VRAM、accepted draft tokens、失敗条件まで分けて記録します。Qwen3.6-27BのColab結果を別モデルや別GPUへ一般化しません。
- Qwen3.6-27B Colab実践 - 同じpromptでbaselineとMTPを動かす
- MTPの設定と受理率 - n-maxとaccepted tokensを読む
まず結論:速度は1つの数字で決めない
最初に記録するのは、モデルを使える状態にするまでの読み込み時間、入力を送ってから最初のトークンが出るまでの時間、生成中のtokens/s、ピーク時のRAMとVRAMです。どれか1つだけ速くても、ロードに毎回時間がかかる、長文で止まる、Windows全体が重くなるなら実用性は別に判断します。
起動直後やモデル切り替えの待ち時間。ストレージ、モデルサイズ、メモリ余白を確認します。
入力を送って最初のトークンが出るまで。入力長、コンテキスト、prefillの影響を受けます。
回答を生成している間の速さ。GPUオフロード、量子化、冷却、CPU負荷を切り分けます。
30秒で測定条件を固定する
比較を始める前に、可能なら同一のGGUFファイルを使います。ファイルをそろえられない場合は、同じベースモデル・同じリビジョン・同じ量子化・同じ変換条件をそろえ、配布形式が違う場合は「ツール差」だけでなくファイル差も含む別比較として記録します。コンテキスト長、同じ入力文、同じ出力上限もメモし、サンプリング設定やGPUオフロードを変えた場合は別の測定として扱います。
- Windowsを再起動する必要はありませんが、ブラウザの大量タブ、同期、動画編集、ゲームなど、結果へ影響しそうな処理を閉じます。閉じたものを記録します。
- モデル名、GGUFファイル名、ファイルサイズ、量子化、コンテキスト長、GPUオフロード設定を記録します。
- 短い固定プロンプトと出力上限を用意し、同じ順番でLM StudioとOllamaを測ります。
- 冷たい開始と、同じモデルをもう一度呼んだ暖かい開始を分けます。初心者がばらつきを確認する最低限の目安として、同じ条件を3回程度測り、中央値と最小・最大を残します。厳密な検証や公開比較では回数を増やしてください。
指標の意味:モデル読込・TTFT・tokens/s
- モデル読み込み
- モデルファイルを読み込み、推論を開始できる状態までの時間。LM Studio REST APIではload_time_secondsが返る場合があります。
- TTFT
- Time to First Token。入力を受け取って最初のトークンが表示されるまでの時間。入力が長いほど変わりやすい指標です。
- prefill
- 入力プロンプトを処理する段階。入力長、コンテキスト、eval batchなどの条件を変えると比較できなくなります。
- decode
- 回答を1トークンずつ生成する段階。tokens/sやTPOTはこの段階の見え方を表します。
- ピークRAM・VRAM
- タスクマネージャー等で観察した最大値。モデルのファイルサイズと同じではなく、OSや他アプリの使用分も含めて読みます。
Windowsで先に記録するもの
| 優先度 | 項目 | 記録例 | なぜ必要か |
|---|---|---|---|
| 最低限 | PC | CPU名、RAM容量、GPU名、専用VRAM、Windowsの版 | 同じモデルでもハードウェアと空きメモリで結果が変わるため |
| 最低限 | モデル | ベースモデル・リビジョン、GGUF名、量子化、ファイルサイズ | モデルと量子化を変えた比較にならないようにするため |
| 最低限 | 実行条件 | LM Studio/Ollamaの版、backend/engine、コンテキスト、GPUオフロード、Processor | ランタイムと配置の差を後から再現するため |
| 最低限 | 入力・出力 | 固定プロンプト、実入力トークン数(取れる場合)、出力上限、サンプリング | TTFTと生成速度の比較条件をそろえるため |
| 最低限 | 観測値 | ロード時間、TTFT、tokens/s、ピークRAM、ピーク専用VRAM・共有メモリ | 「遅い」「止まる」の場所を次の記事へ戻すため |
| 最低限 | 状態 | 冷たい開始・暖かい開始、他アプリ、測定回数、中央値、最小・最大 | キャッシュとバックグラウンド処理を混ぜないため |
| 詳細 | 環境差 | ドライバ、冷却・温度状態(取れる場合)、電源モード、長時間負荷の有無 | Windows PC固有の再現条件を残すため |
| 詳細 | 再現情報 | APIレスポンス、設定JSON、ログ、未確認項目 | 数値が取れない場合も推測で埋めないため |
- 公開する記録では、ユーザー名、PC名、個人ファイルのパス、秘密や業務プロンプトを伏せます。取れない項目は空欄にせず「未確認」と書きます。
公平な比較条件
| そろえるもの | LM StudioとOllamaでの確認 | 変えた場合 |
|---|---|---|
| モデル | 可能なら同じGGUFファイル。無理なら同じベースモデル・リビジョン・量子化・変換条件 | 配布形式が違う場合は、ツール差とファイル差を含む比較として扱う |
| 入力 | 同じ文面と同じ言語、できれば固定文字列を使う | TTFTの比較から外し、入力長を別記録する |
| 出力 | 同じ最大出力と同じ停止条件にする | 生成速度の数値を直接並べない |
| コンテキスト | 同じcontext lengthを明示する | 長文条件として別の結果にする |
| オフロード | GPU layersやProcessorの状態を記録する | CPU実行、部分オフロード、GPU実行を分ける |
| 開始状態 | ロード直後と再実行を分ける | cold/warmの比較としてラベルを付ける |
- 乱数やサンプリングが完全に同じにならない場合は、速度の比較と回答品質の比較を分けます。回答の内容が違うことを速度差の根拠にしません。
- タスクマネージャーのGPU使用率はエンジンごとの表示場所や瞬間値を含むため、GPUグラフだけでオフロード完了と断定しません。設定、Processor表示、専用VRAM、実行ログを合わせます。
- 3回の平均だけでなく中央値と最小・最大を記録します。最初の1回だけ遅いなら、ロードやキャッシュの違いを疑います。
LM Studioで測る手順
LM Studioは画面操作で始めやすい一方、モデル別の設定とサーバー/APIの設定が別の場所にあります。まずチャット画面で同じ条件を測り、必要な場合だけREST APIやLocal Serverへ進みます。
- My Modelsから測るモデルを選び、モデル名、GGUFファイル、量子化、ファイルサイズを記録します。モデルの設定画面でコンテキストサイズ、GPUオフロード、Flash Attentionを確認します。
- タスクマネージャーのパフォーマンスで、CPU、メモリ、GPUの専用メモリと共有メモリを表示してからモデルをロードします。ロード開始と完了の時刻を記録します。
- 短い固定プロンプトを送り、最初のトークンまでの時間と、生成中に表示されるtokens/sを記録します。表示されない場合は、開始時刻、最初の表示時刻、完了時刻と出力トークン数を残します。
- 同じモデルを再実行し、coldとwarmを分けます。設定を変えたら、GPUオフロードやコンテキストの変更内容を新しい測定行にします。
| 公式情報 | 画面・記録項目 | 記事での扱い |
|---|---|---|
| モデル別設定 | GPUオフロード、コンテキストサイズ、Flash Attention | 設定を固定してから比較する |
| RESTモデル読み込み | context_length、eval_batch_size、load_time_seconds | APIを使う人の再現用ログとして使う |
| Local Server | Developerタブ、lms server start、ポート | チャット測定とサーバー測定を混同しない |
Ollamaで測る手順
Ollamaでは、APIの最後のレスポンスにロードと評価の時間が含まれる場合があります。時間の単位はナノ秒なので、秒へ直す式と、ストリーミング中の表示時間を混ぜないことを確認します。
- 測るモデルを1つだけ呼び出し、同じモデル名、コンテキスト長、入力文、出力上限を使います。環境変数や同時実行を変えた場合は別条件です。
- ollama psでCONTEXTとPROCESSORを確認し、CPU実行・GPU実行・部分配置のどれかを記録します。ピークRAMとピークVRAMはWindowsタスクマネージャーなどで別に観察します。
- APIを使う場合は、最後のチャンクにあるtotal_duration、load_duration、prompt_eval_count、prompt_eval_duration、eval_count、eval_durationを保存します。
- load_durationをモデルロード、prompt_eval_durationを入力処理、eval_durationを生成処理として分け、eval_count ÷ eval_duration × 1,000,000,000で生成tokens/sを計算します。
| APIフィールド | 意味 | 計算・注意 |
|---|---|---|
| total_duration | ロード、入力処理、生成などを含むリクエスト全体の時間 | 生成tokens/sにはeval_count/eval_durationを使う |
| load_duration | モデル読み込み時間 | cold/warmを分けて記録する |
| prompt_eval_count / prompt_eval_duration | 入力トークン数と入力プロンプトの処理時間 | TTFTを構成する要素の一つだが、ロードやその他の待ち時間を含むTTFTそのものではない |
| eval_count / eval_duration | 生成トークン数と生成処理時間 | eval_count ÷ eval_duration × 1,000,000,000でtokens/sへ換算 |
LM StudioとOllamaを同じPCで比べる
2つのランタイムを比べる場合、同じPCで同じモデルを順番に動かすだけでは、キャッシュ、バックグラウンドプロセス、GPUメモリの残り方がそろわないことがあります。結果は「この条件での観察」として残し、ツール全体の優劣へ広げません。
| 比較の順番 | やること | 残すもの |
|---|---|---|
| 1 | LM Studioでロード、固定入力、固定出力を測る | ロード、TTFT、tokens/s、RAM/VRAM、設定 |
| 2 | モデルをアンロードまたはアプリを閉じ、状態を記録する | 冷たい開始か、同じPC状態か |
| 3 | Ollamaで同じモデルと条件を測る | APIメトリクス、ollama ps、RAM/VRAM |
| 4 | 各条件を3回程度繰り返し、中央値と最小・最大を比べる。厳密な比較は回数を増やす | 測定回数、中央値、最小・最大、例外 |
測定結果を症状へ戻す
| 見えた症状 | 最初に見る値 | 次に読む記事 |
|---|---|---|
| モデルロードだけ遅い | ファイルサイズ、ストレージ、ロード時間、空きRAM/VRAM | モデルサイズとGGUF読み込みの確認 |
| 最初のトークンだけ遅い | 入力長、コンテキスト、prompt/prefill、RAM/VRAM | コンテキスト長と文書・RAGの負荷 |
| 生成中のtokens/sが低い | GPUオフロード、Processor、CPU/GPU、冷却 | LM StudioのGPUオフロード確認 |
| 途中で止まる・極端に重い | ピークRAM/VRAM、共有メモリ、コンテキスト、他アプリ | LM Studioが遅い・途中で止まる時の症状別ハブ |
| 再実行だけ速い | cold/warm、load_duration、キャッシュ | ロード時間と生成時間を分けて記録 |
- LM Studioが遅い・途中で止まる時の症状別チェック - 症状をロード・prefill・decode・メモリへ分ける
- LM StudioのGPUオフロードとは? - CPU 100%やGPU使用率を設定と合わせて読む
- ローカルAIのモデルサイズ早見表 - ファイルサイズとPCの余白を分けて考える
- メモリ8GB・16GB・32GBで始める前に - 空き容量とピーク使用量を記録する
- コンテキスト長とは? - 長文やPDFで重くなる条件を固定する
RAM・VRAM・モデルサイズ・contextの関係
モデルのファイルサイズは必要メモリの目安にはなりますが、実行中のピークRAMやVRAMそのものではありません。重み、ランタイムの作業領域、KVキャッシュ、Windowsと他アプリを分けて測ります。
- モデル重み
- GGUFファイルの主な大きさ。Q4/Q5/Q8など量子化で変わりますが、ファイルサイズだけで速度や品質を断定しません。
- ランタイムの作業領域
- ロード、バッチ、GPUオフロードなどに必要な実行時の領域。アプリや設定で変わります。
- KVキャッシュ
- 会話や入力をコンテキスト内で保持するための領域。コンテキスト長を増やすほど負荷が増える場合があります。
- Windows・他アプリ
- OS、ブラウザ、同期、セキュリティソフトなどが使う領域。ローカルAIへ全容量を割り当てられるわけではありません。
GPU使用率が低い・CPU 100%をどう読むか
GPU使用率が低いことだけで「GPUが使われていない」と決めません。どのGPUエンジンを見ているか、専用VRAMが増えているか、設定上のGPU layersやProcessor表示が何を示すかを合わせます。Windowsの表示は環境やバージョンで見え方が変わるため、瞬間値ではなく測定中のピークと設定を残します。
| 観察 | 考えられる状態 | 確認 |
|---|---|---|
| CPU 100%・GPUがほぼ変化しない | CPU中心、オフロード不足、または見ているGPUエンジンが違う | GPU layers、Processor、専用VRAM、設定とログ |
| GPUと専用VRAMが増える | 一部または全部をGPUで処理している可能性 | モデル設定とProcessorを合わせて確認 |
| 共有GPUメモリが増える | 専用VRAMからあふれた、または共有メモリを使っている可能性 | RAMのピークとWindowsのメモリ圧迫を確認 |
| 測定中だけ使用率が跳ねる | 処理段階やバッチによる瞬間値 | ロード・prefill・decode別に記録 |
よくある誤測定
- ファイルサイズだけを比べ、量子化、コンテキスト、オフロード、RAMの余白を記録していない。
- 最初のロード待ちを生成速度へ含めたり、逆にロード時間を無視して「速い」と判断している。
- 入力文や出力長が違うままtokens/sを比較している。
- タスクマネージャーの一瞬のGPU使用率だけで、モデル全体がVRAMに載ったと断定している。
- Apple SiliconやデータセンターGPUの論文値を、そのままWindowsノートPCの目標値として扱っている。
測定に失敗した場合は、まずモデルを1つ、短い入力、短い出力、標準的なコンテキストへ戻します。それでも途中で止まるなら、同時起動アプリを減らし、ピークRAM・VRAMとエラー表示を保存して、症状別ハブへ戻ります。
llama-benchを使う発展測定
llama.cppのllama-benchは、アプリの画面表示ではなく、prompt processing(pp)、text generation(tg)、prompt processing後にgenerationを続けるpgを反復して比較する開発者向けの方法です。GPU layersやFlash Attentionなどの条件を明示できますが、トークナイズやサンプリングなどを含まないため、チャット画面の体感と同じ値ではありません。PowerShellではモデルパスを引用符で囲みます。
llama-bench -m "C:\models\example.gguf" -p 512 -n 128 -r 5 -o json
llama-bench -m "C:\models\example.gguf" -pg 512,128 -r 5 -o json
| 項目 | 読むもの | 注意 |
|---|---|---|
| pp | 入力プロンプト処理 | 入力長とbatch条件を固定する |
| tg | 生成処理 | チャット画面の全体時間ではない |
| pg | 入力処理後に生成する流れ | 実運用の条件に近づけるが、同一ではない |
| 反復と標準偏差 | 平均とばらつき | 1回の最高値だけを採用しない |
コピーして使う測定記録テンプレート
以下をそのままメモに貼り、条件を変えるたびに新しい行を追加します。数値が取れない項目は空欄にせず、「表示なし」「未確認」と書くと後から誤解しにくくなります。公開するときは、ユーザー名、PC名、個人ファイルのパス、秘密や業務プロンプトを削除または伏せます。
## ローカルAI実測記録
- 測定日:
- PC / Windows:
- CPU:
- RAM容量 / 測定中のピークRAM:
- GPU / 専用VRAM / 測定中のピークVRAM:
- ランタイム / バージョン:
- backend / engine:
- モデル / GGUFファイル / 量子化 / ファイルサイズ:
- モデルリビジョン / 変換条件:
- コンテキスト長:
- GPUオフロード / Processor:
- Flash Attention / eval batch:
- 入力プロンプト(固定文):
- 実入力トークン数(分かれば):
- 出力上限:
- 冷たい開始 or 暖かい開始:
- モデル読み込み時間:
- TTFT(最初のトークンまで):
- 生成tokens/s:
- 測定回数 / 中央値 / 最小 / 最大:
- 同時起動していたアプリ:
- ドライバ / 電源モード / 冷却・温度状態(分かれば):
- 観察した症状・エラー:
- 次に変える条件(1つだけ):測定後の判断フロー
- ロードだけが遅いなら、ストレージ、モデルサイズ、空きRAM/VRAMを確認し、モデルを小さくする前に「どの段階が遅いか」を確定します。
- TTFTが遅いなら、入力長、コンテキスト長、PDF/RAGの検索処理、prefill条件を分けて測ります。
- 生成中のtokens/sが遅いなら、GPUオフロード、CPU 100%、GPUエンジン、冷却、量子化を1つずつ確認します。
- 途中で止まる、Windows全体が重いなら、ピークRAM/VRAMと共有メモリを確認し、同時起動アプリとコンテキストを減らして再測定します。
- 条件を1つ変えた再測定で改善したものだけを採用し、複数の設定を同時に変えた結果は原因不明として残します。
- ローカルAI用PCスペックの見方 - 購入前・手持ちPCの条件を読む
- GPUなしPCでローカルAIは使える? - 動くと快適の差を測って判断する
- VRAMとは? - GPUメモリを専用・共有に分ける
- GGUFとは? - 形式、配布元、量子化を分けて確認する
公式情報・論文と自分の測定を分ける
| 種類 | この記事で使う範囲 | Windowsへの扱い |
|---|---|---|
| 公式ドキュメント | 設定名、APIフィールド、コマンド、表示場所を確認する | 現在の仕様として参照するが、PCごとの速度は測る |
| 論文・プレプリント | TTFT、TPOT、TPS、長文、量子化などの用語と研究上の測定方法を知る | 対象ハードウェアと条件を明記し、Windowsへ数値を一般化しない |
| 自分の測定 | PC、モデル、ランタイム、条件、結果を再現可能に残す | このPC・この条件での観察として判断する |
一次情報に設定やAPIの説明があっても、あなたのPCの速度を保証するわけではありません。論文の実験結果も、対象ハードウェア、モデル、ドライバ、ランタイム、測定方法が違えば同じ結果になりません。
- 公式:LM Studioのモデル別設定 - GPUオフロード、コンテキスト、Flash Attentionの設定位置を確認する
- 公式:LM Studio REST APIのモデル読み込み - context_length、eval_batch_size、load_time_secondsを確認する
- 公式:Ollama APIの使用量メトリクス - ナノ秒の時間値とcount/durationの対応を確認する
- 公式:Ollama FAQのProcessor表示 - CPU・GPU・部分配置の表示を確認する
- 論文:LIFEの推論性能モデル - TTFT・TPOT・TPSの研究上の扱いと適用範囲を確認する
- Local AI Compassの診断基準・測定の前提 - 公式情報と自分の実測を分ける基準を見る
2026年8月時点の公式APIで測定値を固定する
画面に表示されるtokens/sとAPIの完了メトリクスは、同じ記録表に入れても列を分けます。現行のOllama APIはロード・入力処理・生成を別のcount/durationで返し、LM Studioのnative `POST /api/v1/chat`は`stats`に入力・出力トークン、tokens/s、TTFTなどを返すためです。
| runtime | 公式APIで確認できる値 | 記録時の注意 |
|---|---|---|
| Ollama `/api/chat`・`/api/generate` | `total_duration`、`load_duration`、`prompt_eval_count`、`prompt_eval_duration`、`eval_count`、`eval_duration`、`done_reason`。時間の単位はナノ秒。 | `eval_count ÷ eval_duration × 1,000,000,000`は生成tokens/sの派生値として記録し、ロード・入力処理・生成の時間を混ぜない。 |
| LM Studio native `POST /api/v1/chat` | `stats`の`input_tokens`、`total_output_tokens`、`reasoning_output_tokens`、`tokens_per_second`、`time_to_first_token_seconds`、任意の`model_load_time_seconds`。 | `input_tokens`にはformatting、tool定義、過去メッセージが含まれ得るため、履歴・tool・`context_length`・モデルのロード状態を固定する。 |
| context・parallel | Ollamaの`num_ctx`・`OLLAMA_CONTEXT_LENGTH`、LM Studioの`context_length`、同時要求数やparallel設定。 | 1要求のTTFT・生成速度と、複数要求の合計throughputを別の測定として記録する。 |
LM Studioで`stream: true`を使う場合は、最初に表示された文字だけで成功と判定しません。公式のstreaming eventsは`chat.start`から始まり、通常は`chat.end`に集約された`stats`を含めて終わります。途中で`error`が出ても`chat.end`が送られる場合があるため、`error`、最終`chat.end`、完走・部分出力の状態を別列で保存します。
APIの公式フィールドは取り方をそろえる助けになりますが、別runtime・別モデル・別PCの速度を自動的に同列比較できるという意味ではありません。入力、出力上限、context、engine、offload、cold/warm、parallel数を固定し、設定変更は1つずつにします。
- Ollamaは`/api/chat`または`/api/generate`の完了レスポンスを保存し、ナノ秒の項目を秒へ換算してロード・prompt・生成を別列にします。`done_reason`も残します。
- LM Studioは現行native `POST /api/v1/chat`を使う場合、`stats`、`context_length`、履歴やtool定義の有無、モデルが既にロード済みかを保存します。
- 同じ固定入力をcold/warm、parallel 1/複数要求で分け、TTFT・生成tokens/s・総時間・peak RAM/VRAMを比較します。
- tool、PDF、RAGを追加する場合は、input tokens・tool call・抽出・embedding・検索の時間をモデル生成と別に記録します。
- 公式:LM Studio native chat API - POST /api/v1/chatのrequest、context_length、statsを確認する
- 公式:LM Studio streaming events - 完了時のstatsを測定ログへ保存する方法を確認する
- 公式:Ollama Generate API - done_reasonと完了メトリクスを確認する
- 公式:Ollama Chat API - チャットの最後のレスポンスを測定対象にする
- 公式:Ollamaのコンテキスト長 - num_ctxとメモリ条件を分けて記録する
次に読む順番
測定値を得たら、数字を集め続けるより、症状に対応する記事へ戻って1つだけ条件を変えるほうが実用的です。
よくある質問
tokens/sはいくつなら快適ですか?
PC、モデル、入力長、量子化、コンテキスト、用途で変わるため、共通の合格ラインは置きません。同じ条件で測り、自分が待てるかとWindows全体が重くならないかで判断します。
TTFTとtokens/sは何が違いますか?
TTFTは入力後に最初のトークンが出るまで、tokens/sは生成中にどれだけの速さで続くかです。長い入力でTTFTだけが遅い場合と、生成全体が遅い場合では対策が変わります。
LM StudioとOllamaの速度を直接比べられますか?
可能なら同じGGUFファイルを使い、難しければ同じベースモデル、リビジョン、量子化、変換条件、入力、出力、コンテキスト、オフロード条件をそろえれば条件付きで比較できます。配布形式が違う場合はファイル差も含む比較として記録し、結果をすべてのPCの優劣へ一般化しません。
GPU使用率が低いとGPUオフロードできていませんか?
GPU使用率の瞬間値だけでは判断できません。GPU layersやProcessor、専用VRAM、GPUエンジン、実行ログを測定条件と合わせて確認します。
モデルのファイルサイズが小さければ速いですか?
必ずしもそうではありません。モデルサイズはロードやメモリの目安ですが、コンテキスト、ランタイム、GPUオフロード、CPU、冷却、入力長でも結果が変わります。
コンテキスト長を下げると必ず速くなりますか?
長文入力や大きなKVキャッシュが負荷になっている条件では改善する可能性があります。ただし、短い入力の生成速度や別のボトルネックが同じとは限らないため、変更前後を測ります。
最初の1回だけ遅いのは異常ですか?
モデル読み込みやキャッシュの違いで、冷たい開始が暖かい開始より遅く見えることがあります。ロード時間と生成時間を分け、cold/warmの両方を記録してください。
PDFやRAGが遅い場合もtokens/sを測れば分かりますか?
生成中のtokens/sだけでは不十分です。PDF抽出、埋め込み、検索、コンテキスト投入、TTFTを分け、モデル単体の測定と文書処理の測定を別にします。
llama-benchの値をLM Studioの画面と同じだと考えてよいですか?
同じではありません。llama-benchはprompt processingやtext generationを反復する開発者向け測定で、トークナイズやサンプリングなどを含まないため、チャット画面の体感と分けて読みます。
何を記録すれば後から原因を再現できますか?
PC、Windows、ランタイムの版とbackend、モデルのベース名・リビジョン・GGUF・量子化・変換条件、コンテキスト、GPUオフロード、固定入力と実入力トークン数、出力上限、cold/warm、ロード時間、TTFT、tokens/s、ピークRAM・専用VRAM・共有メモリ、測定回数、ドライバや冷却状態を残します。公開時はユーザー名、PC名、個人パス、秘密や業務プロンプトを伏せます。
Ollamaのeval_durationからtokens/sを計算できますか?
できます。完了レスポンスのeval_countをeval_duration(ナノ秒)で割り、1,000,000,000を掛けた派生値として記録します。ただし、これは生成中の速度であり、ロード時間、入力処理、TTFT、total_durationそのものではありません。
LM Studioの現行native APIで何を記録しますか?
POST /api/v1/chatのstatsからinput_tokens、total_output_tokens、reasoning_output_tokens、tokens_per_second、time_to_first_token_secondsを記録し、返る場合はmodel_load_time_secondsも残します。input_tokensにはformatting、tool定義、過去メッセージが含まれ得るため、履歴、tool、context_length、モデルのロード状態も併記します。
parallel requestsを速度比較に含める時の注意は?
単一要求のTTFTや生成tokens/sと、複数要求を同時に処理した合計throughputは別指標です。要求数、context、モデル、入力、出力上限、ロード状態を固定し、parallel 1と複数要求を別行で測ります。
速度記事のtokens/sを新規トラブル記事へそのまま移せますか?
そのまま移せません。tokens/sはモデル、入力、出力、context、runtime、PC状態の条件付きの値なので、各自の測定値として記録します。
次に読むおすすめルート
GPUなし・低スペックPCの人
軽量モデル、メモリ別の目安、重いときの確認ポイントを先に見ます。
- ローカルAI用PCスペックの見方
- GPUなしPCで使える範囲を整理
- GPUなしで音声を文字起こしする
- 古いWindows PCでLM Studioを使うなら
- 中古PCでローカルAIは使える?
- ミニPCでローカルAIは使える?
- メモリ別に始める前に知ること
- GPUオフロードとは
- Google ColabでQwen3.6-27Bを動かす
- MTPとspeculative decoding
- Colab T4のGGUF OOM対策
- Gemma 4 12Bの更新メモ
- 重い・動かないときの確認ポイント
- 診断ページ
あなたはどのタイプ?
- 初めてローカルAIを触る人 - まず全体像をつかみ、LM StudioとOllamaの違い、モデルサイズの考え方を順番に確認します。
- LM Studio・Ollamaの症状別トラブルを解決したい人 - 起動、モデルロード、Prompt Processing、generation、API接続、GPU確認をツール別に分けて読みます。
- GPUなし・低スペックPCの人 - 軽量モデル、メモリ別の目安、重いときの確認ポイントを先に見ます。
- PDFや資料を読ませたい人 - 先に基本を押さえ、モデル単体の確認後にAnythingLLMへ進みます。
- ローカルAIエージェントを試したい人 - Bionic、Ollama、AnythingLLM、Hermesを役割別に分け、local/cloud、tool、保存、PC負荷を順番に確認します。
- 開発・API連携したい人 - LM StudioとOllamaの違いを確認し、API、長文処理、RAGまで段階的に進みます。
関連チェック先
- [公式] LM Studioのモデル別設定 - モデルごとのGPUオフロード、コンテキストサイズ、Flash Attentionなどの設定を確認する公式ドキュメント。
- [公式] LM Studio REST APIのモデル読み込み - context_length、eval_batch_size、load_time_secondsなど、読み込み条件と結果を確認できる公式ドキュメント。
- [公式] Ollama API Usage - total_duration、load_duration、prompt_eval_duration、eval_durationなどを確認します。
- [公式] Ollama Context length - context length、VRAM別の既定値、メモリ負荷、ollama psの見方を確認します。
- [公式] Ollama FAQ - ollama psのPROCESSOR表示とCPU/GPU分割、環境変数の公式説明を確認します。
- [公式] llama.cpp llama-bench - prompt processing、text generation、複数回の反復、GPU layersを比較する開発者向けベンチマーク。
- [公式] Windowsのシステム構成ツール - タスクマネージャーでCPU、メモリ、ディスクなどを確認するWindows公式案内。
- LM Studio native chat API公式Docs - 現行native endpointであるPOST /api/v1/chatのリクエストとレスポンスを確認します。
- [公式] LM Studio REST APIのStreaming events - model_load、prompt_processing、message、error、chat.endのイベントを確認します。
- [公式] Ollama Generate API - done、done_reason、使用量フィールド、ストリーミング最終チャンクを確認します。
- [公式] Ollama Chat API - チャットAPIの応答フィールドとストリーミング時の記録項目を確認します。
- [論文・プレプリント] Forecasting LLM Inference Performance via Hardware-Agnostic Analytical Modeling - TTFT、TPOT、TPSと、量子化やKVキャッシュなどの要因を扱う研究。Windows固有の速度保証ではありません。
- [論文・プレプリント] Production-Grade Local LLM Inference on Apple Silicon - Apple SiliconのM2 Ultra・192GB unified memoryで、TTFT、定常スループット、長文、量子化などを比較した研究。Windows PCへ一般化しません。
- Introducing LM Studio 0.4.0 - llmster、parallel requests、Unified KV Cache、Developer Mode、歴史的な/v1/chat案内、permission keysの公式発表です。
- [公式] LM Studio REST API - native v1 REST API、OpenAI互換API、モデルロードとprompt processingの違いを確認します。
- [公式] Ollama List running models - 実行中モデルのsize_vram、context_length、quantization_levelなどを確認します。