Debian 12でCUDA環境を更新したところ、GPU自体はPCIデバイスとして認識されているのに、nvidia-smiコマンドが見つからなくなる事象に遭遇しました。

lspci | grep -i nvidia

ではGPUが表示される一方で、

nvidia-smi
bash: nvidia-smi: コマンドが見つかりません

となる状態です。

1、CUDA 13.4からToolkitとドライバが分離された

CUDA 13.4から、CUDA ToolkitとNVIDIA Linuxドライバは独立して管理されるようになりました。cuda-toolkit-13-4をインストールしても、NVIDIAドライバ本体は自動では導入されません。

そのため、次のようにToolkitだけを入れた状態ではnvidia-smiが存在しないことがあります。

sudo apt-get install -y cuda-toolkit-13-4

2、pinningパッケージはドライバ本体ではない

ドライバのバージョンを固定するためのpinningパッケージを入れていても、それだけでドライバ本体が導入されるわけではありません。

sudo apt install nvidia-driver-pinning-615

実際の復旧では、現在動作中のカーネルに対応するヘッダーと、NVIDIA Open Kernel Modulesを明示的に導入しました。

sudo apt update
sudo apt install linux-headers-$(uname -r)
sudo apt install nvidia-driver-pinning-615
sudo apt -V install nvidia-open
sudo reboot

再起動後に確認します。

nvidia-smi

3、apt autoremoveにも注意する

CUDA 13.4以降はToolkitとドライバの依存関係が分離されたため、以前のCUDAからアップグレードした環境では注意が必要です。

過去にドライバがCUDAパッケージの自動依存として入っていた場合、パッケージ管理上「不要な自動導入パッケージ」と判断され、apt autoremoveでドライバ一式が削除される可能性があります。

GPUサーバーでautoremoveを実行する前には、削除対象を必ず確認する方が安全です。

apt autoremove --dry-run

4、GPUが見えることとドライバが使えることは別

lspciでNVIDIA GPUが見えるのは、PCIデバイスとしてOSが認識していることを示すだけです。CUDAやnvidia-smiが利用できることまでは保証しません。

切り分ける際は、lspci、dpkg、nvidia-smiを分けて確認すると原因を追いやすくなります。

lspci | grep -i nvidia
dpkg -l | grep -E "nvidia|cuda"
which nvidia-smi
nvidia-smi

5、まとめ

CUDAのメジャー・マイナー更新では、単にToolkitのバージョンだけを見るのではなく、ドライバの配布方法やパッケージ依存関係の変更も確認する必要があります。

今回のようにGPUは見えているのにnvidia-smiが消えた場合は、ハードウェア故障を疑う前に、ドライバ本体がインストールされているかを確認するのが近道です。