eGPUのCUDA環境を導入

半導体不足の影響かGoogle Colabが使いにくくなってきた一方で、Bitcoinブームの落ち着きGPUの価格も安定してきたのでGPUを導入し計算性能を強化することにしました。

もともとeGPUという技術にも興味があり多少枯れてきた印象がある一方、まだまだ情報が少ないこともあって人柱的に思い切って挑戦しました。

導入費

GPUやeGPUケースの価格はAmazonでは未だOverpricedだったのでヤフオクなど順番に見て回りました。ヤマダ電機の子会社となったツクモや、ドスパラで正価で取り扱いがありました。ありがたやー。

機材 購入元 費用
Razer Core X - RC21-01310100-R3J1 ツクモネットショップ 39,800円
ASUS DUAL-RTX3060-O12G-V2
GeForce RTX 3060 12GB
ドスパラ 52,290円
合計   92,090円

環境

LinuxブートプロセスやNVM-express Linux Device Driverの知識を爆発的に向上させてくれた愛機(*1)を使います。組み込みNVIDIA GPUがついた機種だとeGPUと干渉するといった前評判がありましたが懲りずにヤブの蛇をつつきに行きます。

  • Dell Inspiron 7490 (2019)
    • Intel Core i7-10510U
    • RAM 16GB, LPDDR3, 2133MHz
    • NVIDIA GeForce MX250
    • Thunderbolt 3
  • Windows 11 (22622.450 ni_release)
  • WSL2

*1 補足

当機はUEFIでAHCIをOffにできない&LinuxがNVMeを宇宙の彼方にremapしてしまうことからLinuxを導入できないという問題があり、エキスパートが集まって発売後1年くらい試行錯誤が行われていました。 そうこうしているうちに、WSLが発表されWSL2がGPU対応するという激変の3年でした。

パッチも提案されているんですけど、Kernelの本家リポジトリにはマージされず…ポツポツそういう機種もあるし、公式サポートしてくれないかなぁ…と思いつつ、OSSコミュニティの脆弱性みたいなものにも思いが至ったのでした。

導入手順

導入の形態としてはGPUさんにはGPU Computing資源としての生涯を歩んでいただくことを決めているのでHDMIなどのポートは使いません。

  1. Razer Core Xの組立
    GPUケースの写真や組み立ては豊富に先行事例があるので省略します。
  2. Windows 11 - 電源オプションの変更
    全体のなかでは、ここが一番大事でした。
    電源オプションを開き、PCI Expressの電源管理をオフにします。GPUのHDMIポート等に外部ディスプレイ等を接続しない構成にしたせいかOS側でeGPUを切断する現象が頻発しました。
    電源設定の詳細を編集
  3. 接続
    Razer Core Xの電源を入れ、同梱のthunderbolt 3ケーブルで接続します。
  4. CUDAのインストール(ドライバ同梱)
    公式サイトから最新バージョンのCUDAを入手してインストールします。CUDAには対応するGPUドライバも同梱されているため、別途ドライバは不要です。
  5. 既存GPUの無効化
    GPUの干渉事例が報告されていたため、念のため、MX250を無効化しました。デバイスマネージャー操作です。
    デバイスマネージャ設定画面とNVIDIA-SMI
  6. 動作確認
    1. Windowsでnvidia-smi → OK
    2. WSL2でnvidia-smi → OK
    3. WindowsでpytorchにてMNIST → OK
    4. Hzzone/pytorch-openposeからPretrain済OpenPose → OK

ということで以上、導入完了しました。

トラブルシューティング

デバイスを使用できません(コード47)

前記のとおりPCI Expressの電源管理をオフにしないとOSがGPUを切断しにかかります。切断されるたびに指し直しが必要です。

デバイスマネージャで報告されるエラー

RTX3060は外部GPUに対応していません

20x世代を基準にした警告っぽく、無視して良さそう。

参考

No comments:

Post a Comment