eGPU OcuLinkとUSB4(Thunderbolt)の合体で良いとこ取りはできるのか?

eGPU OcuLink USB4 Enclosure PC

以前にちょこっと予告した、eGPU使用時においてボトルネックとなってしまうUSB4接続での性能低下を解決することに関しての記事をようやく公開できます

もともとの発端は、新しく購入したAYANEO FLIP 1S DSにはOcuLinkポートが無いためOcuLink搭載機と比べて劣ってしまうのではないか? というところから来ています

AYANEO FLIP 1Sに限りませんが、こうしたOcuLink非搭載機の性能低下を解決するための手段としてUSB4 NVMeエンクロージャーを利用したOcuLinkカスタム手法が結構前から話題になっています。通称フランケンシュタイン化

これによってOcuLinkと同じ……とまではいかないものの、USB4(Thunderbolt)の限界を超え、OcuLinkに限りなく近い速度で転送を行えるようになり性能低下を抑えられるようになる。しかも、OcuLinkの弱点であるホットプラグ不可能問題も解決する、という夢のような手法です

もしこれが本当ならAYANEO FLIP 1Sを長く使っていくことに何の懸念もなくなりますので、本記事ではこれを実際に検証してみようというのが趣旨になっています

スポンサーリンク

OcuLink→USB4を行うフランケンシュタイン化について

詳しく書こうとすると非常に長く読みにくくなってしまいそうなので簡潔に書きます。なので本当の技術的な正確さとは微妙に違っている表現をしている部分もありますが、分かりやすさ優先ということでご容赦ください

Thunderbolt接続がOculinkよりも性能で劣ってしまうのは転送速度の違いによるものなのですが、これを数値通りの40Gbpsと63Gbpsの違いだと思っている方が結構いますが、実はそうではありません

そもそも理論上の転送速度が発揮できるわけではないです(帯域ロス)し、PCIeの生の信号をやり取りしているわけでもありません。他にも様々な要因がオーバーヘッドとなって、eGPUの多くはPCIe3.0×4接続の速度に制限されてしまいます

eGPU OcuLink USB4 Enclosure

USB4接続時例

TB接続の場合にはPCIeデータ転送以外にも様々な通信が必要になることが想定されます。それらをTBコントローラーを介して転送するわけですが、システムが予めそれらの帯域を確保するためのプロトコルが存在し、これがeGPU使用時のオーバーヘッドになってしまいます

他、トンネリングの際のエンコード/デコードのオーバーヘッドだとか、システムメモリ/VRAM間の転送の多寡だとか、ローエンドのGPUであれば影響も小さいけどハイエンドGPUではボトルネックになりやすいとか色々要因はあります

それら問題を出来るだけ回避して純PCIe信号をトンネリングする――つまりはPCIe接続されているかのように、言ってみればシステムを騙すためのUSB4エンクロージャーを使用した手法が結構前から話題になっており、これによってOcuLinkに匹敵する(少なくともネイティブTB接続よりも確実に高速に動作する)性能を発揮することが出来るとされているのです

eGPU OcuLink USB4 Enclosure

AOOSTARのeGPUドックがこの裏技(?)を採用したことでユーザーの間で話題となり、その後DIYでも同じことが可能だということが判明してきたとされています。フランケンシュタインとか呼ばれてます(笑)

OcuLinkポートを接続するエンクロージャーのNVMeアダプタがPCIe Gen4であり、現行のGPUもGen4接続であるため、PCIe Gen4信号がTBを介してトンネルされそのまま残ることになる点がミソだとされています

eGPU OcuLink USB4 Enclosure

OcuLink→エンクロージャー接続時例

なお、今時ほぼ無いと思いますが、もし使用するGPUがPCIe 3.0世代(RTX2000番台とか)の場合でも、ネイティブUSB4接続と比べてわずかに性能向上が見られるそうです

さて

ここまで書くとお分かりの方も多いかと思いますが、このフランケン化はどのUSB4 NVMeエンクロージャーでもOKというわけではないということに注意が必要です

上に書いたように、このフランケンカスタムされたeGPUを接続すると、デバイスはUSBではなくPCIe接続されます。OcuLinkに匹敵する性能を発揮するためには、当然そのPCIe速度(世代)はGen4である必要があります

従ってエンクロージャーはPCIe4.0×4接続を謳っているもの。さらに具体的に言うなら転送速度40Gb/sとか読み書き速度3,800MB/sなどと記載されている製品から選択する必要があるわけです

もちろんそれらの中にもまた相性問題(?)で動かないものがあったりしますし、そもそも誇大広告的なものもあるでしょうから、最終的にうまくいくかどうかは人柱的に実験する覚悟も必要かもしれません

例えばPCIe4.0x4 40Gb/sを謳っており、一般的に人気のありそうなSatechiやOricoのエンクロージャーあたりは「使えなかった」という報告が挙がっています。ですのでネット上で動作報告のあるものを導入する方が、よりリスクを抑えることができるのではないかと思います

とりあえずネットで「動作したよ」と言われているのはこれらの製品

他にも動作報告のあるものはいくつかありますがたぶん日本では売っていません。私が今回検証に使用するCable Mattersのものも日本では売っていないものになっています

eGPU OcuLink USB4 Enclosure

なぜこれを選んだのかというと、この製品はUSB4ケーブルが内蔵されているため、うまく動かないという事態が発生した際に『ケーブルの相性問題』という要因を除外することができるため、トライアンドエラーの際にも検証しやすいと判断したためです

ちなみに、read/writeの速度が3,600MB/s前後が謳われていない製品の場合、eGPUとして認識はできるけどネイティブUSB4(TB)接続と同程度の速度、つまりGen3の速度しか出ないとされています。断続的な切断を繰り返す等もあるらしい……

また、当然ながらエンクロージャーに装着するための、M.2→Oculinkの変換アダプタも必要になります。私はこれを使っています

最後にお約束的な注意書きです

NVMeエンクロージャー以外にも、使用するGPU、eGPUドック、デバイスなど使用環境は人によって様々だと思います。ここで挙げている動作確認されている製品の例でも動かないかもしれないし、逆に、動かないとされている製品でも動くかもしれません

ですのでもしこの記事を読んで「試してみようかな」と思う場合でも、先に書いたように人柱覚悟の自己責任でお願いしたいと思います

そもそも根本的な問題として、eGPUは同じ構成であってもデバイス側(デスクトップでもノートでもハンドヘルドでも)との相性問題も起きやすい製品です。そこにさらにフランケン化なんていうトラブルの種を持ち込むわけですから、トライアンドエラーが苦手な人は挑戦しない方が良いような気もします

ガジェットいじりが好きなオタクマニア向けの手法ですね(笑)

ベンチマークによる比較

けっこうザックリした説明になってしまいましたが、何となくの理屈と、エンクロージャー選びひとつ取っても注意が必要なのだという点が伝わったのならOKです

では本題であるベンチマークでの比較を見ていって、これらが本当なのかどうか確認してみたいと思います

前置き(読み飛ばし可)

このベンチマークには、単にフランケン化の効果の有無以外にも重要な確認目的があります

フランケン化が効果があるというのはこれだけネットで言われているわけですから事実なのでしょう。しかし私にとって重要なのは『内部ディスプレイでの使用時にも効果があるのか?』という点になります

今回取り上げているフランケンシュタイン化に限らず、eGPUの性能向上にまつわる話題は外部ディスプレイ接続時の話となってることが多いです

私は基本的に海外サイトで情報を得ますが、どうも海外での使い方としてeGPUを使うような環境(家やオフィス)で小さなハンドヘルド画面でプレイするということは少ないようです

出先ではポータブルだけど家ではドッキングして大画面で使いたいから、その際にeGPUの性能が低下してしまうのは極力避けたい……。これがギーク達が努力する原動力であるようです

しかし私は小型デバイスとして完結するシステムを考えています。外部ディスプレイに接続する使い方は考えていません。デスクトップPCもゲーミングノートも別に持っているからというのも理由かもしれませんが

eGPUは、ゲーム等では外部ディスプレイで使う時と比べて内部ディスプレイで使用すると大きく性能が低下するというのは聞いたことある方も多いかと思います。描画結果をPC側に戻すというのはそれだけで大きなボトルネックになるようですね

しかし私にとっては内部ディスプレイで使うことが最も重要な要素になっています

ということで今回は、外部ディスプレイにおけるフランケン化効果の是非と、内部ディスプレイにおけるフランケン化効果の是非、両方を見ていきたいと思います

何気にeGPUを外部ディスプレイに接続したのって1回か2回ぐらいだと思いますので、ついでにどのぐらい性能差が出るのかも確認してみたいです

ベンチマーク環境

今回の環境は以下の通りです。外部ディスプレイについてはモニターのネイティブではなくFLIP 1S DS側に合わせています

  • 検証機体:AYANEO FLIP 1S DS / Ryzen AI 9 HX370 / 64GB RAM
  • 接続方法: OcuLink>USB4 エンクロージャー変換 / USB4 ネイティブ
  • OcuLink速度:PCIe 4.0×4
  • 使用GPU:RTX 4090m
  • GPUドライバ:581.57 メーカーMODドライバ
  • CPU TDP:28W
  • GPU TGP:ハイスピードモード
  • Resizable BAR:デフォルト(無効)
  • 環境温度18℃前後
  • 日本語環境
  • 内部ディスプレイ仕様:1920×1080・120Hz・拡大率125%
  • 外部ディスプレイ設定:1920×1080・120Hz・拡大率125%・DP1.4接続

今回使用するeGPUがMOREFINEのG1であり、これはNvidia純正ドライバでは動かないためMODドライバを使用しているため、一般的な環境ではないことはご容赦ください

それと、いつもeGPU関係の確認を行う時にはPCIe周りの設定を少し詰めるのですが、今回は単純に比較したいだけなので何も設定せずに実施しています

AYANEOのBIOSの自由度が低すぎるせいでもあります(泣)

GeekBench 5&6 GPU

まずGeekBenchです。これはGPGPU(Compute)ですのであまり差が出ないような気もしますが確認してみます

eGPU OcuLink USB4 EnclosureeGPU OcuLink USB4 Enclosure

※内部ディスプレイ OcuLink > USB4 USB4 ネイティブ
GeekBench5 GPU(OpenCL) 225096 217628
GeekBench6 GPU(OpenCL) 176663 170093
※外部ディスプレイ OcuLink > USB4 USB4 ネイティブ
GeekBench5 GPU(OpenCL) 220746 209528
GeekBench6 GPU(OpenCL) 173088 165927

いきなり良く分からない結果に(笑)

私は基本的に5%未満のスコア差は誤差だと切り捨ててますので、GeekBenchにおいてはフランケンシュタイン化の効果は見受けられません。また、外部ディスプレイ使用時の優位性も現われていません。全く変化なし! と言っていいでしょう

とはいえこれはオフスクリーンのComputeテストですので当然なのかもしれません

ちなみに、ホストPCが違いますので単純比較できないかもしれませんが、ネイティブOcuLinkで同じベンチを行った時にはGeekBench5が232215、GeekBench6が180046でした

CINEBENCH 2024 GPU

これはレンダリングですが一応オンスクリーンで行われるものです。変化はあるのでしょうか

eGPU OcuLink USB4 Enclosure

※内部ディスプレイ OcuLink > USB4 USB4 ネイティブ
GPUスコア 21374 21018
※外部ディスプレイ OcuLink > USB4 USB4 ネイティブ
GPUスコア 21068 20779

さっきのGeekBenchと同じですね。全く変化なし! フランケン化の効果も無いし、外部ディスプレイで優位になるということも無い感じです

ベンチでは分からないのでしょうか。実ゲームなんかだとテクスチャで大容量の転送が必要になったりするので、そういったアプリじゃないと効果が感じづらいのかな……あるいは私が選んだエンクロージャーが原因ということもあるかもしれません。もうちょっと見ていってみます

なおこちらのベンチを別PCでネイティブOcuLinkで実行した際のスコアは22561でした。ネイティブOcuLinkよりは少し劣っていますね

3DMark Fire Strike

実ゲームに近い3DMark系で確かめていきます

eGPU OcuLink USB4 Enclosure

※内部ディスプレイ OcuLink > USB4 USB4 ネイティブ
Graphics Score 35615 33501
Physics Score 24496 24478
Combined Score 10532 10631
総合スコア 27265 26370
※外部ディスプレイ OcuLink > USB4 USB4 ネイティブ
Graphics Score 42314 38478
Physics Score 24714 23849
Combined Score 10688 10800
総合スコア 30165 28538

おお、ここでは如実に結果に表れています

フランケン化の効果が出ていますが、思っていたほどではないですね。これは私が使っているGPUがRTX4090mであるため、スペック的にそこまで高くないせいで差が小さいのかもしれません。ネーミング詐欺なので実際にはデスクトップのRTX4070Ti程度ですのでね

これがデスクトップ版のRTX5080とか4090/5090あたりになってくるともっと顕著な差が出るのかもしれません

また、外部ディスプレイと内部ディスプレイの差も興味深いです

USB4ネイティブであっても、外部ディスプレイで使用すればフランケン化+内部ディスプレイの組み合わせで使用する時よりもパフォーマンスが良いのですね

Fire StrikeのGraphics Score、ネイティブOcuLink接続のスコアは40101でしたので、このベンチではOcuLinkと同等の性能を発揮できていると言っていいのではないかと思います

3DMark Time Spy

指標になりがちなTime Spyです

eGPU OcuLink USB4 Enclosure

※内部ディスプレイ OcuLink > USB4 USB4 ネイティブ
Graphics Score 17746 18336
Physics Score 9332 9168
総合スコア 15627 15944
※外部ディスプレイ OcuLink > USB4 USB4 ネイティブ
Graphics Score 19850 19084
Physics Score 9570 9331
総合スコア 17095 16497

これはまた予想外。Fire Strikeと同じ傾向になるかと思いましたが、こちらではフランケン化の効果は表れていません

一方で外部ディスプレイで利用することによるパフォーマンスアップは確実にあるということも分かります

OcuLinkでネイティブ接続した際のGraphics Scoreは20106でしたのでこちらもほぼ同等と言えるかと思います

なお、以後のベンチ結果はCPU性能も結果に反映された総合スコアでしか確認できずグラフィック性能だけでの比較はできないので、OcuLinkとの比較はありません

3DMark Port Royal & Speed Way & Steel Nomad

eGPU OcuLink USB4 EnclosureeGPU OcuLink USB4 EnclosureeGPU OcuLink USB4 Enclosure

※内部ディスプレイ OcuLink > USB4 USB4 ネイティブ
Port Royal 11802 11084
Speed Way 5027 4999
Steel Nomad 4690 4708
※外部ディスプレイ OcuLink > USB4 USB4 ネイティブ
Port Royal 12368 11883
Speed Way 5320 5149
Steel Nomad 4743 4751

これらもTime Spyと同じ傾向ですね

フランケン化の効果は無いと言っていいと思いますが外部ディスプレイでのパフォーマンスアップはあり、フランケン化して内部ディスプレイで使用するよりもネイティブUSB4接続で外部モニター使用の方が優れていそうです

モンハンワイルズベンチマーク

実ゲームを想定してのベンチ

このベンチは使用環境によって勝手にデフォルト設定が決められてしまいますが、今回はAYANEO FLIP 1S DS内部ディスプレイでのデフォルトであった「解像度1920×1080・プリセットウルトラ」で統一しています

なお、ゲームの快適性を知りたいわけではないのでフレーム生成はオフです

eGPU OcuLink USB4 Enclosure

※内部ディスプレイ OcuLink > USB4 USB4 ネイティブ
スコア 18393 14325
平均FPS 54.93 FPS 44.79 FPS
評価 快適にプレイできます 快適にプレイできます
※外部ディスプレイ OcuLink > USB4 USB4 ネイティブ
スコア 19307 14835
平均FPS 57.35 FPS 45.61 FPS
評価 快適にプレイできます 快適にプレイできます

これは明らかに効果が見られますね

今回は検証のためフレーム生成を切ってしまっているので実際のゲームのプレイ感ではまた違うかもしれませんが、モンハンワイルズにおいてはフランケンシュタイン化することで大きな恩恵を受けられる可能性がありそうです

FF14&FF15ベンチマーク

設定は内部/外部どちらも統一。FF14/FF15共にデフォルトのままで

  • FF14:1920×1080・高品質(デスクトップPC)・ウィンドウ
  • FF15:1920×1080・標準品質・ウィンドウ

となっています

eGPU OcuLink USB4 EnclosureeGPU OcuLink USB4 Enclosure

※内部ディスプレイ OcuLink > USB4 USB4 ネイティブ
FF14 スコア 15606 15557
FF14 評価 非常に快適 非常に快適
FF15 スコア 15200 14390
FF15 評価 非常に快適 非常に快適
※外部ディスプレイ OcuLink > USB4 USB4 ネイティブ
FF14 スコア 17011 16317
FF14 評価 非常に快適 非常に快適
FF15 スコア 15632 14734
FF15 評価 非常に快適 非常に快適

逆にこちらはいまいち効果が見受けられませんね

FF14の方は外部ディスプレイに出力する方が良いという傾向は表れていますが……

おまけ:FLIP 1S DSでローカルLLMのgpt-oss-120bを使う

ちょっと脱線してしまうのですがeGPUに関連する話として

eGPUを使用する目的として、ゲーム以外にクリエイションやAIもあるかと思います

ちょうどタイムリーな話題として、昨日ONEXPLAYERがRyzen AI Max(Strix Halo)を搭載したAviator APEX(本当にONEXFLY APEXからの名称変更はあるのか?)を発表しました

画像生成や画像編集であればNvidiaのGPUが圧倒的に良いのですが、LLMにおいてはVRAM量とメモリ帯域が命なわけですので、256bitのメモリバスを持ちVRAMに最大96GBを割り当てられるハンドヘルド機ということで注目されていますよね

GPD Win 5が先行しているけど128GBメモリモデルは来年まで出せないそうなのでLLMにおける優位性は薄れてしまいました

VRAM 96GBまで割り当てられるのでパラメーター数1000億超えのモデル――例えばちょっと前に話題になったgpt-oss-120bもローカル動作します。動かすことすら難しいモデルなのにハンドヘルド機で使えるなんてすごいと話題なわけですね

がしかし。eGPUを使えばAYANEO FLIP 1S DSでもgpt-oss-120bを動かすことができます(“使える”とは言わない)

AYANEO FLIP 1S DSは最大でも64GB RAMモデルまでしかないので、そのままではgpt-oss-120bを展開することすらできません。しかしeGPUを使えばそこに別途VRAMが8GBとか16GBとかプラスされますのでモデルを走らせることができるようになります

私が今回使っているのはRTX4090mですのでVRAM容量は16GB。当然これだけでは120bモデルを使えないのですが、溢れた分はシステムメモリで賄うことで使用できているというわけです

RAM使用量は50GB程度。システムと合わせると61GBでしたのでほんとギリギリです(笑) なのでこんなバカみたいなことをやるためには、iGPUへのVRAM割り当てを3GB未満にしてあげないと足りないということになります。私は0.5GBまで減らしました

使ってみたところがこちら

AYANEO FLIP 1S DS gpt-oss-120b

プロンプトは上記の通りで、ブラウザで遊べる簡単なクイズを作ってもらいました。厳しいことは分かりきっているのでコンテキスト長は4Kです(泣)

AYANEO FLIP 1S DS gpt-oss-120b

無事に出力されましたが……6.82tok/s。お遊びなので何も設定せずただLM Studioに入れただけなのですが、とはいえ遅いです

AYANEO FLIP 1S DS gpt-oss-120b

出来上がったゲームはこちらで、ちゃんと動くのですが

AYANEO FLIP 1S DS gpt-oss-120b

何やらおかしな部分もあったりします。コンテキスト長をもっと長くすれば改善するでしょうが、生成時間もどんどん遅くなっていくことは明らかなのでお遊びの今回は未実施です

Strix Haloの生成速度は40tok/s程度と言われています

と言ってもコンテキスト長をはじめとした設定が分からないので何とも言えないのですが、それにしても全然敵いませんね。でもGPD Win 5やAPEXと比べてかなり小さいAYANEO FLIP 1Sでも動いたというのは妙なおかしさがあります

Aviator APEXは白モデルがなくなってしまったっぽいので、買おうと思っていましたがちょっと迷っています。来年Strix Haloを搭載したGPD Win Maxが出るならそっちを買おうかなと

まとめ

ということで今回はeGPUに関連する話題を書かせていただきました。最後ちょっとどうでもいい話題も書いてしまいましたが……

今回の主旨は、USB4接続では性能が低下してしまってもったいないeGPUを、どうにかより効率的に使えないかというものになっていました。結果は

一部効果は認められるものの、大半の検証ではネイティブ接続と大差なかった

というものでちょっと残念です

フランケンシュタイン化の代償として、NVMeエンクロージャーを経由するとeGPUドック側に備わっている機能は使えなくなります。そもそもそれがボトルネックなので無くそうという狙いなのだから当然です

なのでeGPUに備わっている各ポートだとか、SSD載せられるモデルならそのSSDだとか、あと基本的な機能であるPD給電だとかは全部使えなくなってしまいます

ここに別途サンボルドックを用意してデイジーチェーンで繋げば使えるのでは? とか考えてる方もいるようですが、私はそこまで試せていませんので未検証です

これらを犠牲にしてまでフランケンシュタイン化するかというと……私はネイティブ接続でいいかなという感じでした(笑)

なお、私は実ゲームはほとんどやらないので正確な情報を伝えられなくて申し訳ないのですが、こうした性能差はゲームやその設定によっても結構差が出るそうです。今回も、モンハンワイルズだけは著しい効果があったような感じでしたね

フランケンシュタイン化によってOcuLinkとほぼ同じ性能が発揮できるゲームもあれば、ネイティブUSB4接続とほとんど変わらないぐらいの性能しか出ないゲームもある。どのゲームをどの設定でやりたいかはほんと人それぞれだと思いますので、最終的には結局自分で試してみるしかないということになってしまいそうですね

ということでたぶん「やってみよう」と思われる方はいないと思いますが、もし試してみる場合にはエンクロージャー選びから気を付けて、人柱覚悟でトライアンドエラー頑張っていただけたらと思います

それではまた~

コメント