# Ubuntu 24.04 PyTorch 環境架設 紀錄自己在 Ubuntu 24.04 LTS 安裝 GPU版本 PyTorch 的過程。 ## 硬體規格、作業系統 Acer 筆電 * CPU: Intel i3-8130U * RAM: 12GB * GPU: Nvidia MX130 2GB VRAM * 作業系統: Ubuntu 24.04 LTS ## 步驟 ### 更新、確認軟體版本 * 先將 Ubuntu 軟體升級,並使用 Nvidia 的驅動程式 * 安裝 pip3、virtualenv * `sudo apt install python3-pip` * `sudo apt install python3-virtualenv` * 終端機輸入 `$ nvidia-smi` 確認顯示卡支援 CUDA 的版本,像是我的顯示卡只支援到 12.4 * 上 [https://pytorch.org/](https://pytorch.org/get-started/locally/) 確認顯示卡 CUDA 版本能支援的 PyTorch,以我的狀況來說可以安裝支援 CUDA 12.4 版本的 PyTorch ### 安裝 CUDA * 到 [NVIDIA CUDA官網](https://developer.nvidia.com/cuda-12-4-1-download-archive?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=22.04&target_type=runfile_local) 選擇顯示卡支援的CUDA並按照網頁提示的指令下載 `.run` 安裝檔: * `wget https://developer.download.nvidia.com/compute/cuda/12.4.1/local_installers/cuda_12.4.1_550.54.15_linux.run ` * 用網頁提示的以下指令執行安裝檔時,會先跳出安裝程式偵測到系統有其他驅動程式,根據 [askubuntu.com](https://askubuntu.com/a/1288405),一樣選擇 `[continue]` * `sudo sh cuda_12.4.1_550.54.15_linux.run ` * 同意EULA條款後,會出現選單標示將要安裝的套件,同樣根據 [askubuntu.com](https://askubuntu.com/a/1288405),選單中的第一項,安裝程式內附的顯示卡驅動程式我們選擇不裝。 * 安裝結束後會顯示以下訊息: ``` ~$ sudo sh cuda_12.4.1_550.54.15_linux.run =========== = Summary = =========== Driver: Not Selected Toolkit: Installed in /usr/local/cuda-12.4/ Please make sure that - PATH includes /usr/local/cuda-12.4/bin - LD_LIBRARY_PATH includes /usr/local/cuda-12.4/lib64, or, add /usr/local/cuda-12.4/lib64 to /etc/ld.so.conf and run ldconfig as root To uninstall the CUDA Toolkit, run cuda-uninstaller in /usr/local/cuda-12.4/bin ***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 550.00 is required for CUDA 12.4 functionality to work. To install the driver using this installer, run the following command, replacing <CudaInstaller> with the name of this run file: sudo <CudaInstaller>.run --silent --driver Logfile is /var/log/cuda-installer.log ``` * 上面顯示沒有找到 CUDA 驅動程式,同樣根據 [askubuntu.com](https://askubuntu.com/a/1288405),我們不管它。 * 將 CUDA 路徑加入 `~/.bashrc` 最後面: * 終端機輸入 `$ nano ~/.bashrc` 打開檔案 * 在檔案最後加上: ``` # set path for Nvidia CUDA 12.4 installation if [ -d "/usr/local/cuda-12.4/bin/" ]; then export PATH=/usr/local/cuda-12.4/bin${PATH:+:${PATH}} export LD_LIBRARY_PATH=/usr/local/cuda-12.4/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} fi ``` ### 安裝 cuDNN cuDNN 似乎只有區分 CUDA 11 與 CUDA 12 * 到 [Nvidia cuDNN 官網](https://developer.nvidia.com/cudnn-downloads) 尋找符合自己作業系統、CPU架構、Linux版本、作業系統版本號、安裝包類型,像是我的[選項](https://developer.nvidia.com/cudnn-downloads?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=24.04&target_type=deb_local)就會產生以下安裝指令: ``` $ wget https://developer.download.nvidia.com/compute/cudnn/9.5.1/local_installers/cudnn-local-repo-ubuntu2404-9.5.1_1.0-1_amd64.deb $ sudo dpkg -i cudnn-local-repo-ubuntu2404-9.5.1_1.0-1_amd64.deb $ sudo cp /var/cudnn-local-repo-ubuntu2404-9.5.1/cudnn-*-keyring.gpg /usr/share/keyrings/ $ sudo apt-get update # 最後一行我選擇符合自己CUDA版本的安裝方式 $ sudo apt-get -y install cudnn-cuda-12 ``` * 接著重開機 * 終端機輸入 `$ nvidia-smi` 確認驅動程式有裝 ``` ~$ nvidia-smi Wed Oct 30 23:18:41 2024 +-----------------------------------------------------------------------------------------+ | NVIDIA-SMI 550.120 Driver Version: 550.120 CUDA Version: 12.4 | |-----------------------------------------+------------------------+----------------------+ | GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |=========================================+========================+======================| | 0 NVIDIA GeForce MX130 Off | 00000000:01:00.0 Off | N/A | | N/A 40C P8 N/A / 200W | 5MiB / 2048MiB | 0% Default | | | | N/A | +-----------------------------------------+------------------------+----------------------+ +-----------------------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=========================================================================================| | 0 N/A N/A 1973 G /usr/lib/xorg/Xorg 2MiB | +-----------------------------------------------------------------------------------------+ ``` * 終端機輸入 `$ nvcc -V` 確認 CUDA 有裝 ``` ~$ nvcc -V nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2024 NVIDIA Corporation Built on Thu_Mar_28_02:18:24_PDT_2024 Cuda compilation tools, release 12.4, V12.4.131 Build cuda_12.4.r12.4/compiler.34097967_0 ``` * 輸入 `$ /sbin/ldconfig -N -v $(sed 's/:/ /' <<< $LD_LIBRARY_PATH) 2>/dev/null | grep libcudnn` 看 `libcudnn` 有裝好 ``` ~$ /sbin/ldconfig -N -v $(sed 's/:/ /' <<< $LD_LIBRARY_PATH) 2>/dev/null | grep libcudnn libcudnn_cnn.so.9 -> libcudnn_cnn.so.9.5.1 libcudnn_graph.so.9 -> libcudnn_graph.so.9.5.1 libcudnn_engines_precompiled.so.9 -> libcudnn_engines_precompiled.so.9.5.1 libcudnn_ops.so.9 -> libcudnn_ops.so.9.5.1 libcudnn.so.9 -> libcudnn.so.9.5.1 libcudnn_adv.so.9 -> libcudnn_adv.so.9.5.1 libcudnn_engines_runtime_compiled.so.9 -> libcudnn_engines_runtime_compiled.so.9.5.1 libcudnn_heuristic.so.9 -> libcudnn_heuristic.so.9.5.1 ``` ### 產生 PyTorch 安裝指令 上 [pytorch.org -> get-started](https://pytorch.org/get-started/) 尋找適合自己顯示卡支援的CUDA版本的 Pytorch 我選 Start Locally: | 項目 | 選擇 | | ---------------- | -------------- | | Pytorch Build | Stable (2.5.1) | | Your OS | Linux | | Package | Pip | | Language | Python | | Compute Platform | CUDA 12.4 | 接著會產生以下指令用於安裝 PyTorch,但我們先不急著安裝: `pip3 install torch torchvision torchaudio` ### 新增虛擬環境並在虛擬環境安裝 PyTorch ``` ~$ mkdir DL` # 首先新增專案的工作目錄 ~$ cd DL # 移動到該目錄 ~/DL$ virtualenv venv # 建立虛擬環境 ~/DL$ source venv/bin/activate # 啟動虛擬環境 (venv) ~/DL$ # 這個時候就可以貼上剛剛產生的 PyTorch 安裝指令 (venv) ~/DL$ pip3 install torch torchvision torchaudio ``` 在虛擬環境輸入 `python` ``` ~/DL$ python Python 3.12.3 (main, Sep 11 2024, 14:17:37) [GCC 13.2.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import torch >>> torch.cuda.is_available() True >>> ``` 如果顯示 `True` 就大功告成,就可以在虛擬環境使用 GPU 執行 PyTorch。 如果要離開虛擬環境就輸入 `deactivate` ``` (venv) ~/DL$ deactivate ~/DL$ ``` ## 參考資料 軟體安裝包的連結均指向我選擇安裝的選項 * [Start Locally | PyTorch](https://pytorch.org/get-started/locally/) * [Ubuntu 20.04 LTS, CUDA 11.5.0, NVIDIA 495 and libcudnn 8.0.4](https://askubuntu.com/questions/1077061/how-do-i-install-nvidia-and-cuda-drivers-into-ubuntu/1288405#1288405) * [在Linux下安裝cuda/cudnn環境](https://hackmd.io/@joshhu/SyZwyhODB) * [CUDA Toolkit 12.4 Update 1 Downloads](https://developer.nvidia.com/cuda-12-4-1-download-archive?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=22.04&target_type=runfile_local) * [cuDNN 9.5.1 Downloads](https://developer.nvidia.com/cudnn-downloads?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=24.04&target_type=deb_local)