ローカル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回目 | Windows | 14.552, 0.843, 0.677, 0.726, 0.684, 0.736, 0.692, 0.711, 0.679, 0.712 | 2.101 | 0.677 | 14.552 | 13.875 |
WSL2 | 57.871, 1.375, 1.200, 1.266, 1.077, 1.158, 1.098, 1.081, 1.153, 1.036 | 6.831 | 1.036 | 57.871 | 56.835 | |
2回目 | Windows | 7.394, 1.073, 0.947, 0.791, 0.829, 0.852, 0.766, 0.891, 1.838, 0.822 | 1.620 | 0.766 | 7.394 | 6.629 |
WSL2 | 1.450, 2.147, 1.812, 0.969, 0.955, 0.847, 0.907, 0.804, 0.928, 0.901 | 1.172 | 0.804 | 2.147 | 1.343 | |
3回目 | Windows | 2.746, 0.674, 0.668, 0.679, 0.694, 0.675, 0.686, 0.675, 0.671, 0.677 | 0.885 | 0.668 | 2.746 | 2.078 |
WSL2 | 0.712, 0.753, 0.706, 0.733, 0.759, 0.891, 0.745, 0.805, 0.774, 0.805 | 0.768 | 0.706 | 0.891 | 0.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側はポート番号を変えて試しています。ポート番号の変更の仕方を知りたい方はこちらを参考にしてください。
コメント