跳轉到主要內容
NVIDIA CUDA CUDA (Compute Unified Device Architecture) 是 NVIDIA 顯卡的靈魂,它讓 GPU 不只是打遊戲的顯卡,而是能進行平行運算的超級計算機。 搭配 cuDNN (Deep Neural Network Library),我們才能在 PyTorch 或 TensorFlow 中使用 GPU 加速模型訓練。 這篇指南在 Windows 環境下正確安裝與配置這些核心組件。了解其中配置後,也可於 Linux 環境下進行類似配置。
為什麼這很重要?環境配置是 AI 開發的第一道門檻。版本不匹配(Mismatch)是開發者/研究者要花費大量時間去排除的問題。 搞定一次正確的安裝與配置,可以省下未來無數小時排除 RuntimeError 的時間。

1. 顯卡驅動程式更新

在安裝 CUDA 之前,擁有一個健康的驅動程式版本是必須的。
  1. 檢查系統資訊 右鍵點擊桌面空白處,進入 NVIDIA Control Panel (控制面板),點擊左下角的「系統資訊」。 NVIDIA 控制面板系統資訊
  2. 確認當前版本 在系統資訊中,你可以看到目前的驅動程式版本與支援的最高 CUDA 版本。 驅動程式版本資訊
  3. 下載最新驅動 前往 NVIDIA 驅動程式下載頁面 更新驅動程式
    Studio Driver 還是 Game Ready?
    • Game Ready Driver: 針對最新遊戲優化,更新頻率高。
    • Studio Driver: 針對創作軟體(Blender, Premiere)與穩定性優化。
    建議:做深度學習開發,兩者皆可。若不常玩最新 3A 大作,Studio Driver 通常比較穩定。
  4. 安裝與重啟 下載後執行安裝程式,安裝過程中螢幕閃爍黑屏是正常現象。安裝完成後,請務必重新啟動電腦以套用變更。 驅動程式安裝畫面
  5. 驗證驅動程式 重新啟動電腦後,驗證驅動程式版本是否正確。 驅動程式驗證畫面

2. 安裝 CUDA Toolkit

CUDA Toolkit 包含了編譯器、開發工具與 runtime libraries。 若要查看官方版本的安裝流程,請參閱 CUDA Installation Guide for Microsoft Windows
概述
  • CUDA(Compute Unified Device Architecture,統一計算設備架構)是由 NVIDIA 開發的並行計算平台與程式設計模型,利用 NVIDIA GPU 的強大計算能力,加速科學計算、影像處理與機器學習等任務。它透過將運算任務分配至 GPU 的數千個核心,實現高效能並行處理。
  • cuDNN(CUDA Deep Neural Network Library,CUDA 深度神經網路庫)是 NVIDIA 針對深度學習優化的高效能程式庫,建立在 CUDA 之上。
  1. 確認版本需求 並非越新越好!請先確認你的深度學習框架(PyTorch/TensorFlow)支援的版本。

    本範例使用 CUDA 12.8.1 作為示範。

    請注意,需確認 Pytorch 支援的版本。

    CUDA Toolkit 下載選項列表
  2. 選擇安裝包類型 在下載頁面,你會看到兩種安裝類型:
    類型Network (exe)Local (exe)
    檔案大小小 (~13.7 MB)大 (~3.3 GB)
    安裝方式安裝時需連網下載離線安裝 (包含所有元件)
    建議網速快可選此項推薦 (避免安裝中斷)
    CUDA Toolkit 下載選項
  3. 執行安裝 執行下載的 .exe 檔。對於大多數使用者,選擇 “Express (快速)” 安裝即可。 若你是進階使用者,需要多版本共存,可選擇 “Custom (自訂)” 並取消勾選 Driver (因為第一步已經裝了最新的)。 CUDA 安裝選項
  4. 驗證環境變數 安裝程式通常會自動加入環境變數。檢查 CUDA_PATH 是否存在:
    1. 搜尋 “編輯系統環境變數”
    2. 點擊 “環境變數”
    3. 在系統變數中尋找 CUDA_PATH
    環境變數檢查 若未出現請查找是否有該資料夾,並將以下路徑添加:
    變數名稱路徑
    CUDA_PATHC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8
    CUDA_PATH_V12_8C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8
    打開終端機 (PowerShell / CMD) 輸入驗證指令:
    nvcc -V
    
    若看到類似 Cuda compilation tools, release 12.x, V12.x.x 的輸出,即代表安裝成功。 驗證輸出

3. 配置 cuDNN

cuDNN 是加速神經網路運算的關鍵函式庫,它不是執行檔,而是一包需要手動放置的二進位檔案。
  1. 下載 cuDNN 前往 cuDNN Archive (需登入 NVIDIA 開發者帳號)。 請下載與你的 CUDA 版本 (12.x for CUDA 12.x) 對應的 Zip 檔案 而下載的 cuDNN 版本(cuDNN v8.x.x)是 NVIDIA 對函式庫更新的版本。 cuDNN Archive 頁面 cuDNN 下載頁面
  2. 解壓縮與檔案搬移 解壓縮下載的 zip 檔,你會看到 bin, include, lib 等資料夾。我們需要將這些檔案複製到 CUDA 的安裝目錄中。 預設 CUDA 路徑:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.x 請依序進行以下複製操作 (系統可能會要求管理員權限):
    • 解壓縮資料夾/
      • bin/
        • cudnn.dll* ➡️ 複製到 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.x\bin 複製
      • include/
        • cudnn.h* ➡️ 複製到 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.x\include 複製
      • lib/
        • x64/
          • cudnn.lib* ➡️ 複製到 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.x\lib\x64 複製
    • bin\cudnn*.dll 複製到 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.x\bin
    • include\cudnn*.h 複製到 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.x\include
    • lib\x64\cudnn*.lib 複製到 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.x\lib\x64
    路徑要在哪?請確保是合併 (Merge) 或複製檔案進去,不要直接取代或刪除原本的資料夾!
  3. 檢查 cuDNN 環境變數 確保 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.x\bin 已加入系統環境變數 Path C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.x\lib\x64 不需要加入系統環境變數 Path 中(由編譯器配置處理)。
    路徑用途是否加入 PATH
    ...\CUDA\v12.x\bin運行時載入 .dll 檔案
    ...\CUDA\v12.x\lib\x64編譯時連結 .lib 檔案(由編譯器配置處理)
    • 確保運行時能找到 .dll 檔案(需將 bin 加入 PATH)。
    • 確保編譯時能找到 .lib 檔案(由編譯器配置處理)。
    • 若需要指定 lib\x64 路徑,可在編譯器設定中配置(例如 Visual Studio 的庫路徑)。
    部署備註此流程適用於快速部署 CUDA 與 cuDNN,若需更進階配置(如多版本並存或 Conda 環境),可進一步調整路徑與管理方式。如需最新資訊,建議參考 NVIDIA 官方文件

4. 驗證與測試

環境裝好了,真的能跑嗎?讓我們用 Python 實測一下。 在終端機輸入 nvidia-smi 看出驅動對應的「最高 CUDA 版本」(例如顯示 CUDA Version: 12.3)。

建立測試環境

建議使用 Conda 隔離環境,避免與系統 Python 衝突。
# 建立 Python 3.11 環境
conda create -n test_gpu python=3.11 -y

# 啟動環境
conda activate test_gpu

# 安裝 PyTorch (請依官網指令調整版本)
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu128
CUDA 版本相容性CUDA 具備向下相容性,詳見常見問題-驅動太新會影響舊版 CUDA 嗎?

跑個測試腳本

建立一個 gpu_test.py 檔案與執行:
gpu_test.py
import torch
import torch.nn as nn

print("="*40)
print(f"PyTorch Version: {torch.__version__}")
print(f"CUDA Available:  {torch.cuda.is_available()}")

if torch.cuda.is_available():
    device = torch.device("cuda")
    print(f"Device Name:     {torch.cuda.get_device_name(device)}")
    print(f"CUDA Version:    {torch.version.cuda}")
    
    # 簡單的卷積運算測試 cuDNN
    try:
        model = nn.Conv2d(1, 1, 3).to(device)
        data = torch.randn(1, 1, 64, 64).to(device)
        out = model(data)
        print("✓ cuDNN Test Passed! Convolution executed successfully.")
    except Exception as e:
        print(f"✗ cuDNN Error: {e}")
else:
    print("✗ CUDA not detected.")
print("="*40)
執行結果若出現 ✓ cuDNN Test Passed!,恭喜你!你的 GPU 運算環境已經準備就緒。

常見問題 (Troubleshooting)

Q: nvcc -V 找不到指令?

A: 請確認 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.x\bin 已經加入到系統環境變數的 Path 中。

Q: PyTorch 報錯 AssertionError: Torch not compiled with CUDA enabled

A: 你可能安裝到了 CPU 版本的 PyTorch。請使用 pip uninstall torch 移除後,務必加上 --index-url 指定 CUDA 版本的 whl 來源重新安裝。

Q: 驅動太新會影響舊版 CUDA 嗎?

A: 通常不會。NVIDIA 驅動有向下相容性 (Backward Compatibility)。新的驅動 (如 550.xx) 可以執行舊的 CUDA Toolkit (如 11.8) 編譯的程式。但反過來(舊驅動跑新 CUDA)是不行的。詳細的相容性規則(如 Minor Version Compatibility、Forward Compatibility)請參閱 CUDA 版本相容性