Z2 Tower G5 Workstation + RTX 5060 Ti の相性問題
「話題のローカルLLMを動かしてみたい!」
思い立ったはよいが、私は高性能なグラフィックカードを1枚も持っていないし、載せられるPCもない。
フリマサイトをいったりきたりして悩んだ結果、中古の HP Z2 Tower G5 Workstationと新品のRTX 5060 Ti (16GB)を購入することにしました。
いにしえの記憶ではグラボとメモリは相性問題に泣いた記憶もあるが…令和にそこまで手こずることは無いでしょ、と見切り発車で発注。
…その結果、装着早々からまともに動作せず、なんとかOS起動できたと思いきや、マシンごとハングアップしてしまう有様でした。
紆余曲折のメモを残しておきます。
環境
| 項目 | 内容 |
|---|---|
| 本体 | HP Z2 Tower G5 Workstation(SKU 9FR65AV、マザーボード 8750) |
| BIOS | S50 Ver. 01.05.00(2026/07/08、確認時点で最新) |
| CPU | Intel Xeon W-1270(8コア16スレッド) |
| メモリ | DDR4-3200 ECC UDIMM 16GB × 4 = 64GB(2400MT/s で動作、ECC 有効) SK hynix HMA82GU7DJR8N-XN × 2(DIMM1/3)、Kingston 9965745-026.A00G × 2(DIMM2/4) |
| GPU | PNY GeForce RTX 5060 Ti 16GB OC Dual Fan(GB206 / 2D04-300-A1、VBIOS 98.06.4e.00.17) |
| GPU の接続 | CPU 直結の x16 スロット、x8 リンク。カードは Gen5 対応だが、ホスト側の上限で Gen3 |
| 電源 | 700W、補助電源は電源から直接 6+2pin接続 |
| 画面出力 | 内蔵グラフィックス(Intel UHD Graphics P630) |
| ストレージ | Samsung PM981(MZVLB512HBJQ、NVMe 512GB) |
| OS | Windows 11 Pro for Workstations 25H2(build 26200) |
| NVIDIA ドライバ | 616.92(途中で 610.88 Studio も試した) |
| 使っていたもの | ComfyUI portable v0.37.0(PyTorch 2.13 + cu130)、Ollama 0.34.4 |
画面は内蔵グラフィックスから出していて、RTX 5060 Tiは演算専用としました。
BIOS設定
OS起動前にもいくつかつまづいたのでメモ。
- GPUカード装着後のプライマリ画面出力は、GPUカード側になる
- GPUカード搭載後、BIOSロゴが出るまで時間がかかる(サーバみたくPOSTが長い…?)
- BIOSにはEscキーで入ることができる(F10で設定画面に遷移)
DP対応ディスプレイを1枚しか持っておらず、切り分けに時間がかかりました。。
Intel AMTを有効にして、Remote Desktopを使いながら乗り切りました。
症状
OS起動~ドライバ導入、アプリ導入後に発生した症状は以下です。
大きく分けて3パターンありました。
-
nvidia-smiが次のエラーを返して、再起動するまで GPU が使えなくなるUnable to determine the device handle for GPU0: 0000:01:00.0: GPU is lost. Reboot the system to recover this GPU -
ブルースクリーン(
0x116 VIDEO_TDR_FAILURE、0x1000007E) -
マシン全体がフリーズ。OSだけでなく AMTもpingに応答しなくなり、電源長押しするしかない
落ちるたびに、システムログには nvlddmkm の ID 153 が出ていました。
\Device\Video3 | BusReset TDR occurred on GPUID:100
ドライバが GPU を復帰させようとして PCIe バスのリセットまでかけ、それでも戻らなかった、という内容です。C:\Windows\LiveKernelReports\WATCHDOG を見ると、GPU を取り付けてドライバを入れた直後から LiveKernelEvent 141(GPU のタイムアウト)が残っていました。最初から不安定だったようです。
落ちるのは、モデルの読み込みや入れ替え、VRAMの解放など、PCIeの転送が増えるタイミングが多かったです。OllamaのモデルがVRAMに乗ったままComfyUIの生成を実行し、VRAM があふれたときにもハングアップしてしまいました。
効かなかったこと
順番に試しましたが、どれも単体では直りませんでした。
- Windowsの電源オプションで「PCI Express → リンク状態の電源管理」をオフ
- BIOSで 電源管理系の項目をすべて Disable、Primary Video を内蔵グラフィックスに
- NVIDIAコントロールパネルで「電源管理モード:パフォーマンス最大化を優先」「CUDA - システムメモリ フォールバック ポリシー:システムメモリ フォールバックなしを優先」
- WindowsのハードウェアアクセラレータによるGPUスケジューリングをオフ
- NVIDIAの GPU UEFI Firmware Update Tool で VBIOS更新を確認 → 対象外でした
- DDUでドライバを消して、旧バージョン(Studio 610.88)をクリーンインストール
- SATAのDVDドライブを外す(販売者から不具合ありと聞いていたため、電源ラインからのノイズ等を疑った)
外れた仮説:リンク速度の切り替え
原因を探るため、nvidia-smi の値を10秒ごとに CSVに記録するようにしました。
$q = 'timestamp,pstate,temperature.gpu,power.draw,clocks.gr,clocks.mem,memory.used,utilization.gpu,pcie.link.gen.current,pcie.link.width.current'
while ($true) {
nvidia-smi --query-gpu=$q --format=csv,noheader | Add-Content C:\logs\gpu_stats.csv
Start-Sleep 10
}
マシンごと固まったときの直前の記録では、生成の合間に GPUがアイドルに落ちて PCIeが Gen3 → Gen2 → Gen1 と下がり、生成を再開して Gen3に戻った直後に止まっていました。温度も電力もVRAMも普通でした。
そこで「リンク速度が切り替わるときの再トレーニングで失敗している」と考え、クロックを固定してP-stateを落とさないようにしました。
nvidia-smi -lgc 2000,3100
nvidia-smi -lmc 13801,14001
コアクロックだけ固定しても、メモリクロックが下がると PCIeもGen2に落ちたので、-lmc も必要でした。これでアイドルでも P1・Gen3 のままになり、しばらくは落ちませんでした。
ところが数十分後、Gen3のまま一度も切り替わっていない状態で、また GPU is lost になりました。リンク速度の切り替えは原因ではなかったということです。
本当の原因:Gen3で再送が大量に起きていた
決め手になったのは、nvidia-smi -q に出るPCIeの再送カウンタでした。--query-gpu では取れないので、-q の出力から拾います。
nvidia-smi -q | findstr /i "Replay"
Replays Since Reset : 27432
Replay Number Rollovers : 6223
Replays Since Reset は、受け取ったデータが壊れていて送り直した回数です。Replay Number Rollovers は、何度送り直しても届かず、リンクを張り直した回数です。どちらも正常なら 0 のままのはずです。
起動して数分、GPU使用率 0% のアイドル状態でこの値でした。30秒おきに差分を取るとこうなります。
function rc {
$q = nvidia-smi -q
[pscustomobject]@{
r = [int64](($q | Select-String 'Replays Since Reset').Line -split ':')[1].Trim()
ro = [int64](($q | Select-String 'Replay Number Rollovers').Line -split ':')[1].Trim()
}
}
$a = rc; Start-Sleep 30; $b = rc
"replay +$($b.r - $a.r) / rollover +$($b.ro - $a.ro)"
| 条件 | 再送 / 30秒 | リンク張り直し / 30秒 |
|---|---|---|
| Gen3 x8(DVD ドライブあり) | 978 | 46 |
| Gen3 x8(DVD ドライブなし) | 822 | 31 |
| Gen2 x8 | 0 | 0 |
何もしていなくても、1秒に1回以上リンクを張り直していたことになります。転送が増えればさらに増え、張り直しに失敗したところで GPU is lost、と考えると、これまでの症状が全部説明できます。
BIOS(F10)の Advanced → Slot Settings で GPUのスロットをGen2に固定したら、再送はアイドルでも負荷をかけても 0 になりました。
どちらが悪いのか切り分けた
GPUカードとPCのどちらに原因があるのか判断したかったので、入れ替えて試しました。
負荷テストは、PyTorchでピン留めメモリと VRAMの間を往復コピーし、戻ってきたデータが一致するかと、再送カウンタの増え方を見るものです。
import torch
n = 256 * 1024 * 1024
src = torch.randint(-2**31, 2**31 - 1, (n,), dtype=torch.int32).pin_memory()
back = torch.empty_like(src, pin_memory=True)
gpu = torch.empty(n, dtype=torch.int32, device="cuda")
for _ in range(300):
gpu.copy_(src, non_blocking=True)
back.copy_(gpu, non_blocking=True)
torch.cuda.synchronize()
assert torch.equal(back, src)
| 組み合わせ | リンク | アイドルの再送 | 負荷テスト |
|---|---|---|---|
| Z2 G5 + RTX 5060 Ti | Gen3 x8 | 30秒で 800〜1,000 | (落ちるので実施せず) |
| Z2 G5 + RTX 5060 Ti | Gen2 x8 | 0 | 332GB 転送、再送 0 |
| 試験用PC(i7-4770K)+ RTX 5060 Ti | Gen3 x8 | 5分で 0 | 20分で 6.52TB 転送、再送 0 |
| Z2 G5 + Quadro P2200※ | Gen3 x16 | 5分で 0 | 914GB 転送、再送 0 |
RTX 5060 Tiを別のPCに載せてみたところ、Gen3でも動作問題なし。
Z2 G5のスロットも別のカードならGen3で動作に問題はありませんでした。
どちらも単体では正常で、Z2 G5と RTX 5060 TiをGen3で組み合わせたときだけおかしくなる、という相性の問題だと判断しています。どちらを返品しても「異常なし」で戻ってくる可能性が高いので、返品はできなさそう…。
RTX 5060 Ti について、一部のマザーボードでリンク幅が x8 にならず x1〜x4 で上がってくる、という記事を見つけました(HWCooling)。症状は違いますが、特定のマザーボードとの間でリンクが不安定になるという点は似ています。
※ P2200は RTX 5060 Tiのドライバ(600番台)に対応の記載がありません。最新の対応ドライバー(RTX Enterprise の 582.78)に入れ替えて試しました。
Gen2 にした影響
| リンク | 実測の転送速度 |
|---|---|
| Gen3 x8(別 PC で測定) | 約 5.3 GB/s |
| Gen2 x8(Z2 G5) | 約 3.3 GB/s |
転送速度は4割ほど落ちますが、VRAMに載ったあとの計算速度は変わらない想定です。影響があるのはモデルの読み込みや入れ替えで、7GB のモデルなら読み込みが1秒ほど長くなる程度です。今のところは使っていて違いは感じていません。
最終的な設定
途中でいろいろ入れましたが、原因が分かったので、Gen2設定以外はほぼ元に戻しました。
- BIOS:GPU のPCIeスロットを Gen2 に固定
- ドライバ:最新の 616.92
- NVIDIA コントロールパネル:電源管理モードだけ「パフォーマンス最大化を優先」
- クロック固定、ComfyUI の起動オプション変更などは外した
この状態で今のところ落ちていません。
まとめ
- GPU is lostや BusReset TDRが続くときは、
nvidia-smi -qのReplays Since ResetとReplay Number Rolloversを見ると、PCIeの信号品質が悪いかどうかがすぐ分かる - Z2 G5 + RTX 5060 TiではPCIeスロットのGen3設定で再送が多発、Gen2に固定したら再送 0 になった
- GPUとPCを入れ替えて試したところ、どちらも単体では正常。いわゆる相性問題。
同じ機種・世代のコンピュータで RTX 50 シリーズを使っている人や、Gen3のまま安定させる方法を知っている人がいたら、教えてもらえると嬉しいです!