時間はかかったがなんとかRTX4070を動かすことができた。やっとeGPU化にチャレンジした回
(今週の一枚)偽バッタ🐞(当然変身はしない)
前回はRTX4070の起動実験失敗という想定外事故から挽回まで書いたが、今回は実際に外付け化と軽い使用までについての簡単な備忘録的記事です。
流れは、PCにOculinkコネクタを設置、eGPU用のケージを組み立て、それらを繋いで機能を検証する、という感じ。
PC内部の工事
PCにはRTX2080を再設置して通常使用の状態に戻した。その上で、前回書いたようにPCIe経由のNVMeレーンを使ってOculinkコネクタをつけることにした。PCIeのレーンはRTX2080がでかすぎて場所がなかったための処置になる。
ここで問題は2つのNVMeソケットがヒートシンクを共用している点だ。これを取ってしまった場合、もう一個のNVMeソケットに挿してあるm.2 SSDの冷却ができなくなる。
そのため、ヒートシンクを装着しつつその間をケーブルを這わせて、PCの背面にコネクタをくっつける必要がある。
幸いなことに、購入した変換ケーブルは一本一本が分かれた線の集合体なので適当なところで隙間にねじを通すことができる。しかし、バラバラに分かれる可能性があり、NVMeレーン接続部が恐らくハンダでくっついているだけなのでケーブルと接続部が簡単に取れそうだ。そこで、接続部側を絶縁テープで固定してそれ以降のケーブルには自由に動けるようにして見た。
くだらないことだけど謎部品を使う際は意外と重要なことだと思う。
次にPCの出口を少し加工する。本来、PCIeの出口はPCBボードに金属コネクタがついているものを列にする仕様だけど、このコネクタには留めとなるものがネジしかない(多分、小型PCの出口部にネジ留めするものだろう)。ちゃんと設置するならスロット用の金属を加工すべきだけど面倒くさい。そこで、保護用についてる穴の開いたプレートにちょっと穴を開けてそこにOculinkコネクタをくっつけることにした。
これにOculinkコネクタをネジ留めして、PCに接続!
ヒートシンクネジを避けてケーブルを配置
ヒートシンクを設置して、内部は各部にテンションがかからないように設置
こんな感じで意外と手間がかかったが、PC側のコネクタをつけることができた。
外付け化
次に、RTX4070をeGPU用筐体にセットする。まぁ、これは簡単だ。
このMINS FORLUMの筐体は非常にシンプルで、ATX電源を左上のマットブラックの部分においてネジ留めして右側のPOWERと書いてある部分にATX電源のマザーボード用24pinソケットを挿す。続いて中央部のPCIEと書いてある部分にグラフィックボードを挿して、コームでネジ留めしてATX電源と固定してATX電源から補助電源8pinをグラフィックボードに挿せば完成である。
ドライバーがあれば問題なくできるのではないかと思う。
接続と設定
さて、早速PCに接続して簡単なチェックをした結果を書く。
1、プラグアンドプレイ非対応
USB接続に慣れているとPCを起動しつつ抜き差しして外付け機器を使用するが、この筐体はそういったPnPには対応していない。
ATX電源のスイッチをオンにして、Oculinkケーブルを接続し、PCを起動しないと起動指示の短絡信号がこないので装置として機能しない。また、ATX電源オフの場合はPC側からの電力供給がないために当然動かない。そのため、繋げたまま起動しない場合はATX電源をオフのままにしておくのでいいと思う。
また、筐体側面に電源スイッチっぽいものがあり、ATX電源スイッチをオンにすると青色に発光するが、これ自体は上記の特性があるためほとんどスイッチとして機能しない。ATX電源のON/OFF確認用のライトくらいに思っておくのがいいと思う。
2、8GBPsの転送速度でOK
「RTX4070の情報伝達と処理において」という前提になるけど、今回使用したNVMeソケットはPCIe4.0の1レーン(×4)分だけを使っており、そのOculink転送(最大転送速度8GBPs)で必要十分な情報伝達ができるとわかった。ソフトによりけりになるが、これは3DCGの2Kゲームでもちょっとおつりがくるくらいで、最新の4Kゲームではちょっと力不足という感じだ。しかし、最新の重々ゲームでは今回使うRTX4070は元々力不足ということがわかっているので、4KゲームにおいてRTXの処理とOculinkの転送速度の量能がボトルネックになっていると思う。
将来的には処理と転送のバランスが崩れるので、何らかの対応が必要かもしれないけど、外付けGPUと考えれば十分な性能だと思う。
当然、RTX4070以下の性能のグラフィックボードならこのシステムでも十全な性能を発揮できることを示している。
一方で、これより高性能なグラフィックボードをゲームで使用する場合には十分な性能を出せない可能性はあるが、GPUの内部処理がゲームより重たい場合、例えば、生成A.I.なんかにはRTX4070以上の性能を持ったグラフィックボードでも十分対応できると思われる。
3、Windows上の設定はデフォルトで十分
自分はオーバークロックには否定的で、一時的にスコアを伸ばせたとしても、長期的な運用では故障や思わぬ事故になるのであまり推奨しない立場だ。むしろ、電力制限をかけて効率を重視したほうがいいんじゃないかとさえ思う。
さて、そういった観点からいくつかのパラメータを弄ったのだけど、悲しいかなデフォルト設定が一番うまくいった。
RTX4070が定格200Wで使用機体が8pin一本だからしょうがないのかと思ったが、試しにちょっとクロックを上げてみても思ったよりも電力量は伸びなかった。これは一時的なものでも、瞬間的なものでも同じでボードからこれ以上電気を受け入れないようにしているのかもしれない。
その上で、Windows上の設定をいくら弄ってもむしろバランスが崩れて足を引っ張ることになるようだ。
ベンチマークの結果と考察
いくつかのゲームベンチマークを試してみたが、上のような感じで直接接続とほぼ同じのスコアになった。軽くローカルで生成A.I.を動かしてみたが、こちらの出力速度もほぼ同じものになった。
いくつかの記事で指摘されているような遅延が生じるものだとばかり思っていたが、やってみないとわからないものだ。
Adobe PremiumProみたいにCPUと並列して作業をさせる際はさすがに速度に変化があるのかもしれないけれど、Oculink接続は少なくともGPU単独で作業をさせる際は転送による遅れや作業効率のボトルネックにならないと思う。
2週間ほど動かしてみた感想と考察を書く。
ここからはあくまでもWindows11上のRTX4070での話であり、LinuxベースやRTX全てを保証するものではない点は気は注意してほしい。このeGPUはダイソーで買ってきた小さなメタルラック(部品合計で1000円くらいのもの)に入れて運用中である。
チップセット経由のPCIe4.0を介した8GBPs通信でも十分に情報伝達が維持できるのは意外だった。フルレーン(x16)をRTX5000番台で使えばどうのこうのと言うことになっているが、そんな幅は必要ないことがわかる。生成A.I.のローカルモデルがすでに組み込んであり、個人で行う個別入出力の計算ではこの程度の速度で十分となる。そのため、本格的にSSDからデータを読み込んでローカル用モデルを作ろうとした場合(部分解を作るという意味)でもOculinkの転送で足りると思う。一方で、ゲームなどのひたすら情報の行って来いを繰り返す処理が増大するとOculinkが耐えられるか不明だが、電源が独立しているのでPCIe4.0以降で観測される長いライザーケーブルを介した時のノイズ発生には強いのではないだろうか?。
いずれにしろ、デスクトップPCでグラフィックボードを外付け化した場合でも、十分な性能を発揮することが証明できた。そのため、サーバーを置いて複数PCで作業をさせるネットワークを組まなくても、マルチGPUとして複数のeGPUを独立して計算処理にあてられればパソコン1台で結構なことができるのではないかと思う。以前、自分はイーサリウムのマイニングをやったけど、それと比べるとかなり楽にシステム構築・管理やれるのではないかと感じた。
また、長時間作業・計算させる場合はむしろ外付けの方が運用として楽だと思う。PCケースはなんだかんだで熱がこもるし、CPUと同時に高負荷処理をするとATX電源に結構な負担がかかり遅延が生じることがあるけど、eGPU化しているとそれがないのでシステム全体としてかなり安定して動作することがわかった。おそらく、ATX電源では電力変換効率の良し悪しがいい電源の指標になるが、実際の運用において安定的(スパイクを出さないなど)な電力消費に関して言えば、効率に関係なくより低位な出力状態の方が安定供給できるのかもしれないと思った。まぁ、あまり低すぎてもエンストを起こしそうではあるので、それも程度問題かもしれない…
終わりに
権利関係がいまいちわからないので、生成A.I.関係の写真やデータは載せなかったけど、これからはその辺を詰めていければ楽しいかもしれない。
目指せコンピューター帝国!(^ω^)
☆エロ同人CG販売中

