なぜUbuntu標準のドライバーでは不十分なのか?
Ubuntuをインストールした直後のシステムでは、オープンソースのドライバーであるNouveauが使用されます。このドライバーはウェブブラウジングや事務作業には問題ありません。しかし、PyTorchでモデルをトレーニングしたり、Steamでゲームをプレイしたりする場合、Nouveauは悪夢となります。ハードウェアアクセラレーションをサポートしていないため、FPSが極端に低下し、システムが頻繁にカクつく原因になります。さらにシステム全体を快適にするには、Ubuntu Desktopのパフォーマンス最適化も検討すべきでしょう。
AIチームのためにUbuntu 22.04を搭載したワークステーション群を6ヶ月間管理してきた経験から、身に染みた教訓があります。あなたがエキスパートでない限り、NVIDIAの公式サイトから.runファイルを使ってドライバーをインストールするのは絶対にやめてください。この方法はapt upgradeを実行するたびに競合を引き起こしやすく、あの悪名高い「ブラックアウト(黒い画面)」エラーを招く原因となります。Pythonのプロフェッショナル開発環境をUbuntuに構築する場合、GPUの設定は避けて通れません。実務環境においては、PPAを使用するのが最も持続可能な解決策です。
ステップ 1:ハードウェアの確認とシステムのクリーンアップ
まず、サポートされていないバージョンを誤ってインストールしないよう、グラフィックカードのモデルを確認しましょう。ターミナルで以下のコマンドを入力します:
lspci | grep -i nvidia
もし古いドライバーで問題が発生している場合は、将来の予期せぬ競合を避けるために完全にクリーンアップする必要があります。その際、aptやapt-getなどのパッケージ管理の仕組みを理解しておくと、トラブル対応がスムーズになります:
sudo apt-get purge nvidia* -y
sudo apt-get autoremove -y
ステップ 2:PPA経由でのインストール(推奨)
Ubuntuのデフォルトリポジトリは、ドライバーの更新が非常に遅いことがよくあります。RTX 3090や4000シリーズで最高のパフォーマンスを得るために、私は常にgraphics-driversチームのPPAを使用することを優先しています。このリポジトリは通常、NVIDIAがリリースしてから24〜48時間以内に最新のパッチを更新します。
リポジトリを追加し、パッケージリストを更新します:
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
次に、ubuntu-driversツールを使用して、最適なバージョンを自動的に提案させます:
ubuntu-drivers devices
システムは以下のような結果を返します:
vendor : NVIDIA Corporation
model : GA102 [GeForce RTX 3090]
driver : nvidia-driver-535 - third-party free recommended
最も安定したバージョン(recommendedと表示されているもの)をインストールするには、以下のコマンドを実行するだけです:
sudo ubuntu-drivers autoinstall
特定のバージョン(CUDA 12.xに合わせるための535など)が必要な場合は、パッケージ名を明示的に指定してください。インストール後、カーネルに新しいドライバーをロードさせるために再起動を忘れないでください:
sudo reboot
ステップ 3:ノートPC向けのNVIDIA Prime設定
外部グラフィックカードを搭載したノートPCを使用している場合、電力管理は死活問題です。ドライバーをインストールした後、「PCが熱くなる」「バッテリーの減りが異常に早い」と嘆く人が多くいます。その原因の多くは、軽い作業中もNVIDIAカードが常にバックグラウンドで動作していることにあります。
バッテリーを節約するために、手動でモードを切り替えることができます:
- Performanceモード: すべてのタスクで常にNVIDIAを使用します。
- Intelモード: 外部カードを完全にオフにし、バッテリー消費を最小限に抑えます。
- On-demandモード: 重いアプリケーションを実行する時だけNVIDIAを起動します。
切り替えコマンドは非常にシンプルです:sudo prime-select on-demand。その後、変更を反映させるために一度ログアウトして再ログインしてください。
ステップ 4:パフォーマンスの確認とモニタリング
再起動後、ドライバーが正常に動作しているか以下のコマンドで確認します:
nvidia-smi
ドライバーのバージョンとVRAMの容量が記載された表が表示されれば成功です。ただし、nvidia-smiは静的なスナップショットに過ぎません。AIのトレーニング中にGPUの負荷をリアルタイムで監視するには、nvtopの使用をお勧めします。
sudo apt install nvtop
nvtopを使えば、クロック周波数や温度の推移を視覚的なグラフで確認できます。これにより、どのプロセスが異常にVRAMを消費しているかを即座に特定できます。
トラブルシューティング:よくある「厄介な」問題
1. Secure Bootの壁
これは、ドライバーをインストールしたのに動作しない最も一般的な理由です。BIOSでSecure Bootが有効な場合、UbuntuはMOK(Machine Owner Key)パスワードの作成を要求します。再起動時にEnroll MOKを選択し、そのパスワードを入力してください。これをスキップしてしまうと、認証されていないためドライバーが完全にブロックされます。
2. ブラックアウトからの救出
画面が真っ暗なまま止まってもパニックにならないでください。Ctrl + Alt + F3を押して、テキストベースのターミナルに入ります。ログイン後、sudo apt-get purge nvidia*コマンドでインストールしたばかりのドライバーを削除してください。再起動すれば、デフォルトのドライバーに戻り、他の原因を探ることができます。
現場からの実践的なアドバイス
システムの運用において、安定性は常に最新バージョンであることよりも重要です。AIサーバーの場合、私は通常、525や535のようなLTS (Long Term Support)バージョンのドライバーを維持するようにしています。大規模なモデルを扱う際は、LinuxでのSWAP設定を見直して、メモリ不足によるクラッシュを防ぐことも重要です。
最後に一点:Dockerを使用する場合は、NVIDIA Container Toolkitを追加でインストールしてください。このツールがないと、DockerはGPUに接続できません。その運用フェーズでは、WatchtowerでDockerコンテナを自動更新する仕組みを導入すると、管理の手間をさらに削減できます。

