Windowsネイティブが優位!Ollama応答速度ベンチマーク【Gemma3検証】

この記事は約6分で読めます。
スポンサーリンク

ローカルPCで大規模言語モデル(LLM)を動かす際、Windowsネイティブ環境とWSL2(Ubuntu)環境のどちらがより快適か気になったので、計測してみました。
今回はIntel N100搭載のWindows 11マシンで、OllamaをWindowsとWSL2の両方にインストールし、まったく同じ条件で応答速度を比較しました。
「どちらが速いのか?」「安定して使えるのは?」といった疑問に、実際の計測データで答えます。

測定環境

  • ハードウェア: Intel N100搭載Windows 11 PC
  • 比較対象:
    • Windowsネイティブ(ポート11434)
    • WSL2 Ubuntu 24.04(ポート11435)
  • モデル: Gemma3
  • テスト条件: 「日本の首都はどこですか?回答は20字以内で」を10回連続実行 × 3セット

測定プログラム

import ollama
import time
import subprocess

def get_wsl_ip():
    """WSLのIPアドレスを動的取得"""
    result = subprocess.run(
        ['wsl', 'hostname', '-I'],
        capture_output=True, 
        text=True,
        check=True
    )
    return result.stdout.strip().split()[0]

TARGETS = {
    "Windows": {"host": "http://localhost:11434"},
    "WSL2": {"host": f"http://{get_wsl_ip()}:11435"}
}

MODEL_NAME = "gemma3"
TEST_PROMPT = "日本の首都はどこですか?回答は20字以内で"
NUM_REQUESTS = 10

def benchmark():
    """ベンチマークコア処理"""
    results = {}
    for target, config in TARGETS.items():
        client = ollama.Client(**config)
        times = []
        for _ in range(NUM_REQUESTS):
            start = time.perf_counter()
            client.generate(model=MODEL_NAME, prompt=TEST_PROMPT, stream=False)
            times.append(time.perf_counter() - start)
        results[target] = {
            'avg': sum(times)/len(times),
            'min': min(times),
            'max': max(times)
        }
    return results

計測結果一覧

測定回環境各試行応答時間(秒)平均最短最長変動幅
1回目Windows14.552, 0.843, 0.677, 0.726, 0.684, 0.736, 0.692, 0.711, 0.679,
0.712
2.1010.67714.55213.875
WSL257.871, 1.375, 1.200, 1.266, 1.077, 1.158, 1.098, 1.081, 1.153,
1.036
6.8311.03657.87156.835
2回目Windows7.394, 1.073, 0.947, 0.791, 0.829, 0.852, 0.766, 0.891, 1.838,
0.822
1.6200.7667.3946.629
WSL21.450, 2.147, 1.812, 0.969, 0.955, 0.847, 0.907, 0.804, 0.928,
0.901
1.1720.8042.1471.343
3回目Windows2.746, 0.674, 0.668, 0.679, 0.694, 0.675, 0.686, 0.675, 0.671,
0.677
0.8850.6682.7462.078
WSL20.712, 0.753, 0.706, 0.733, 0.759, 0.891, 0.745, 0.805, 0.774,
0.805
0.7680.7060.8910.185

計測結果と考察

  • 総合的にWindowsネイティブ環境の方が高速
    すべての測定回において、Windowsの方がWSL2よりも平均応答時間が短く、特に初回アクセス時の差は顕著でした。
    1回目の最大値で比較すると、Windowsが14.5秒、WSL2は57.8秒と、WSL2は極端な遅延が発生しました。
    2回目・3回目もWindowsの方が安定して速く、全体の平均値でもWindowsが約1.5秒、WSL2が約2.9秒と、Windowsが約2倍高速という結果です。
    ただし、少し時間をおいてから、アクセスした場合に、Windowsはちょっと初回のアクセスに時間がかかっていました。
  • Ollama起動時の初回アクセス時の遅延
    両環境とも初回アクセス時はモデルロードやキャッシュ初期化のため大きな遅延が発生しますが、特にWSL2では仮想化レイヤーやネットワークのオーバーヘッドが影響し、極端な遅延となる場合がありました。
  • 2回目以降の安定性
    2回目、3回目の測定では両環境とも応答速度が大幅に改善し、1秒未満で安定するケースも増えました。それでも基本的にはWindowsネイティブ環境の方が一貫して速い傾向が見られました。
    ただし、初回だけは、WSL環境の方が速かったです。
  • 用途ごとの使い分け
    初回アクセスの遅延が許容できない用途や、単発のリクエストが多い場合はWindowsネイティブ環境が最適です。
    連続したバッチ処理や長時間の利用ではWSL2も十分に実用的ですが、総合的なパフォーマンスではやはりWindows側が優位です。

まとめ

今回の検証から、OllamaをIntel N100搭載PCで使う場合はWindowsネイティブ環境の方が応答速度早いことが分かりました。
まぁ、そらそうですよね。。。

WSL2環境でも連続利用時には十分なパフォーマンスを発揮しますが、極端な遅延が発生するリスクもあるため、パフォーマンス重視ならWindowsネイティブ環境が最適と言えるでしょう。

ローカルLLMの運用を検討している方は、ぜひ本記事のデータを参考に、最適な環境選択を行ってみてください。

WSL側はポート番号を変えて試しています。ポート番号の変更の仕方を知りたい方はこちらを参考にしてください。

コメント

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