AIによるチャットボットの作り方>AIチャットボット環境の作り方と故障診断>GPUの故障診断 - 更新

GPUの故障診断

AIゆめ
AIゆめ
   ディープラーニング用GPU環境の作り方で記述した通り、Ubuntu(現在はUbuntu22.04LTS)環境でGTX1080を使用していますが、メモリーサイズが400MB程度の軽い使用状況では問題ないけれども、Style GANやStable DiffusionなどのようなTensorflowを使用した大型のプロセスを起動すると、GPUがハングアップするという現象が増えて来ました。GTX1080は、2016年から販売開始されたゲーマーに人気のGPUであり、ネットで検索すると、かなりの故障情報が掲載されています。GTX1080を取り外してみると、冷却フィンの周辺にはかなり埃が堆積しており、このため、かなり温度が高い状況で使用していたことが寿命を縮めた原因かも知れません。
Tensorflow2.14になってから、NVIDIA ドライバーがシステムにインストールされてさえいれば、CUDA パッケージがなくても、pip install tensorflow[and-cuda] を実行して TensorFlow の NVIDIA CUDA ライブラリの依存関係を Python 環境にインストールできるようになりました。また、 TensorFlow 2.15 では、CUDA がバージョン 12.2 にアップグレードされましたので、もしかしたら、この辺りの変更がGPUのハングアップに関係しているかもしれないと思い、GPU自体の異常かどうかを判断するため、GPUの故障診断をしたいと思いました。しかし、古い情報に攪乱されて、意外にもGPUの故障診断に手間取ったので、忘備録としてまとめておきます。

MODSツールによるGPUの故障診断

   GPUの故障診断として、最初に見つけたのが、Nvidia MODSというツールによるGPUの故障診断でした。MODSというツールは、Nvidiaの修理業者から流出したと言われている一般公開されていないツールであり、まず、そのモジュールを探すのに一苦労。YouTubeの動画を頼りに、個人のGoogleドライブからダウンロードし、rufusで、mats.imgというイメージを起動可能なUSBドライブを作成しましたが、結局、USBドライブから起動できずに諦めました。

gpu-burnによるGPUのストレステスト

   激しい名前が付いたかなり古いツールであり、簡単にbuildしてテストできると記述されているサイトが多数あるものの、新たなCUDAに対応する設定がわからず、結局、buildできずに諦めました。その他にも、類似の古いツールはあるけれども、どのツールも設定がかなり古く、失敗の連続でした。

memtestG80によるGPUのメモリーテスト

   memtestG80からダウンロードし、下記のコマンドで make エラーは出るけれども、実行可能ファイルが作成され、実行することはできました。しかし、nvidia-smi コマンドで確認したところ、8192MiB 中の 242MiB しか使用されず、50ステップのテストがパスしてしまい、エラーを見つけることはできませんでした。

$ git clone https://github.com/ihaque/memtestG80
$ cd memtestG80
$ make -f Makefiles/Makefile.linux64
$ ./memtestG80
...
Test iteration 50 (GPU 0, 128 MiB): 0 errors so far
	Moving Inversions (ones and zeros): 0 errors (5 ms)
	Memtest86 Walking 8-bit: 0 errors (38 ms)
	True Walking zeros (8-bit): 0 errors (19 ms)
	True Walking ones (8-bit): 0 errors (19 ms)
	Moving Inversions (random): 0 errors (4 ms)
	Memtest86 Walking zeros (32-bit): 0 errors (76 ms)
	Memtest86 Walking ones (32-bit): 0 errors (75 ms)
	Random blocks: 0 errors (5 ms)
	Memtest86 Modulo-20: 0 errors (183 ms)
	Logic (one iteration): 0 errors (3 ms)
	Logic (4 iterations): 0 errors (5 ms)
	Logic (shared memory, one iteration): 0 errors (3 ms)
	Logic (shared-memory, 4 iterations): 0 errors (4 ms)

Final error count after 50 iterations over 128 MiB of GPU memory: 0 errors

NVIDIA社のGPUStressTestによるGPUのテスト

   最終的に NVIDIA 社が公開している GPUStressTest に辿り着き、Tensorflow を使用した大型のプロセスを起動した時と同様の現象を再現することができ、GPUハードウェア自体の問題であろうと推定することができました。

$ git clone "https://github.com/NVIDIA/GPUStressTest
$ cd GPUStressTest
$ mkdir build
$ cd build
# ../CMakeLists.txt を使って Makefile を作る
$ cmake ..
$ make
$ ./gst
./gst capturing GPU information...
WATCHDOG starting, TIMEOUT: 600 seconds
Detected 1 CUDA Capable device(s)
Device 0: "NVIDIA GeForce GTX 1080"
Initilizing Generic test suite
GPU Memory: 7, memgb: 8

Device 0: "NVIDIA GeForce GTX 1080", PCIe: 1

***** STARTING TEST 0: FP16 On Device 0 NVIDIA GeForce GTX 1080
#### math_type 0  
#### args: matrixSizeA 1846001664 matrixSizeB 1885261248 matrixSizeC 346963968 
#### args: ta=N tb=N m=18432 n=18824 k=100152 lda=18432 ldb=100152 ldc=18432 loop=10
***** TEST FP16 On Device 0 NVIDIA GeForce GTX 1080
***** TEST PASSED ****
TEST TIME: 162 seconds
(ここまでは162秒でパス)
WATCHDOG sem_timedwait
: Connection timed out
WATCHDOG thread exiting....
(この状態でGPUがハングアップ)
別のターミナルから nvidia-smi コマンドで調べた結果、下記の通り、メモリーは 8192MiB 中の 7898MiBまで使用され、GTX1080 の温度も 83℃になっているものの、ここまでは162秒でパスしています。

$ nvidia-smi
Sat Nov 18 22:04:09 2023       
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 545.23.06              Driver Version: 545.23.06    CUDA Version: 12.3     |
|-----------------------------------------+----------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |         Memory-Usage | GPU-Util  Compute M. |
|                                         |                      |               MIG M. |
|=========================================+======================+======================|
|   0  NVIDIA GeForce GTX 1080        On  | 00000000:01:00.0 Off |                  N/A |
| 79%   83C    P2             166W / 240W |   7898MiB /  8192MiB |    100%      Default |
|                                         |                      |                  N/A |
+-----------------------------------------+----------------------+----------------------+
                                                                                         
+---------------------------------------------------------------------------------------+
| Processes:                                                                            |
|  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
|        ID   ID                                                             Usage      |
|=======================================================================================|
|    0   N/A  N/A      2737      G   /usr/lib/xorg/Xorg                            4MiB |
|    0   N/A  N/A     23039      C   ./gst                                      7890MiB |
+---------------------------------------------------------------------------------------+
GPUがハングアップした状態で、別のターミナルから nvidia-smi コマンドで調べると、応答に時間がかかり、Fan と Power の状態が取得できていません。

$ nvidia-smi
Sat Nov 18 22:28:20 2023       
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 545.23.06              Driver Version: 545.23.06    CUDA Version: 12.3     |
|-----------------------------------------+----------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |         Memory-Usage | GPU-Util  Compute M. |
|                                         |                      |               MIG M. |
|=========================================+======================+======================|
|   0  NVIDIA GeForce GTX 1080        On  | 00000000:01:00.0 Off |                  N/A |
|ERR!   44C    P0             ERR! / 240W |     92MiB /  8192MiB |    100%      Default |
|                                         |                      |                  N/A |
+-----------------------------------------+----------------------+----------------------+
                                                                                         
+---------------------------------------------------------------------------------------+
| Processes:                                                                            |
|  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
|        ID   ID                                                             Usage      |
|=======================================================================================|
|    0   N/A  N/A      2737      G   /usr/lib/xorg/Xorg                            4MiB |
|    0   N/A  N/A     23039      C   ./gst                                        84MiB |
+---------------------------------------------------------------------------------------+

GPUStressTestによるRTX3060のテスト

   以上のテストによりGPU本体のハード的な問題であることが明確になったため、性能と価格の面から NVIDIA GeForce RTX 3060 を購入することにしました。MSI社のGeForce RTX 3060 GAMING X 12Gと、ASUS社のDUAL Series GEFORCE RTX3060 OC12Gを比較し、購入時に安価であったASUS社のDUAL Seriesに決めました。中古もありましたが、新品との価格差が小さく、保証も1年ついていることから、新品を選択しました。RTX3060のインターフェースはPCI Express4.0ですが、GTX1080用のPCに搭載しますので、インターフェースはPCI Express3.0になります。GPUとのやり取りが多い用途ではインターフェースがボトルネックになることもあるでしょうが、用途がAIですので、これがボトルネックになることは殆どないでしょう。
そして、GPUStressTestによりRTX3060をテストした結果は以下の通り、問題なくパスしました。このテストは、初期不良の発見にも役立ちそうです。

$ ./gst
./gst capturing GPU information...
WATCHDOG starting, TIMEOUT: 600 seconds
Detected 1 CUDA Capable device(s)
Device 0: "NVIDIA GeForce RTX 3060"
Initilizing Generic test suite
GPU Memory: 11, memgb: 8

Device 0: "NVIDIA GeForce RTX 3060", PCIe: 1

***** STARTING TEST 0: FP16 On Device 0 NVIDIA GeForce RTX 3060
#### math_type 0  
#### args: matrixSizeA 1846001664 matrixSizeB 1885261248 matrixSizeC 346963968 
#### args: ta=N tb=N m=18432 n=18824 k=100152 lda=18432 ldb=100152 ldc=18432 loop=10
***** TEST FP16 On Device 0 NVIDIA GeForce RTX 3060
***** TEST PASSED ****
TEST TIME: 26 seconds

***** STARTING TEST 1: C32 On Device 0 NVIDIA GeForce RTX 3060
#### math_type 4  
#### args: matrixSizeA 499487160 matrixSizeB 407690620 matrixSizeC 78645792 
#### args: ta=N tb=N m=9816 n=8012 k=50885 lda=9816 ldb=50885 ldc=9816 loop=10
***** TEST C32 On Device 0 NVIDIA GeForce RTX 3060
***** TEST PASSED ****
TEST TIME: 34 seconds

***** STARTING TEST 2: FP32 On Device 0 NVIDIA GeForce RTX 3060
#### math_type 2  
#### args: matrixSizeA 1900663264 matrixSizeB 1899702848 matrixSizeC 250525568 
#### args: ta=N tb=N m=15832 n=15824 k=120052 lda=15832 ldb=120052 ldc=15832 loop=10
***** TEST FP32 On Device 0 NVIDIA GeForce RTX 3060
***** TEST PASSED ****
TEST TIME: 15 seconds

***** STARTING TEST 3: FP64 On Device 0 NVIDIA GeForce RTX 3060
#### math_type 5  
#### args: matrixSizeA 277820928 matrixSizeB 208365696 matrixSizeC 15925248 
#### args: ta=N tb=N m=4608 n=3456 k=60291 lda=4608 ldb=60291 ldc=4608 loop=10
***** TEST FP64 On Device 0 NVIDIA GeForce RTX 3060
***** TEST PASSED ****
TEST TIME: 338 seconds

***** STARTING TEST 4: FP32 On Device 0 NVIDIA GeForce RTX 3060
#### math_type 0  
#### args: matrixSizeA 2166998240 matrixSizeB 1590727680 matrixSizeC 260333568 
#### args: ta=N tb=N m=18832 n=13824 k=115070 lda=18832 ldb=115070 ldc=18832 loop=10
***** TEST FP32 On Device 0 NVIDIA GeForce RTX 3060
***** TEST PASSED ****
TEST TIME: 23 seconds
   このテスト期間中、最大温度64℃で問題ありませんでした。PCの外枠を外した状態での実行でしたが、GTX1080に比較してファンが静かに感じました。

$ nvidia-smi
Tue Nov 21 22:09:11 2023       
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 545.23.06              Driver Version: 545.23.06    CUDA Version: 12.3     |
|-----------------------------------------+----------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |         Memory-Usage | GPU-Util  Compute M. |
|                                         |                      |               MIG M. |
|=========================================+======================+======================|
|   0  NVIDIA GeForce RTX 3060        On  | 00000000:01:00.0 Off |                  N/A |
| 63%   64C    P2             141W / 170W |   7852MiB / 12288MiB |    100%      Default |
|                                         |                      |                  N/A |
+-----------------------------------------+----------------------+----------------------+
                                                                                        
+---------------------------------------------------------------------------------------+
| Processes:                                                                            |
|  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
|        ID   ID                                                             Usage      |
|=======================================================================================|
|    0   N/A  N/A      2614      G   /usr/lib/xorg/Xorg                            4MiB |
|    0   N/A  N/A      5926      C   ./gst                                      7838MiB |
+---------------------------------------------------------------------------------------+
   通常は43℃程度で、ファンが回っているのかどうかわからない状態です。これはお買い得商品でしょう。

$ nvidia-smi
Tue Nov 21 22:13:35 2023       
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 545.23.06              Driver Version: 545.23.06    CUDA Version: 12.3     |
|-----------------------------------------+----------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |         Memory-Usage | GPU-Util  Compute M. |
|                                         |                      |               MIG M. |
|=========================================+======================+======================|
|   0  NVIDIA GeForce RTX 3060        On  | 00000000:01:00.0 Off |                  N/A |
| 53%   43C    P2              54W / 170W |   7786MiB / 12288MiB |    100%      Default |
|                                         |                      |                  N/A |
+-----------------------------------------+----------------------+----------------------+
                                                                                         
+---------------------------------------------------------------------------------------+
| Processes:                                                                            |
|  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
|        ID   ID                                                             Usage      |
|=======================================================================================|
|    0   N/A  N/A      2614      G   /usr/lib/xorg/Xorg                            4MiB |
|    0   N/A  N/A      5926      C   ./gst                                      7772MiB |
+---------------------------------------------------------------------------------------+


ページトップへ

運営会社情報 | プライバシー・ポリシー
Twitter Twitter Facebook Mail Line

* 無断転載禁止。
* どのページでもご自由にリンクして下さい。
* ご意見・ご質問等がございましたら こちらからメールをご送付下さい。 無料SEO対策 -172.31.37.45。