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 元で 1T を購入しました。価格が急騰しているのを見て、もっと買っておけばよかったと後悔しています。

グラフィックスカードは 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 オプションは disabled に設定する必要があります。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 をインストールするか、他の方法を研究してみようと思います。


後で気づいたのは、ドライバが成功したその一度だけ、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 のようなマザーボードに交換するしかありません。

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