CUDA無し環境でPyTorchでGPUを使用する手軽な方法
「CUDAをインストールしていないけど、PyTorchでGPUを使いたい」
一昔前なら、Linux(Ubuntu)の黒画に10回くらい泣いてからようやく実現できたその行為も、今やpipやuvでPyTorchをインストールするだけでCUDA機能が使えるようになっています。簡単に紹介します。
環境
- Ubuntu 22.04
- NVIDIA GeForce RTX 3060
- NVIDIAドライバ: 535.183.01
- Python 3.10.12
- CUDA: 未インストール
NVIDIAドライバは必要です。LinuxとNVIDIAドライバの具体的なセットアップ方法は、以下記事参照ください(Dockerのセットアップは不要です)。
CUDAツールキットがなくても動く理由
PyTorchのCUDA版には、必要なCUDAランタイムライブラリがすべて同梱されています。
つまり:
- システムに
nvcc
(CUDAコンパイラ)がなくても動作 - PyTorchが必要なCUDAライブラリをすべて持っている
- ドライバーさえあればGPUが使える
インストール方法
pip を使う場合
pipコマンドでPyTorchをインストールしたら、CUDAが使えるPyTorchがセットアップできます。
pip install torch
以下CUDAの動作確認です。
$ python3 -c "import torch; print(torch.cuda.is_available())"
True
uv を使う場合
uvでも同様にインストールできます。uv自体のセットアップは以下記事を参照してください。
PyTorchのセットアップは以下コマンドです。
$ uv venv
$ source .venv/bin/activate
$ uv pip install torch
以下コマンドで動作確認ができます。
$ python3 -c "import torch; print(torch.cuda.is_available())"
True
※ 環境によっては、Numpyのwarningが出るかもしれません
何もオプションつけずにうまくいきましたが、以下のオプションを付けることで、より確実になるかもしれません。
$ uv pip install torch --torch-backend=auto
--torch-backend=auto
に関しては、以下記事が参考になります。
まとめ
PyTorchを何も考えずにデフォルトインストールしたら、実はPyTorchでCUDA(GPU)が使えるという話の紹介でした。
少し前は、ドライバとCUDAとPyTorchのバージョンの組み合わせで悩まされたので、バージョンの試行錯誤をするためと、手軽なセットアップ方法としてDockerを使っていました。
ただ、PyTorchで簡単にCUDA使えるのであれば少なくとも自分の使い方だと、Dockerは必要ないかもしれないなと思いました。
なにはともあれ、セットアップ方法が手軽になるのはありがたいですね。
Discussion