PyTorch 的 CUDA 版本怎麼選:Windows 上 torch.cuda.is_available() 為 False 時改裝 CUDA 版

摘要

PyTorch 搭配 NVIDIA 顯示卡時,能把 AI 模型的運算交給 GPU 處理,但在 Windows 上用 pip 直接安裝時,裝到的是只支援 CPU 的版本,程式也就偵測不到顯示卡。只要先確認驅動程式支援的 CUDA 版本,再從 PyTorch 官方的下載站重新安裝對應的 CUDA 版,PyTorch 就能用上顯示卡,且不需要另外安裝 CUDA Toolkit。

文章目錄

PyTorch 是執行與訓練 AI 模型時常用的 Python 框架,電腦有 NVIDIA 顯示卡時,PyTorch 就能把運算交給 GPU 處理。不過在 Windows 上照著常見的教學執行 pip install torch 後,裝到的是只支援 CPU 的版本,程式不會用到顯示卡,torch.cuda.is_available() 也會一直回傳 False。

這不是顯示卡或驅動程式出了問題,而是 pip 預設從 PyPI 下載,而 PyPI 上的 Windows 版 PyTorch 是 CPU 版。我們只要先確認驅動程式支援的 CUDA 版本,再從 PyTorch 官方的下載站重新安裝 CUDA 版,PyTorch 就能用上顯示卡,而且電腦上不需要另外安裝 CUDA Toolkit 或 cuDNN。

測試環境是 Windows 11、GeForce RTX 3070(8 GB)、NVIDIA 驅動程式 621.01 與 Python 3.15.1,安裝的是 PyTorch 2.15.0。

確認目前安裝的版本

先確認目前裝的是哪一種 PyTorch。用記事本或 VS Code 把下面的程式存成 check_gpu.py,再到平常執行程式的同一個終端機或虛擬環境裡執行 python check_gpu.py:

1import sys
2import torch
3
4print("Python:", sys.executable)
5print("PyTorch:", torch.__version__)
6print("CUDA:", torch.version.cuda)
7print("GPU 可用:", torch.cuda.is_available())
8if torch.cuda.is_available():
9    print("顯示卡:", torch.cuda.get_device_name(0))

腳本會印出 Python 的路徑、PyTorch 的版本號、它使用的 CUDA 版本,以及 GPU 能不能用。CPU 版與 CUDA 版的輸出差異如下:

欄位 CPU 版 CUDA 版
PyTorch 2.15.0+cpu 2.15.0+cu134
CUDA None 13.4
GPU 可用 False True

版本號結尾是 +cpu、CUDA 是 None 時,代表目前裝的是 CPU 版,接著照下面的步驟改裝 CUDA 版。CUDA 版的版本號結尾是 +cu 加上 CUDA 版本,例如 CUDA 13.4 是 +cu134,CUDA 13.2 是 +cu132。版本號已經是 +cu,GPU 卻仍然不可用時,直接看「仍然無法使用 GPU 的原因」。

驅動程式支援的 CUDA 版本

改裝之前,先確認顯示卡的驅動程式能支援哪個 CUDA 版本。在終端機執行 nvidia-smi,表格右上角的數字就是驅動程式支援的最高 CUDA 版本,較新的驅動程式標示為「CUDA UMD Version」,較舊的則標示為「CUDA Version」:

nvidia-smi 的輸出,右上角框出 CUDA UMD Version: 13.5,下方列出 NVIDIA GeForce RTX 3070 與 8192MiB 的顯示記憶體

這個數字是驅動程式的支援上限,電腦上不需要安裝這個版本的 CUDA。PyTorch 2.15.0 的官方安裝頁提供 Windows 用的 CUDA 13.2 與 13.4 兩種版本,我們選擇不超過 nvidia-smi 顯示數字的版本即可。顯示的數字低於 13.2 時,要先到 NVIDIA 驅動程式下載頁更新驅動程式,更新後再執行一次 nvidia-smi,確認數字已經變大。

重新安裝 CUDA 版

確認好版本後,到 PyTorch 官方安裝頁依序選擇「Stable」「Windows」「Pip」「Python」,再選擇不超過驅動程式上限的 CUDA 版本,頁面下方就會產生安裝指令。官方頁面產生的指令和常見教學只差在最後的 --index-url,這個參數會讓 pip 改從 PyTorch 的下載站下載內建 CUDA 元件的版本,因此不需要另外安裝 CUDA Toolkit:

沒有指定下載來源時,pip 從 PyPI 下載只支援 CPU 的 2.15.0+cpu,GPU 不可用。加上 PyTorch 下載站的 cu134 網址後,裝到內建 CUDA 元件的 2.15.0+cu134,GPU 可用

已經裝過 CPU 版時,要先在原本的終端機或虛擬環境裡移除它。pip 看到 torch 2.15.0 已經安裝,即使加上 --index-url 也只會顯示 Requirement already satisfied 並略過安裝。這個指令只會移除 PyTorch 與 torchvision,NumPy 等其他套件與自己的程式都不受影響。沒有安裝 torchvision 時,pip 會顯示 WARNING: Skipping torchvision as it is not installed.,代表這個套件本來就沒裝,不用理會:

1pip uninstall -y torch torchvision

移除完成後,執行官方安裝頁產生的指令。我選的是 CUDA 13.4,選 13.2 時網址結尾會是 cu132。CUDA 版的安裝檔約 2.2 GB,裝好後約佔 3.1 GB 的空間,CPU 版的安裝檔則只有 126 MB:

1pip install torch torchvision --index-url https://download.pytorch.org/whl/cu134

安裝完成後,再執行一次 python check_gpu.py。版本號變成 2.15.0+cu134、「GPU 可用」顯示 True,並印出顯示卡的名稱,就代表 PyTorch 已經能用上顯示卡:

檢查腳本顯示 PyTorch 2.15.0+cu134、CUDA 13.4、GPU 可用為 True,顯示卡為 NVIDIA GeForce RTX 3070

仍然無法使用 GPU 的原因

改裝時安裝失敗,或改裝後 GPU 仍然不可用時,依畫面上的訊息與檢查腳本的輸出對照下表:

現象 原因 處理方式
pip 回報 No matching distribution found for torch 指令用了舊版 CUDA 的網址,例如 cu118,沒有新版 Python 可用的安裝檔 改用官方安裝頁產生的指令
版本號仍是 +cpu 安裝前沒有移除 CPU 版,pip 略過了安裝 執行 pip uninstall -y torch torchvision 後重新安裝
在終端機是 True,在編輯器或 Jupyter 裡是 False 編輯器使用的是另一個 Python 環境 比對兩邊印出的 Python 路徑,把編輯器的直譯器換成裝了 CUDA 版的環境
版本號是 +cu,GPU 可用卻是 False 安裝的 CUDA 版本超過 nvidia-smi 顯示的上限 更新驅動程式,或改裝不超過上限的 CUDA 版本

總結

Windows 上的 PyTorch 要用上顯示卡,就要先確認驅動程式支援的 CUDA 版本,移除 CPU 版後再從 PyTorch 官方的下載站安裝 CUDA 版。實測改裝 CUDA 13.4 版後,torch.cuda.is_available() 從 False 變成 True。

下一篇Claude Code Hooks:私有 repo 沒有分支保護時,擋下 Agent 直接推送 mainAI
Ted Liou

Ted Liou

現役軟體工程師,Unity、AI 技術開發經驗分享與諮詢。