Jakho

Jakho

Full Stack developer.
x

老主板使用 Tesla V100 グラフィックカードの苦難の歴史

背景#

フロントエンド開発は、現在の一般的な開発シーンで使用されるコンピュータの性能が高くないため、以前に 1k 未満で闲鱼で I5-6600 + Mini ITX マザーボードの小型ケースを手に入れ、主力の開発に使用してきました。32G のメモリを搭載した後、内蔵グラフィックスドライバーでも日常の開発には十分であり、iOS の開発タスクに直面したときには MacBook も使用できます。この期間、注目を集めている AI は本当に人気があり、偶然にも会社のいくつかの業務で Stable Diffusion を使用して小さなアプリケーションを作成することがあり、試してみたところ非常に面白いと感じました。会社の開発環境の計算能力は共有されているため、古いハードウェアをできるだけ活用して、グラフィックスカードをアップグレードして AI を楽しむことができるかどうかを考えました。

配件选型#

AI の絵画には、モデルやトレーニングデータを保存するために大量のビデオメモリが必要です。そのため、ビデオメモリの容量が大きいほど、AI の絵画の効果が良くなります。ビデオメモリの容量は、私にとって非常に重要な選定基準です。ネット上の多くの投稿を見たところ、一般的には AI の絵画タスクをこなすには少なくとも 8GB のビデオメモリが必要ですが、より高解像度の画像を描画し、ビデオメモリが不足しないようにするためには、16GB 以上のビデオメモリ容量を選択することをお勧めします。

闲鱼で検索すると、P102、P104、P106、P40、M40、P100 などの古い計算カードはコストパフォーマンスが非常に高く、8G のビデオメモリや 16G のビデオメモリの門槛を数百元で手に入れることができます。最初は P100 を今回のアップグレード用のグラフィックスカードとして選ぶつもりでした。しかし、パスカルアーキテクチャは確かに古くなっていることを考慮し、V100 チップが P100 の次世代であり、性能がより強力で、価格差もそれほど大きくないことを見て、思い切って V100 SXM2 16GB サーバーバージョンの計算カードを選びました(後で SXM2 を選んだ理由について触れます)。

装机配置#

以下は今回の装置の構成です:

マザーボード:GIGABYTE GA-B250M-DS3H
CPU:Intel Core I5-6600
グラフィックスカード:NVIDIA V100 SXM2 16G
メモリ:光威悍将 16G 2666MHz 2 枚
ハードディスク:Seagate 酷玩 520 1TB SSD

マザーボードは古いマシンで使用していた第 6 世代 I5 を考慮して購入しました。また、大きなグラフィックスカードを搭載する必要があるため、サイズを考慮して M-ATX マザーボードを選びました。古いマシンは小型で DC 電源を使用しているため、売却してもあまり価値がないので、闲鱼で 20 元程度で G4400T の低消費電力チップを手に入れ、Debian をインストールして NAS デバイスにしました。メモリは安いものを選びましたが、古いマザーボードのため、サポートされる周波数は 2400 を超えません。ハードディスクは古いマシンから取り外したもので、ハードディスクの価格が上昇する前に东子家国際で 299 元で購入しました。価格が急騰しているのを見て、もっと買っておけばよかったと後悔しています。

グラフィックスカードは重要な選択で、Tesla V100 を選びましたが、SXM2 バージョンであり、家庭用 PC マザーボードで使用するには PCIE 変換カードが必要です。変換カードの価格はグラフィックスカードとほぼ同じで、1300 元以上です。PCIE バージョンを直接購入しない理由は、価格がほぼ同じですが高価だからです。しかし、将来的にグラフィックスカードが時代遅れになった場合、変換カードは引き続き使用でき、他の SXM2 仕様のグラフィックスカードに交換することもできます。このタイプのグラフィックスカードは、一般的に PCIE バージョンよりも安価です。

なぜ魔改グラフィックスカードを選ばないのか#

ご存知の通り、現在、魔改版の 2080TI 22G は錬金術や絵画においてコストパフォーマンスが高く、チューリングアーキテクチャもより先進的ですが、やはりメモリチップを交換していることを考慮すると、安定性に関するネット上の評価はあまり良くありません。総合的に考慮した結果、サーバー専用の計算カードを選択しました。

BIOS を変更してマザーボードが Above 4G をサポートするようにする#

上記の構成が完成した後、電源を入れると、まさかのことに起動できず、BIOS 画面に直接入ってしまい、大量の英語のメッセージが表示されました。内容は、PCI リソースが不足しているため、PCI デバイスをドライブできないというものでした。

image

この時、私は急いで関連するケースをネットで検索し、解決策があるかどうかを確認しました。検索してみると、実際に解決策がありました。それは、マザーボードの BIOS で「Above 4G」というスイッチを見つけて、それを有効に設定することです。もしあなたのマザーボードの BIOS が Resizable BAR を有効にできる場合は、さらに良いです。それも一緒に有効にすると、性能が向上します。

また、Above 4G を有効にすると、システムのブート方式も UEFI に変更する必要があり、マザーボードの BIOS 内の CSM オプションを無効に設定する必要があります。UEFI を使用してシステムを再インストールする方法についてのチュートリアルをネットで探すことができ、多くの情報があり、非常に簡単ですので、ここでは詳しく説明しません。

要するに、3 つのオプションを設定する必要があります。

  1. Above 4G を有効にする
  2. Resizable BAR を有効にする(ある場合)
  3. システムブートの CSM 互換性を無効にする

重要なことに、私の GIGABYTE B250M マザーボードにはこのオプションがないことに気づきました。同じマザーボードの多くのケースをネットで探しましたが、解決策は見つかりませんでした。したがって、BIOS の隠しオプションを変更するしかありませんでした。

AMIBCP を使用してマザーボードの隠しオプションを有効にする#

まず、グラフィックスカードをマザーボードから取り外します。そうしないと、システムに入ることができません。

システムに正常に起動した後、マザーボードの公式サイトから最新の BIOS ファイルをダウンロードして、魔改のベースとして使用します。

AMIBCP ソフトウェアをダウンロードし、先ほどダウンロードしたオリジナルの BIOS ファイルを開きます。注意点として、ソフトウェアはデフォルトでフォーマットを制限しているため、すべてのタイプのファイルオプションを選択する必要があります。

image

image

次に、図に従って Above 4G オプションを見つけ、Access/Use を User に変更し、残りの 2 つの項目をデフォルトで Enabled に変更します。

image

image

変更が完了したら、新しい BIOS ファイルとして保存するか、別名で保存します。元の BIOS と区別できるようにして、将来的に元の BIOS に戻したい場合にファイルを見つけられなくなることを避けます。

AFUWINGUI を使用して BIOS をフラッシュする#

GIGABYTE マザーボードを例にすると、修正後の BIOS ファイルは公式の更新方法でマザーボードの BIOS を更新することができず、必ずサードパーティのフラッシュ方法を使用する必要があります。方法はいくつかありますが、私は最も便利な方法、つまり Windows 上で直接フラッシュする方法を選びました。

まず、AFUWINGUI をダウンロードして開きます。

image

開始ボタンをクリックし、先ほど修正した BIOS ファイルを選択します。

次に、右側の更新ボタンをクリックし、更新状態が完了するのを待ち、Done と表示されたら、修正した BIOS が正常にフラッシュされました。

GPU-Z ソフトウェアを使用して、以下の図のオプションに入ることができ、Above 4G がすでに有効になっていることが確認できます。

image

この時点で、電源を切ってグラフィックスカードを装着し、再起動できます。

後記#

タイトルにあるように、困難な道のりについてですが、もちろんそれほど簡単ではありません。グラフィックスカードを装着した後、正常に認識され、NVIDIA のドライバーをインストールすると、ビデオメモリの周波数などもすべて正常でした。

私が奇妙に感じたのは、再起動後にコマンドラインでnvidia-smiを実行すると、デバイスがないと表示されたことです。デバイスマネージャーを開くと、グラフィックスカードに三角の感嘆符が付いていました。何度再起動しても効果がなく、どうやら失敗したようです。その後、ドライバーをアンインストールし、再起動して再インストールすると、すぐにドライバーが正常に認識されました。再起動すると、また三角の感嘆符が表示されました。

何か設定を見落としたのでしょうか?全く理解できず、数日間試行錯誤しても原因がわかりませんでした。ネット上にも関連するケースはありませんでした。

ある日、当時撮ったグラフィックスカードの写真を見返すと、実際にグラフィックスカードの右上角にコイルが落ちていることに気づき、すぐに売り手に連絡して交換を依頼しました。原因はここにあるかもしれないと思いました。

image


長い待機の後、交換品を挿入したところ、まさかのことに WIN10 で再起動後にドライバーを再度アンインストールしてからインストールしないと正常に使用できないことがわかりました。おそらくマザーボードが古すぎるか、システムドライバーのどこかが合っていないのかもしれません。しかし、私は元々あまりシャットダウンしないので、妥協して使用しています。後で時間があれば WIN11 をインストールするか、他の方法を試してみようと思います。


後で気づいたのは、ドライバーが成功したその 1 回だけ、NVIDIA ドライバー管理に入って ECC 検出をオフにするだけで、再起動後にドライバーが落ちなくなることが確認できました。


数日後、この方法は無効になり、引き続き解決策を探していると、最終的に妥協案を見つけました。それは、シャットダウン前にスクリプトを実行してグラフィックスカードをアンインストールし、起動時にこのグラフィックスカードが正常に検出され、正常にドライブされるというものでした。理由は、マザーボードがコンシューマー向けプラットフォームであり、サーバープラットフォームではないため、PCIE のチャンネル数が少なく、チャンネル数が逼迫するとグラフィックスカードのリソース不足が発生しやすくなるからです。この問題を解決するためには、シャットダウン前にグラフィックスカードをアンインストールし、起動時にこのグラフィックスカードの検出をスキップさせる必要があります。起動時にコンピュータがこのグラフィックスカードを検出し、再度ドライブされると、正常に認識されます。これを解決するために、ワンクリックスクリプトを作成できます。

C ドライブにScriptsというディレクトリを作成し、.txtファイルを作成して以下の内容を保存します(保存時に ANSI エンコーディング形式を選択することに注意し、Uninstall-NVIDIA.ps1として保存します):

$deviceName = "NVIDIA Tesla V100-SXM2-16GB"
$device = Get-PnpDevice | Where-Object { $_.FriendlyName -eq $deviceName }
if ($device) {
  pnputil.exe /remove-device $device.InstanceId
}

現在のディレクトリに再度.txtファイルを作成し、以下の内容を保存してUninstall-GPU.batとして保存します:

@echo off
powershell.exe -ExecutionPolicy Bypass -File "C:\Scripts\Uninstall-NVIDIA.ps1"

これで、毎回シャットダウン前にこのアンインストールスクリプトUninstall-GPU.batをクリックすれば、再起動またはシャットダウン後に正常にグラフィックスカードを認識できるようになります。現在、これが最適な解決策です。もしこれを望まない場合は、PCIE チャンネル数がもっと多いマザーボード(X99 や X299 など)に交換するしかありません。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。