深夜2時のNVIDIAエラー修正:Waylandが「言うことを聞かない」とき
昨夜、おなじみの「NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver」という文字列を見て、危うくPCを叩き壊すところでした。スムーズなKernel 6.8を体験するためにFedora 40にアップグレードしたのですが、現実はそう甘くありませんでした。ドライバーをインストールした途端に画面は真っ暗。Waylandに切り替えればマウスカーソルが飛び跳ねるほどラグが発生し、PyTorchは絶望的にGPUを探し求めていました。
私は2年以上、Fedoraをメインの開発機として使用しています。パッケージの更新速度が非常に速く、通常はArch Linuxの数日後には届きます。しかし、FedoraをWayland上で安定したDeep Learningマシンにするのは、まさに挑戦です。数十回のOS再インストールを経て、皆さんが私のように徹夜しなくて済むような標準的な手順をまとめました。
なぜUbuntuではなくFedoraを選ぶのか?
AIエンジニアはデフォルトでUbuntuを使いがちです。しかし、Fedoraには最新のKernelが使えるという大きな利点があり、RTX 40シリーズや第14世代Intel CPUの性能を最大限に引き出すことができます。唯一の問題は、FedoraがWaylandを優先していることです。これはモダンなディスプレイプロトコルですが、クローズドソースのNVIDIAドライバーとは歴史的に「相性が悪い」ことで知られています。
安定したML環境を構築するには、3つの主要な柱が必要です。
- NVIDIA Driver (RPM Fusion): NVIDIA公式サイトの.runファイルは絶対に使用しないでください。Kernelアップデートのたびにシステムが破壊されます。
- CUDA Toolkit: 必須の並列計算ライブラリ。
- Miniconda/Mamba: 環境を分離し、システムのPythonを壊さないようにします。
ステップ1:RPM Fusionリポジトリの有効化
システムがクリーンでない状態で始めないでください。Fedoraは絶えずパッケージを更新します。KernelとHeaderのバージョンが食い違うと、ドライバーは即座にエラーを起こします。
# システムをアップデートし、必要なプラグインをインストール
sudo dnf update -y
sudo dnf install dnf-plugins-core -y
次に、RPM Fusionを有効にします。これはFedoraにとって最も安全で公式に近いNVIDIAドライバーのインストール元です。
sudo dnf install https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm \
https://mirrors.rpmfusion.org/non-free/fedora/rpmfusion-non-free-release-$(rpm -E %fedora).noarch.rpm
ステップ2:プロの方法でNVIDIAドライバーをインストールする
多くの人がインストール後すぐに再起動してしまいますが、それは間違いです。Fedoraはakmodsを通じてカーネルモジュールをビルドする時間が必要です。ドライバーセットとCUDAサポートライブラリをインストールしましょう。
sudo dnf install akmod-nvidia xorg-x11-drv-nvidia-cuda -y
極めて重要な注意点: コマンドが完了したら、コーヒーでも淹れてください。システムがバックグラウンドでビルドを終えるまで3〜5分ほど待ちます。以下のコマンドでステータスを確認してください。
# ドライバーのバージョンを確認
modinfo -F version nvidia
ターミナルにバージョン(例:555.xx)が返ってくれば、再起動しても大丈夫です。Secure Bootを使用している場合はモジュールに署名する必要がありますが、最も手っ取り早いのはBIOSで一時的に無効にすることです。
ステップ3:競合を避けつつCUDA Toolkitをインストールする
私は決してdnf install cudaを使いません。NVIDIAリポジトリのこのコマンドは、既存のドライバーを上書きしてブラックアウトを引き起こすことがよくあります。最もクリーンな方法は、Toolkitセットだけを取得することです。
# NVIDIAのCUDAリポジトリを追加
sudo dnf config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/fedora40/x86_64/cuda-fedora40.repo
# Toolkitのみをインストール
sudo dnf install cuda-toolkit -y
~/.bashrcで環境変数を設定します。
export PATH=/usr/local/cuda/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
source ~/.bashrcを入力して、変更を即座に適用します。
ステップ4:Minicondaによる環境管理
グローバル環境で直接pip installするのは自殺行為です。いつかシステムライブラリとの競合でdnfがクラッシュする日が来ます。Minicondaを使ってすべてを整理された状態に保ちましょう。
# Minicondaのダウンロードとインストール
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
AIプロジェクト専用の環境を作成します。
conda create -n ai_lab python=3.10
conda activate ai_lab
ステップ5:PyTorchのインストールとWaylandのラグ対策
PyTorchは現在、Linux上のCUDAを非常によくサポートしています。安定版をインストールしましょう。
pip3 install torch torchvision torchaudio
GPUが正しく認識されているか確認します。
python -c "import torch; print(f'CUDA利用可能: {torch.cuda.is_available()}'); print(f'デバイス名: {torch.cuda.get_device_name(0)}')"
RTXカードの名前が表示されれば、99%成功です。
Wayland上のJupyter Notebookに関するちょっとしたコツ
WaylandでJupyterを実行すると、ブラウザがちらつく(フリッカリング)ことがあります。原因はXWaylandです。chrome://flagsでPreferred Ozone platformをWaylandに設定し、Chrome/EdgeをネイティブなWaylandで動作させるように強制してください。
Jupyter用のカーネルを追加するのを忘れないでください。
pip install jupyterlab ipywidgets
python -m ipykernel install --user --name ai_lab --display-name "Python 3.10 (AI)"
すべてが壊れたとき:レスキューテクニック
dnf upgradeでFedoraをアップデートした後、たまにnvidia-smiが消えてしまうことがあります。慌てないでください。大抵の場合、新しいKernel用のモジュールビルドが間に合っていないだけです。強制的に再ビルドするだけで直ります。
# カーネルモジュールの強制再ビルド
sudo akmods --force
sudo dracut -f
再起動すれば、すべてが元通りになります。Fedoraはパッケージ管理の方法さえマスターすれば、MLにとって非常に強力な武器になります。
まとめ
Linux上での作業環境構築は、特にNVIDIAとWaylandの組み合わせにおいては決して簡単ではありません。しかし、正しく設定できれば、非常に高速で常に最新のAI技術に追従できるシステムを手に入れることができます。このガイドが、皆さんの正気を保ち、無駄なデバッグ時間を節約する助けになれば幸いです。

