上週向 momo 購買的 MSI 平台電競桌機 "快龍", 搭配 RTX3060 12GB 顯卡, 到貨後便開始安裝跑 ML/LLM 所需的 Python 執行環境, 但最後要安裝 PyTorch 套件時, 發現選擇安裝指令時必須選擇 CUDA 版本 :
但我不確定廠家出貨時是否已幫我安裝 CUDA (我認為應該沒有, 因為一般電競用不到, 跑 AI 才要安裝 CUDA), 但要如何檢查是否已安裝 CUDA 呢? 參考下面這篇文章 :
一. 檢查電腦是否已安裝 CUDA :
開啟命令提示字元視窗, 輸入如下指令即可 :
nvcc -V
PS C:\Users\USER> nvcc -V
nvcc : 無法辨識 'nvcc' 詞彙是否為 Cmdlet、函數、指令檔或可執行程式的名稱。請檢查名稱拼字是否正確,如果包含路徑的話,請
確認路徑是否正確,然後再試一次。
位於 線路:1 字元:1
+ nvcc -V
+ ~~~~
+ CategoryInfo : ObjectNotFound: (nvcc:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
系統不認識 nvcc 指令, 如果已安裝過 CUDA, 則 nvcc 指令應該可以執行. 另外, 開啟檔案總管, 查看 C:\Program Files 資料夾下沒有 NVIDIA GPU Compution Toolkit 這個資料夾, 所以確定此主機尚未安裝 CUDA.
參考 :
二. 檢查可安裝之 CUDA 版本 :
可安裝的最高 CUDA 版本與顯卡規格有關, 而且須符合所要求之驅動程式版本.
按 Win 11 的開始鈕 (田), 點選 "NVIDIA Control Pannel" :
點左下角的 "系統資訊" 超連結 :
第一個頁籤 "顯示" 會列出顯卡的主要硬體規格, 例如 :
- 驅動程式版本 : 536.99
- CUDA 核心數 : 3584
- 記憶體介面 : 192 位元
- 記憶體頻寬 : 360.05 GB/s
- 視訊記憶體 : 12GB GDDR6
切到 "元素" 頁籤就可以看到顯卡最高能支援的 CUDA 版本 (NVCUDA64.DLL) :
可見這塊 RTX3060 12GB 顯卡最高可支援 CUDA 12.2.135. 但還要檢查 CUDA 12 版對驅動程式版本的要求, 若驅動程式太舊, 低於要求之版本就要更新驅動程式.
連線 NVIDIA 網站檢查顯卡的驅動程式是否符合 CUDA 12 版之要求 :
可見 CUDA 12 在 Windows 最低的驅動程式版本要求是 528.33 以上, 而上面檢查 RTX3060 12GB 顯卡的驅動程式版本是 536.99, 高於要求之 528.33, 因此無須更新驅動程式, 可直接安裝 CUDA 12 之 Tolkit.
其實也可以直接在命令提示字元視窗輸入下列指令來檢視 :
Nvidia-smi
PS C:\Users\USER> Nvidia-smi
可見右上角就顯示適合的 CUDA 版本是 12.2.
如果需要更新顯卡驅動程式, 下載網址如下 :
若搜尋全部驅動程式, 會發現有 Game Ready 與 Studio 兩種版本, 如果是顯卡主要是用來玩遊戲, 當然選 Game Ready, 此版專為遊戲效能提升與家遊戲體驗而設 (使用 DLSS 深度學習超級採樣技術), 版本更新速度快; 而 Studio 版則是針對 Photoshop, Illusstrator 等創作軟體而設, 版本穩定 (更新速度較慢). 若要做創意用或跑 AI, 則升版時可安裝 Studio 版 :
注意, 安裝 Studio 版仍然可以玩遊戲, 只是沒有遊戲優化功能而已. 其次, 兩種版本驅動程式基本上無法共存, 除非有安裝 Nvidia GeForce Experience 軟體才行 它可在兩種驅動之間切換 (還可以在驅動程式更新時自動通知, 一鍵完成) :
參考 :
我就維持廠家幫我安裝的 Game Ready 版驅動吧.
三. 下載安裝 Visual Studio :
因 CUDA 已與 Visual Studio 整合, 故先下載安裝 (下載免費的社群版即可) :
執行下載的 VisualStudioSetup.exe :
選擇要安裝的元件, 我只選 Python 與 Node.js :
安裝完重開機.
四. 下載安裝 CUDA Tookit :
從上面 Nvidia Control Pannel 查詢可知, 與目前 Game Ready 驅動程式版本 536.99 可安裝 CUDA 12.2.1 版, 但是上面的 PyTorch 下載頁面卻顯示目前 PyTorch 僅支援到 CUDA 12.1, 可在下面網址下載 12.1.1 版來安裝 :
依序選擇 Windows > x86_64 > 11 > exe(local), 按 "Download (3.2GB)" 即可下載 :
按 "下一步" 開始安裝 :
如果沒先安裝 Visual Studio 會出現如下畫面 :
按 "下一步" 安裝 Nsight :
這時去 "設定/系統/系統資訊/進階系統設定/環境變數" 會發現多出了 CUDA_PATH 與 CUDA_PATH_V12_1 這兩個環境變數 :
然後開啟一個新的命令提示字元視窗 (一定要新的), 再次下 nvcc -V 指令 :
PS C:\Users\USER> nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2023 NVIDIA Corporation
Built on Mon_Apr__3_17:36:15_Pacific_Daylight_Time_2023
Cuda compilation tools, release 12.1, V12.1.105
Build cuda_12.1.r12.1/compiler.32688072_0
可見 CUDA 確實已安裝成功. 參考 :
五. 安裝 cuDNN :
cuDNN 是一個以 CUDA 為基礎, 利用 GPU 做深度學習加速的函式庫, 深度學習中的卷積層, 池化層, 正規化, 與激活函數運算都依賴 cuDNN 才能在 GPU 上加速, 所以要在 GPU 上跑深度學習光安裝 CUDA 是不夠的 (他只是平行運算平台). 下載 cuDNN 必須有 NVidia 帳號, 參考 :
點選與上面安裝的 CUDA 版本相同的 cuDNN (上面安裝 CUDA 12.1) :
點選 "Local Intaller for Windows (zip)" :
在右下角輸入 Email 按 "Next" 鈕 :
因為此 Emial 尚未註冊, 故出現創帳號頁面, 輸入 Email 與設定密碼 (至少 9 個字元) :
創建帳號後收信按信中的驗證電子郵件按鈕即可下載 cuDNN 的 zip 檔 (約 691MB).
將 cudnn-windows-x86_64-8.9.7.29_cuda12-archive.zip 解壓縮, 裡面有三個資料夾 :
開啟 bin 資料夾, 將裡面的全部 cudnn*.dll 檔複製到 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\bin 資料夾下 :
然後將 include 資料夾下的 cudnn*.h 檔案複製到 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\include 下 :
接下來將 lib\x64 資料夾下的 cudnn*.lib 檔案複製到 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\lib\x64 下 (lib 下就只有一個 x64 資料夾) :
最後到 "系統/系統資訊/進階系統設定" :
在彈出視窗中按最底下的環境變數 :
在底下 "系統變數" 中找尋 PATH 變數, 然後按 "編輯" 鈕 :
新增一筆路徑變數值 :
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\lib\x64
按 "確定" 即可 :
這樣就完成 cuDNN 的安裝與設定了.
六. 安裝 PyTorch :
完成 CUDA 與 CUdnn 安裝後即可安裝 PyTorch GPU 版了 :
安裝指令如下 (約 2.5GB) :
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
我是在 Thonny 中安裝 :
C:\Users\USER>pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
Looking in indexes: https://download.pytorch.org/whl/cu121
Collecting torch
Downloading https://download.pytorch.org/whl/cu121/torch-2.2.2%2Bcu121-cp310-cp310-win_amd64.whl (2454.8 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.5/2.5 GB 2.2 MB/s eta 0:00:00
Collecting torchvision
Downloading https://download.pytorch.org/whl/cu121/torchvision-0.17.2%2Bcu121-cp310-cp310-win_amd64.whl (5.7 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 5.7/5.7 MB 6.0 MB/s eta 0:00:00
Collecting torchaudio
Downloading https://download.pytorch.org/whl/cu121/torchaudio-2.2.2%2Bcu121-cp310-cp310-win_amd64.whl (4.1 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.1/4.1 MB 6.0 MB/s eta 0:00:00
Requirement already satisfied: filelock in c:\users\user\appdata\roaming\python\python310\site-packages (from torch) (3.13.3)
Requirement already satisfied: typing-extensions>=4.8.0 in c:\users\user\appdata\roaming\python\python310\site-packages (from torch) (4.10.0)
Collecting sympy (from torch)
Downloading https://download.pytorch.org/whl/sympy-1.12-py3-none-any.whl (5.7 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 5.7/5.7 MB 6.1 MB/s eta 0:00:00
Collecting networkx (from torch)
Downloading https://download.pytorch.org/whl/networkx-3.2.1-py3-none-any.whl (1.6 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.6/1.6 MB 5.8 MB/s eta 0:00:00
Requirement already satisfied: jinja2 in c:\users\user\appdata\roaming\python\python310\site-packages (from torch) (3.1.3)
Requirement already satisfied: fsspec in c:\users\user\appdata\roaming\python\python310\site-packages (from torch) (2024.3.1)
Requirement already satisfied: numpy in c:\users\user\appdata\roaming\python\python310\site-packages (from torchvision) (1.26.4)
Requirement already satisfied: pillow!=8.3.*,>=5.3.0 in c:\users\user\appdata\roaming\python\python310\site-packages (from torchvision) (10.3.0)
Requirement already satisfied: MarkupSafe>=2.0 in c:\users\user\appdata\roaming\python\python310\site-packages (from jinja2->torch) (2.1.5)
Collecting mpmath>=0.19 (from sympy->torch)
Downloading https://download.pytorch.org/whl/mpmath-1.3.0-py3-none-any.whl (536 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 536.2/536.2 kB 5.7 MB/s eta 0:00:00
Installing collected packages: mpmath, sympy, networkx, torch, torchvision, torchaudio
Successfully installed mpmath-1.3.0 networkx-3.2.1 sympy-1.12 torch-2.2.2+cu121 torchaudio-2.2.2+cu121 torchvision-0.17.2+cu121
可見 PyTorch 已安裝成功, 接下來到 Thonny 匯入 torch 模組來檢查版本 :
Python 3.10.11 (C:\Users\USER\AppData\Local\Programs\Thonny\python.exe)
>>> import torch
>>> torch.__version__
'2.2.2+cu121'
可見是跑 PyTorch 2.2.2 版與 CUDA 12.1 版. 接下來測試資料是否能在 GPU 上運算 :
>>> a=torch.rand(2, 3)
>>> a
tensor([[0.2751, 0.9667, 0.2958],
[0.0825, 0.7995, 0.4680]])
>>> a.device
device(type='cpu')
可見張量 a 預設是放在 CPU 的記憶體裡.
用 torch.cuda.is_available() 檢查是否有 GPU (CUDA) :
>>> torch.cuda.is_available()
True
>>> device=torch.device('cuda')
>>> device
device(type='cuda')
呼叫張量的 to() 方法將其存至 GPU :
>>> b=a.to(device)
>>> b
tensor([[0.2751, 0.9667, 0.2958],
[0.0825, 0.7995, 0.4680]], device='cuda:0')
>>> b.device
device(type='cuda', index=0)
可見張量 B 確實是放在 GPU 的 VRAM 裡.
參考 :
沒有留言:
張貼留言