なぜ高性能なGPUを積んでいるのに、AIの学習が亀のように遅いのか?
4,000万ドン(約25万円)以上もかけてRTX 4090を購入したのに、Pythonコードを実行するとGPUファンは静かなままで、CPU使用率だけが100%になっている?これはAI開発者にとって典型的な悩みです。まるでフェラーリを運転しているのに、ガソリンが入っていないから手で押して歩いているような気分でしょう。GPUの性能をフルに発揮させる設定は、AI開発だけでなくUbuntu Desktopでゲームを最適化する際にも不可欠な要素です。
問題は、ソフトウェアがハードウェアと「対話」する方法を知らないことにあります。PyTorchやTensorFlowなどのライブラリが、行列演算をCUDAコアに投げるためには「橋渡し」が必要です。CUDA ToolkitとcuDNNがないと、システムは自動的にCPUでの実行に切り替わります。その結果、処理速度は20〜50倍も低下し、単純なモデルの学習にさえ丸一日かかってしまうのです。
ラボでの試行錯誤と、数十回に及ぶOSの再インストールを経て、私は最も確実な手順を導き出しました。この記事では、Ubuntu 24.04 (Noble Numbat) 上でわずか15分で環境を構築する方法を解説します。
問題の本質:なぜCUDAとcuDNNが必要なのか?
パフォーマンスを最適化するために、各コンポーネントの役割を理解しておきましょう。
- NVIDIA Driver: Linuxがグラフィックカードの存在を認識するための基盤となるレイヤーです。
- CUDA Toolkit: 並列計算プラットフォーム. PythonやC++を使用して、GPU内部の数千個の小さなコアを重いタスクに活用できるようにします。
- cuDNN (CUDA Deep Neural Network library): これはディープラーニング専用に最適化されたアルゴリズムを含む「秘密兵器」です。cuDNNがないと、TransformerやCNNなどのアーキテクチャの学習は極めて低速になります。
最も一般的なエラーはバージョンの不一致ですが、更新後に古いプロセスが残っていることもトラブルの元です。needrestartを活用して、システムの状態を常に最新に保つよう心がけましょう。
賢いインストール方法の選択
現在、一般的なインストール方法は3つありますが、すべてが安全というわけではありません。
- デフォルトのリポジトリを使用する (apt install nvidia-cuda-toolkit): 手軽ですが、あまりお勧めしません。ここにあるバージョンは実際よりも1〜2年古いことが多く、RTX 40シリーズなどの最新カードを十分にサポートしていません。
- .runファイルを使用する: この方法はドライバーの競合を非常に起こしやすいです。
sudo apt upgradeを不用意に実行するだけで、画面が真っ暗(ブラックスクリーン)になる可能性があります。 - NVIDIA Network Repositoryを使用する(推奨): これは私が会社の全サーバーに適用している方法です。NVIDIA公式のリポジトリをシステムに追加します。後のアップデートや削除も非常にクリーンで安全です。
Ubuntu 24.04での「クリーン」なインストール手順
ステップ1:以前の残骸を掃除する
ライブラリの競合を避けるため、以前の不完全なインストールを完全に削除します。このステップを疎かにしないでください。また、将来的に環境を汚さず管理したい場合は、Incusなどの仮想化技術を併用するのも非常に有効です。
sudo apt-get purge nvidia* -y
sudo apt-get autoremove -y
sudo apt-get autoclean
ステップ2:安定したNVIDIAドライバーをインストールする
自分で推測する代わりに、Ubuntuにハードウェアに最適なドライバーを提案させましょう。
sudo ubuntu-drivers devices
recommended(推奨)と表示されている行を確認してください。例えば nvidia-driver-550 であれば、それをインストールします:
sudo apt install nvidia-driver-550
sudo reboot
再起動後、nvidia-smi と入力してください。消費電力やメモリ使用量の表が表示されれば、作業の50%は完了です。
ステップ3:公式リポジトリからCUDA Toolkitをインストールする
Ubuntu 24.04との最高の互換性を確保するために、NVIDIAのサーバーから直接インストールパッケージを取得します。
# 必要な補助パッケージをインストール
sudo apt install build-essential dkms -y
# NVIDIAのKeyringを追加
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
# アップデートしてCUDA 12.6をインストール
sudo apt update
sudo apt install cuda-toolkit-12-6 -y
ステップ4:cuDNN 9 ライブラリをインストールする
NVIDIAはcuDNNの配布方法を変更しました。2022年頃の古いガイドのように、zipファイルをダウンロードして手動でコピーする必要はもうありません。
sudo apt install libcudnn9-cuda-12 -y
ステップ5:環境変数の設定
インストールが終わっても、nvcc -V と入力して「command not found」と表示されることがあります。これはシステムにパスを通していないためです。
設定ファイルを開きます:
nano ~/.bashrc
ファイルの最後に以下の2行を追加します(インストールしたバージョンが12.6か12.xかに応じて適宜確認してください):
export PATH=/usr/local/cuda-12.6/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-12.6/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
Ctrl + O、Enter で保存し、source ~/.bashrc で設定を即座に反映させます。
成果の確認
安心するのはまだ早いです。PyTorchが実際にGPUを「認識」しているか確認しましょう。リモート環境での作業効率を上げるなら、ブラウザからVS Codeを利用できるcode-serverの導入も検討してみてください。ターミナルを開き、以下のPythonコマンドを実行します:
python3 -c "import torch; print('CUDAチェック:', torch.cuda.is_available()); print('デバイス名:', torch.cuda.get_device_name(0))"
結果が True と共にグラフィックカードの名前が表示されれば、おめでとうございます!これでソフトウェアのボトルネックを気にすることなく、Llama 3のファインチューニングやStable Diffusionの学習を始める準備が整いました。
AI環境のセットアップは時にストレスが溜まるものです。もし低遅延が要求されるロボティクスなどの分野に応用するなら、リアルタイムカーネルの活用も一つの解決策になります。もし unmet dependencies や nouveau driver conflict などのエラーに遭遇した場合は、下のコメント欄に記入してください。迅速にサポートします。

