Qwen Image EditでLoRAを使っていると、初回は1時間かかるのに、2回目からは10分で終わるという現象に気づいた方も多いのではないでしょうか。しかも、プログラムを再起動しても2回目以降は速いまま。この記事では、その理由をキャッシュの仕組みから丁寧に解説します。
結論:2種類のキャッシュが組み合わさっている
速度差の正体は、主に以下の2つのキャッシュ機構です。
- OSのページキャッシュ(RAMへのファイルキャッシュ)
- CUDA / Tritonカーネルのコンパイルキャッシュ(ディスクへの保存)
それぞれ詳しく見ていきましょう。
① OSのページキャッシュ(最大の要因)
LoRAやベースモデルの重みファイルは数GBにおよびます。初回実行時はこれをSSDやHDDから読み込む必要があるため、I/Oに時間がかかります。
初回: ストレージ(SSD/HDD) → RAM → GPU ← 遅い
2回目: RAM(キャッシュ済み) → GPU ← 速い
OSは一度読み込んだファイルデータをRAMのページキャッシュとして保持し続けます。重要なのは、プログラムを再起動してもOSは動き続けているため、このキャッシュは消えないという点です。
そのため、アプリを落として再度起動しても、2回目以降はRAMから高速に読み込めます。
💡 確認方法:
free -hコマンドでbuff/cacheの列を見ると、OSページキャッシュの使用量が確認できます。
⚠️ キャッシュを意図的にクリアしたい場合:
sudo sync && sudo echo 3 > /proc/sys/vm/drop_caches
これを実行すると、再び初回と同じ遅さに戻ります。
② CUDA / Tritonカーネルの JITコンパイルキャッシュ
初回実行時、GPUで動く演算カーネルをその場でコンパイル(JIT)する処理が走ります。LoRAのアーキテクチャに合わせた専用カーネルが生成されるため、これが時間のかかる原因の一つです。
コンパイル結果はディスク上にファイルとして保存されるため、プログラムを再起動しても再利用されます。
~/.nv/ComputeCache/ ← NVIDIA CUDAカーネルキャッシュ
~/.triton/cache/ ← Tritonカーネルキャッシュ
~/.cache/torch/ ← PyTorchコンパイルキャッシュ
③ HuggingFaceモデルキャッシュ(補助的要因)
モデルの設定ファイルやTokenizerの処理結果も、以下のパスにキャッシュされます。
~/.cache/huggingface/hub/ ← モデル本体・LoRAの重みファイル
~/.cache/huggingface/assets/ ← 設定ファイル等
保存先は環境変数で変更できます:
export HF_HOME=/custom/path/
キャッシュの保存場所まとめ
| キャッシュ種別 | 保存場所(Linux) | PC再起動後 |
|---|---|---|
| OSページキャッシュ | RAM(物理メモリ)上 | ❌ 消える |
| CUDAカーネル | ~/.nv/ComputeCache/ |
✅ 残る |
| Triton | ~/.triton/cache/ |
✅ 残る |
| PyTorch | ~/.cache/torch/ |
✅ 残る |
| HuggingFace | ~/.cache/huggingface/ |
✅ 残る |
Windowsの場合のパス:
C:\Users\<ユーザー名>\AppData\Local\NVIDIA\ComputeCache\
C:\Users\<ユーザー名>\.cache\huggingface\hub\
なぜプログラム再起動でも速いのか?
整理すると、以下のようになります。
| フェーズ | 初回が遅い理由 | 2回目が速い理由 |
|---|---|---|
| モデル読み込み | SSD/HDDから読む(低速I/O) | OSページキャッシュ(RAM)から読む |
| GPU演算準備 | CUDAカーネルをJITコンパイル | コンパイル済みキャッシュを再利用 |
| 設定・Tokenizer | ファイルのパース処理が走る | 処理済み結果をキャッシュから取得 |
プログラムを再起動してもOSとディスクキャッシュは生きています。そのため、アプリレベルの再起動では「初回の遅さ」は再現しません。
PCごと再起動した場合はOSページキャッシュは消えますが、ディスク上のキャッシュ(CUDA・Triton・HuggingFaceなど)は残るため、それでも2回目以降の速度はある程度維持されます。
キャッシュを確認・管理するコマンド(Linux)
# キャッシュサイズを確認
du -sh ~/.cache/huggingface/
du -sh ~/.triton/
du -sh ~/.nv/
# OSページキャッシュの使用量確認
free -h
# OSページキャッシュをクリア(要sudo)
sudo sync && sudo echo 3 > /proc/sys/vm/drop_caches
# CUDAキャッシュをクリア
rm -rf ~/.nv/ComputeCache/
rm -rf ~/.triton/cache/
まとめ
Qwen Image Edit + LoRAの「初回1時間→2回目10分」という現象は、OSのページキャッシュとCUDA/Tritonのコンパイルキャッシュの組み合わせによるものです。プログラムを再起動してもディスクキャッシュは消えないため、速い状態が維持されます。
LoRAの重みが変わると一部キャッシュが無効になり、再コンパイルが走ることもあります。その場合は再び初回と同程度の時間がかかることがあるので、覚えておくと役立ちます。



