UbuntuでのGPU確認ガイド~nvidia-smiの使い方と設定手順~

1. はじめに

UbuntuでGPUを活用する際には、その状態を正確に確認することが重要です。特に、ディープラーニングやグラフィックレンダリングの作業では、GPUの使用状況やドライバのバージョンを把握することが必須です。この記事では、NVIDIA GPUの管理ツールであるnvidia-smiの使い方について解説し、Ubuntu上でのGPU確認方法を紹介します。

2. nvidia-smiでGPU情報を確認する

nvidia-smiは、NVIDIA製GPUの利用状況やメモリ使用量などをモニタリングできるコマンドラインツールです。特に、GPUの稼働状況をリアルタイムで確認したり、詳細な利用情報を取得したりする際に便利です。

基本的な使い方

以下のコマンドで、GPUの利用状況やメモリ使用量をリアルタイムで確認できます。

nvidia-smi --query-gpu=timestamp,name,utilization.gpu,utilization.memory,memory.used,memory.free --format=csv -l 1

このコマンドでは、GPUの利用率、メモリ使用量、使用可能なメモリ量を含む詳細な情報が取得できます。また、-lオプションで更新間隔を秒単位で指定することも可能です。

表示形式とファイル出力

デフォルトではテーブル形式で表示されますが、処理しやすいようにCSV形式での出力も可能です。また、情報をファイルに記録したい場合は、-fオプションで出力先のファイルパスを指定できます。

nvidia-smi --query-gpu=timestamp,name,utilization.gpu,utilization.memory,memory.used,memory.free --format=csv -l 1 -f /path/to/output.csv

この方法でGPUの利用状況をログとして保存し、後で分析することができます。

3. nvidia-smiでプロセス情報を取得する

nvidia-smiを使用すると、現在GPUを使用しているプロセス情報を取得することができます。これにより、どのプロセスがGPUリソースをどの程度使用しているかを確認できます。

プロセス情報の取得

以下のコマンドで、GPUを利用しているプロセスのPIDやメモリ使用量を確認できます。

nvidia-smi --query-compute-apps=pid,process_name,used_memory --format=csv,noheader

このコマンドは、現在実行中のGPUプロセスのリストを返し、各プロセスのメモリ使用量を表示します。

nvidia-smi pmonサブコマンド

nvidia-smiにはpmonというサブコマンドもあり、GPUを使用しているプロセスの詳細な情報を取得することが可能です。

nvidia-smi pmon --delay 10 -s u -o DT

このコマンドは、指定した間隔でGPUのプロセス情報を表示し、--delayオプションで更新間隔を秒単位で指定します。また、表示する情報の種類を選択することも可能です。

4. NVIDIAドライバのインストールと動作確認

UbuntuでNVIDIA GPUを利用するためには、適切なNVIDIAドライバをインストールする必要があります。以下はドライバのインストールと動作確認の手順です。

ドライバのインストール

まず、システムに適したNVIDIAドライバをインストールします。以下のコマンドを使用して、推奨されるドライバをインストールできます。

sudo apt install nvidia-driver-510

インストールが完了したら、システムを再起動します。

インストールの確認

再起動後、以下のコマンドでドライバが正しくインストールされているか確認します。

nvidia-smi

このコマンドでドライババージョンとCUDAバージョンが表示されれば、正しくインストールされています。

5. TensorFlowでのGPU動作確認

GPUが正しく動作しているか確認するために、機械学習フレームワークであるTensorFlowを使用してテストすることができます。

Anacondaのインストール

まず、Anacondaをインストールして環境をセットアップします。

bash ./Anaconda3-2022.05-Linux-x86_64.sh
conda update -n base conda
conda update anaconda
conda update -y --all
conda install tensorflow-gpu==2.4.1

TensorFlowでの動作確認

次に、TensorFlowでGPUが認識されているか確認します。

from tensorflow.python.client import device_lib
device_lib.list_local_devices()

このコマンドで、GPUデバイスがリストに表示されていれば、TensorFlowがGPUを正常に認識しています。

6. GPUのモニタリングとログの記録

nvidia-smiを使って、リアルタイムでのGPUモニタリングとログの記録が可能です。これにより、長期間にわたるGPUの利用状況を追跡し、パフォーマンスの最適化に役立てることができます。

定期的なモニタリング

定期的なモニタリングを設定する場合、nvidia-smi-lオプションで更新間隔を指定します。また、ファイルへのログ記録も可能です。

nvidia-smi --query-gpu=timestamp,name,utilization.gpu,utilization.memory,memory.used,memory.free --format=csv -l 1 -f /var/log/gpu.log

Pythonバインディングでのプログラブルな操作

nvidia-smiにはPythonバインディング(nvidia-ml-py)があり、Pythonからプログラム的にGPUの情報を取得することも可能です。これを使用することで、よりカスタマイズされたモニタリングや制御が可能です。

7. まとめ

nvidia-smiは、UbuntuでNVIDIA GPUの利用状況を確認し、効果的に管理するための強力なツールです。この記事では、nvidia-smiの基本的な使い方からプロセス情報の取得、ドライバのインストール、TensorFlowでの動作確認までを解説しました。GPUのパフォーマンスを最大限に引き出し、システムの最適化に役立ててください。