見出し画像

大容量メモリGPUで生成AI (LLM) を楽しむ (約束の地OS/CUDAへ到達)

物事は最後のツメというのが大切で、今回も多大な労力を費やしてOS/CUDAインストールを完了したという話。(顛末記の最終回)

さて前回はWindows 10でnvidia-smiコマンドが無事に表示され、やれやれと大喜びして終わった。しかしこれで終わってはドラマとして成立せず、最終パートとしてOS/CUDAインストールなどが立ちはだかって来た。

Windows編 (WSL2)

捨てる神あれば拾う神あり。
世の中には親切な方もいるもので、Windows向け仮想環境WSL2の導入方法を紹介して下さる金子研究室が存在する。

ここまで親切に解説して下っているのであれば無問題かと思っていたら、とんでもない壁にぶちあたってしまった。
WSL2を起動したら、WSL2へインストールしたUbuntu 22.04でnvidia-smiコマンドを利用できないのである。これはWindowsにNVIDIAドライバをインストール済みであれば、現在のWSL2はNVIDIAドライバが不要となっており、そのためにログイン直後からnvidia-smiを利用できるようになっている。

つまり何が言いたいかというと、「WSL2ではWindowsにインストールされたNVIDIAドライバを正常認識できない」という問題点である。
どうしてそうなっているかというと、過去記事で紹介したNVIDIA開発者フォーラムでのやりとりに基づくと、Telsa P40はTCC modeで動作しているためにWSL2からはドライバを認識できないという事態になっているということだ。現時点でのNVIDIA公式見解は「vGPUで提供しているNVIDIAドライバを利用可能であり、それをご利用ください」とのことである。

うーむ ……

まあP40がTCC modeでしか動作しないのは正しい。TelsaはAIや科学計算用に提供されているGPUなので、グラフィックス機能を重視するWDDM modeで動作させる必要は殆ど存在しない。それにP40等のパッシブ冷却型GPUは、そもそも表示用I/Fを実装していない。VGAポートやHDMIポートが存在しないのである。

そして2023年9月8日時点で、WSL2はWDDM modeのGPUにしか対応していないとのことである。つまり科学計算でゴリゴリ処理するのに利用するとは想定していないとのスタンスである。

だからWDDM modeで動作しているGeForce 980Ti、3080、TITAN XはWSL2上でも何ら問題なくnvidia-smiコマンドに表示される。その一方でTelsa P40は表示されないという事態が発生する。ただしWindows本体はWDDM/TCC modeの双方に対応しており、WindowsレベルではP40をTITAN Xのように使用できるということになる。

正直、これはお手上げだ。現時点では諦めざるを得ない。

ただし全く方法がないかというと、そんなことはない。要はWSL2からP40がWDDM modeで動作している、もしくは動作しているように見えれば良いという訳で、レジストリ・エディタを書き換えるという荒業が存在する。アヤシゲなサイトの情報を参考にレジストリを書き換えたらば、その場では上手くいった。

そしてこの方法がめでたく回避策になるかというと、それも微妙である。2台のPCでレジストリを書き換えてみたけれども、何度か電源オン/オフを繰り返していたら、1台は何も表示されない状態となってしまった。液晶ディスプレイが何の信号も来ていないと解釈し、ディスプレイ側が自動的に電源オンすることもない。

そんな訳で今のところWSL2でP40を利用したければ、WSL & Ubuntu 22.04を起動/修正するたびにレジストリ・エディタを書き換える必要がある。

それからUbuntu 22.04が起動した後は、金子研究室よりもNVIDIA指定の手順に従ってCUDAをインストールするのが良さそうに感じている。"CUDA" "ダウンロードしたいバージョン" "download" で検索をかけると、希望バージョンのダウンロードページが表示される。そこで示されたスクリプトを実行すれば、めでたくお目当てのCUDA環境を実現できるという訳である。

そんな訳で便利なUbuntu 22.04 on WSL2だけれども、Telsa P40の場合は少し使いにくい状況となってしまっている。

Ubuntu編

UbuntuインストールもWindows同様、金子研究室から実施手順が紹介されている。基本的にはこの手順に従えば良い。

ただし理由は分からないけれども、CUDAインストールは説明通りに手順を実施しても、残念ながら希望バージョンをインストールすることが出来ない。そこでCUDAインストール部分だけは、NVIDIAの説明手順に従って導入作業を実施している。こちらでもWindows版CUDAインストールと同じく、 "CUDA" "希望バージョン" "download" と検索をかけると、お目当てのページを見つけ出すことができる。

あと留意事項としては、NVIDIAの手順説明にも不十分な点が存在している。説明手順の最後はCUDA 11となっているが、これではバージョン11の最新版がインストールされてしまう。P40は古いためか利用可能バージョンが限定されており、Pytorchとの相性を考えるとCUDA Version 11.7あたりが便利である。その場合は、「11」→「11-7」のようにNVIDIA説明手順を修正することが必要となる。

UbuntuへのNVIDIAドライバのインストール留意事項

Telsa P40を搭載したマシンへのUbuntuインストールは特に問題ないものの、NVIDIAドライバインストールは問題が多い。私以外でP40を利用する日本人同志が存在するけれども、そちらでもオンボードのディスプレイ機能は利用できないとのことだ。

PCIe接続用の簡易GPUボード

つまりUbuntuでTelsa P40を利用する場合は、上記のような簡易GPUをディスプレイ表示用にPCIeポートへ接続する必要がある。あまり…… というか、全く美しくない構図である。この問題はいつか時間ができた時に解決したいと考えている。
(これを挿すとTelsa P40の通信帯域がx16からx8へダウンしてしまう。だから可能であればオンボードのグラフィックス表示機能などを利用し、なんとかPCIe接続タイプ&モニター表示GPUデバイスを不要化したいと考えているという訳だ)

まとめ

以上が駆け足になってしまったけれども、OS/CUDA導入時の留意事項… というか、僕がハマってしまった箇所だ。

それからできればWindowsとUbuntuのデュアルブートをやりたいところだけれども、どちらかのバージョンが変わるたびに動作しなくなってしまうことがある。これは昔からそうなっており、現在でも完全に解決するのは難しい。

そこで僕の場合はデスクトップPC本体からSSD接続部分だけを人体の盲腸みたいに外出しして、必要に応じてディスクを取り換えることにしている。原始的だけれども、"シンプル・イズ・ベスト" という訳である。

それでは今回は、このへんで。ではまた。

この記事が気に入ったらサポートをしてみませんか?