ローカルでLLMやら画像生成やらを動かそうとすると、とりあえずVRAMが足りない。
その解決策のひとつとして、ちょっと前にこんな記事が話題になっていた。
ブラウザがGPUメモリを使いすぎるので、サブGPUのRTX3050を使わせる
うちのにもIntelの内蔵GPUがあるじゃん!
そういえば、と、いま使っているPCにもGPUが2つ載っていることに気づいた。
2つあるGPUのうち、LLMとかを動かしたいのはRTX4070Tiの方で、12GBという狭いVRAMをやりくりして使っている。
それとは別にCPUの内蔵グラフィックがあり、これがUHD Graphics 770という名前をしているやつ。
Chromeやエクスプローラに高性能GPUいらんやろ!
ここを省電力に設定してみる。VRAMが空いて電気代も浮くなんてうれしいぜー。
設定変更したらアプリを再起動すると反映される。ExplorerとかはOSごと再起動したほうが無難かも。
予想に反してめっちゃ遅くなりストレス
設定反映して何が起きたか
- Chrome
- アニメーションやスクロールといった基本動作がカクつくようになった
- GoogleMapの3D表示などでは純粋に3D描画のパフォーマンス不足を感じた
- エクスプローラ
- スクロールとかが全般にラグい感じになった
- シェル全般
- ウインドウのドラッグとか最小化とかAlt+Tabなど大体の挙動がもたつく感じになった
なぜこうなった?
内蔵GPUを使うことで多少はパフォーマンス落ちるだろうが、許容範囲に収まるだろうと考えていた。というのも、普通のノートPCは内蔵GPUだけで動いているわけで、ブラウザやシェル程度ならば内蔵GPUでも問題なく動くはず……! という計算。
実際には予想より遥かにパフォーマンスが劣化したのだが、その理由はまさにGPUが2つあるかららしい。
- ディスプレイは高性能な方のGPUに接続されている。なので最終的な画面は高性能GPUで作られなければならない。
- 内蔵GPUで描画されたアプリ画面は、PCI-Eバスを通って高性能GPUのVRAMに転送される。
- つまり普通に画面描画するより余計にデータ転送やバッファリングが必要で、ここにオーバーヘッドが載る。
- デスクトップ画面を管理するDWMは、ディスプレイがdGPUに接続されている以上、高性能GPU上で動作させるしかない。
- 内蔵GPUの描画結果を高性能GPU側のDWMに合成する際、どうしても同期待ち時間が発生する。ウィンドウの操作が全体的にラグくなったのはこれのせい。
- 影響の度合いはわからないが、内蔵GPUががんばって稼働するときはCPUとのメモリ帯域の奪い合いになるので、グラフィック処理がPC全体のパフォーマンスを落とすこともありえる。
つまり、ただ計算性能の弱いGPUに切り替わるという単純な話ではなく、入力応答が目にわかるレベルで遅延するという形で影響が現れる。操作に対してレスポンスがワンテンポ遅れるのは予想外にストレスだった。
これは構造的な問題なので、2つのGPUを混在利用する場合避けては通れない。
どう対処したか
大人しく全部を高性能GPUに振り分けた。
そのうえで、本当になくなっても困らないアプリだけを選んで、内蔵GPUにちょっとずつ移動している。
いまのところ安定して内蔵GPUに逃がせたのはBongoCatだけである。
コメント