この記事についてClaude(Anthropic)との共同編集により作成されました。
要約
- LLaMA Factory / vLLM のために CUDA をアップデートしようとして泥沼にはまった
- AI が教えた apt 手順を鵜呑みにしたのが失敗の始まり。Ubuntu 公式の NVIDIA 系(580)と NVIDIA CUDA apt リポジトリ由来の依存(570)が混在して競合した
sudo apt --fix-broken installが同じエラーを延々と繰り返すループに突入- runfile + tarball 方式に切り替えて脱出した
- 挫けそうなとき・焦っているときこそ AI ではなく自分の頭で判断しなければいけない
CUDA をアップデートしようとして、AI に教わった手順を信じ続けたまま環境を壊しかけた話をする。
発端: LLaMA Factory と vLLM を動かしたい
手元の Ubuntu 24.04 マシンで LLaMA Factory と vLLM を動かしたかった。既存の CUDA バージョンが少し古く、どちらのツールも動くか微妙なラインだったので更新することにした。
AI に「Ubuntu 24.04 で CUDA を更新したい」と聞くと、きれいな手順が返ってきた。
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.debsudo dpkg -i cuda-keyring_1.1-1_all.debsudo apt updatesudo apt install cuda-toolkit-12-8 cudnn-cuda-12ドキュメントとして整理された手順。知らなければ正しいと信じてしまう見た目をしている。
最初の躓き: パッケージが見つからない
cuda-keyring の dpkg まではうまくいった。ところが apt install cuda-toolkit-12-8 で止まった。
E: Unable to locate package cuda-toolkit-12-8「パッケージ名が違うのかな」と AI に聞く。別の候補を教えてもらう。また試す。また「見つからない」。
この時点で少し立ち止まるべきだった。でも「AI が言うんだから正しいはず、自分の環境の問題だろう」と思い込んでいた。
泥沼: —fix-broken がループし始める
apt update を何度もかけているうちに、リポジトリが変わったのか、今度は別のエラーが出てきた。
dpkg: error processing package libnvidia-compute-570 (--configure): trying to overwrite '/usr/bin/nvidia-bug-report.sh', which is also in package libnvidia-common-580Ubuntu 標準リポジトリで入れていた NVIDIA ドライバー系(580 系)と、NVIDIA CUDA apt リポジトリが引き込もうとしている依存(570 系)が /usr/bin/nvidia-bug-report.sh を取り合って競合していた。
sudo apt --fix-broken install を叩く。同じエラー。もう一度叩く。同じエラー。
ループに入っていた。
--fix-broken は「壊れた依存関係を直す」コマンドのはずが、570 系のインストールを毎回試みては 580 系との競合で失敗し、同じ状態に戻り続けていた。
焦りの中でも AI に頼り続けた
ここで冷静になれれば良かった。が、焦りと「なぜか動くはずなのに」という感覚が重なって、AI に「--fix-broken がループする」と状況を伝えながら追加の指示を求め続けた。
返ってくる手順をまた実行する。同じループ。また聞く。また試す。
今振り返ると、この時間がいちばん無駄だった。AI は自分の手元でコマンドを実行できない。ログを読ませて状況を伝えることはできるが、「本当にこの環境で何が起きているか」を判断するのは最終的に自分しかいない。
脱出: 自分で環境をクリアにして公式サイトへ
ループに気づいたのは、焦りでまた最初の dpkg コマンドを打ってしまったときだった。
sudo dpkg -i cuda-keyring_1.1-1_all.deb # また同じのを叩いてしまったsudo apt update「あ、同じところをぐるぐるしてる」と気づいた。ここでようやく AI に次の手順を聞くのをやめた。
競合しているのは libnvidia-common-580(Ubuntu 標準)と libnvidia-compute-570(NVIDIA CUDA apt リポジトリの依存)。同じファイル(/usr/bin/nvidia-bug-report.sh など)を両方が持とうとしていて、apt がにっちもさっちもいかなくなっていた。
apt の世界でこれを解消するのは難しい。なので、競合している CUDA 系・NVIDIA 系のパッケージをとにかく片っ端から削除して、環境をクリアにしようとした。apt --purge remove を何度も打ち、autoremove もかけ、少しずつ整理していった。
その後、NVIDIA 公式サイトを自分で開いて、CUDA 12.8 の runfile のコマンドをそのままコピーした。AI が生成した URL ではなく、公式ページに載っているものを使う。そこに AI が教えてくれたオプション(--toolkit --silent --override)を組み合わせた。
wget https://developer.download.nvidia.com/compute/cuda/12.8.0/local_installers/cuda_12.8.0_570.86.10_linux.runsudo sh cuda_12.8.0_570.86.10_linux.run --toolkit --silent --override--toolkit でドライバーをスキップし、--override で既存環境との衝突を回避する。apt の依存解決を完全に迂回できるので、580 系と 570 系の競合は関係なくなる。
cuDNN はそのまま tarball で問題なく入った。
nvcc --version が release 12.8 を返したとき、思わず安堵した。
反省: AI を信じることと自分で判断することのバランス
何が悪かったか。
「Ubuntu 公式の NVIDIA パッケージ系」と「NVIDIA CUDA apt リポジトリ由来のパッケージ」を混在させるリスクを、AI に教わった手順を実行する前に自分で考えなかった。
CUDA のセットアップは環境依存が強い。ドライバーのインストール方法(ubuntu-drivers か NVIDIA 公式か)、既存パッケージの状態、Ubuntu のバージョン……同じコマンドでも環境によって結果が変わる。AI が提示する手順は「多くの場合うまくいく」ものであって、自分の環境を診断した結果ではない。
もう一つ。ループが始まった時点で「手順を変える判断」をするのが遅すぎた。
「同じことをやり続けて違う結果を期待するのは狂気の定義だ」という言葉がある。皮肉にも、ループに気づいたのは焦って最初の dpkg コマンドをまた打ったときだった。もっと早く気づいて、AI に追加の手順を聞く前に「なぜループしているか」を自分で考えるべきだった。
AI は強力なアシスタントだが、「今この環境で何が起きているか」を見極める判断は自分にしかできない。特に環境が壊れかけているときほど、焦って AI の指示に頼り続けてはいけない。挫けそうなとき・焦っているときこそ、一度立ち止まって自分の頭で考える強さが必要だった。
教訓まとめ
- Ubuntu 公式の NVIDIA パッケージと NVIDIA CUDA apt リポジトリは混在させない。 ドライバーは
ubuntu-driversで管理し、CUDA/cuDNN は runfile + tarball で入れるのが安全 apt --fix-broken installが同じエラーで繰り返すなら、手順ではなく方針を変える- AI の手順はあくまで出発点。 実行前に「この環境に当てはまるか」を確認し、ループに入ったら自分で根本原因を読み解く
- 焦っているときほど AI への依存を疑う。 環境が崩れかけているときの判断は自分でしなければならない
参考文献
- NVIDIA CUDA Installation Guide for Linux https://docs.nvidia.com/cuda/cuda-installation-guide-linux/
- NVIDIA CUDA Toolkit Downloads https://developer.nvidia.com/cuda-downloads
- NVIDIA cuDNN Linux x86_64 Tarball Index https://developer.download.nvidia.com/compute/cudnn/redist/cudnn/linux-x86_64/