100℃の沸騰基板を安全圏へ叩き落とす!
AMD BC-250のSMUアンダーボルト&ファンPWM制御で消費電力-39%を達成した全記録
〜PS5同等APUの爆熱をどう抑えるか?M.2 SSD 85℃の危機から、NCT6687dドライバビルドとF-Vカーブ調整(scale=-35)でPhi-4 14Bをノーブレーキ完走させるまで〜
1. 【緊急事態】CPU・GPUが100℃、M.2 SSDが85℃に到達した現場証拠
AMD BC-250にFedora 45をインストールし、無事にGPU 40CU解放とCPU 8コア16スレッド化、そしてMicrosoft Phi-4(14B)の推論サーバ化に成功した直後のことです。
何気なくハードウェアセンサーコマンド(sensors)を叩いた私たちは、画面を見て凍りつきました。
CPUもGPUも100℃に達し、NVMe SSDは84.8℃。SSDの臨界停止温度である94.8℃まであと10℃しかありませんでした。
このまま24時間稼働させれば、チップの寿命を著しく縮めるだけでなく、サーマルスロットリングによって推論速度が半分以下に失速してしまいます。
2. なぜBC-250は過熱するのか?(過剰な初期電圧とファン制御ロックの構造)
原因を調査した結果、BC-250特有の2つのハードウェア的構造が判明しました。
① マイニング専用設計による「異常な初期電圧マージン」
BC-250は中国などの過酷な環境のマイニングファームで、シリコンの個体差に関係なく24時間絶対に落とさない運用を前提に作られています。そのため、初期バイオス設定では 1.22Vというオーバークロック用のような極めて高い電圧 が常時供給されていました。
② Linux標準のSuperIOドライバ(nct6683)のPWM書込ロック
BC-250のマザーボードにはファン制御用のNuvotonチップ(NCT6686)が載っていますが、Linux標準カーネルに含まれる nct6683 ドライバは読み取り専用(Read-Only)です。OS側からファン回転数を上げようとしてもPWMファイルへの書き込みが拒絶され、ファンはアイドリング用の800RPM台で固定されたままになっていました。
3. 【実践ステップ1】NCT6687dカーネルモジュールのビルドとPWM開放
まずは、ファン制御の主導権をOSに取り戻すため、有志が開発したオープンソースの nct6687d ドライバをビルドして導入します。
これで /sys/devices/platform/nct6687.*/hwmon/hwmon*/pwm* に書き込み権限が付与され、ソフトウェアからファン回転数を制御できるようになります。
4. 【実践ステップ2】SMU直接通信によるアンダーボルト(scale=-35)の全貌
次に、今回の冷却劇の真骨頂である「SMU(System Management Unit)経由での低電圧化」を行います。
BC-250のCPU・GPUは統合APU(Zen 2+RDNA 1ハイブリッド)であり、SMUメッセージを直接送ることで電圧カーブをOSから動的に書き換えることが可能です。
このライブラリを使って、以下の4つのチューニングを同時に投入します:
- ハードウェア上限温度の保護(85℃リミット):
smu.q3_0x8b_set_cpu_max_temperature(85)およびsmu.q3_0x8c_set_gpu_max_temperature(85)を実行し、万が一の際も85℃を超えないようにSMUへ安全弁をセット。 - 余剰電圧の無効化:
smu.disable_extra_cpu_gpu_voltage(True)で無駄な昇圧を遮断。 - F-V相関カーブの適正化(scale = -35):
smu.q3_0x50_scale_f_vid_curve(-35)で、周波数に対する要求電圧を安全圏の限界まで引き下げ。 - ブーストクロック制限(3500MHz):
smu.q3_0x8f_set_max_cpu_boost_clk(3500)で、低電圧下で不安定になりやすい無謀なクロック跳ね上がりを抑止。
5. 【実証結果】消費電力-39%(68W→41W)&温度15℃低下の実測データ
アンダーボルトとファン制御を投入した前後の実機センサー比較です。数字がすべてを物語っています。
| 計測項目 | 対策前(工場出荷状態) | 対策後(本チューニング適用後) | 改善効果 |
|---|---|---|---|
| GPU消費電力 (PPT) | 68.82 W | 41.88 W 〜 50.4 W | 約 -27W 削減(-39%の超省電力) |
| GPUコア温度 (edge) | 100.0 °C(危険域) | 85.0 °C | -15.0 °C 冷却達成 |
| CPU温度 (Tctl) | 101.4 °C(100度超え) | 85.9 °C | -15.5 °C 冷却達成 |
| 供給電圧 (vddnb) | 1.22 V(過剰) | 0.73 V 〜 0.86 V(動的制御) | 最大 0.49V の大幅降圧 |
| M.2 NVMe SSD温度 | 84.8 °C(警告域) | 77.8 °C | 基板全体の放熱低下で連鎖冷却 |
6. 「そんなに電圧を下げて安定するのか?」徹底検証ベンチマーク
「最大0.49Vも電圧を下げて、本当にシステムがクラッシュしないのか?」という疑問を持たれる方も多いはずです。
そこで、アンダーボルト適用後にTailscale経由でMacBookから重負荷の推論クエリ(Microsoft Phi-4 14B)を連続実行し、安定性と速度を検証しました。
結果は秒速9.2トークンのカタログスペック通りの速度を完璧に維持。文字化けや出力破綻、カーネルパニック、GPUハングは1件も発生していません。
これは「電圧を固定で下げた」のではなく、「負荷に応じて必要な0.89V〜0.90Vまで動的に持ち上がるインテリジェントなF-Vカーブ調整」を行っているためです。
7. コピペで完了する自動起動systemdサービス化スクリプト
最後に、再起動しても電源を切っても自動的にこの省電力・低電圧設定が適用されるよう、systemdサービスとして永続化する設定手順です。
工場出荷時の「無理やり力任せに高電圧を流す」状態から、カーネルドライバとSMU直接制御によって本来の洗練されたシリコンのポテンシャルを解放できました。
24時間つけっぱなしにする自宅AIクラスタとして、消費電力40W台・安定動作のBC-250は最高の相棒です!🐼❄️🛠️