AI 本地模型 – PyTorch 環境安裝

0. 前言


在 AI 萌發的世代越來越多組織投入到模型的訓練,不只企業專用還有免費開源。相對於使用網頁產品受到代幣或會費的限制,在擁有夠力的設備下,我們也能夠自己運行略為遜色但免費的服務。

趕緊來看看如何在本地設置環境準備運行開源模型吧!

1. 重點


CUDA 版本建議較新版本,涉及到系統與外部程式支援的程度
PyTorch 相容的 CUDA 稍晚於 NVIDIA 最新發布的版本
PyTorch 不同的套件版本兼容不同的 CUDA 版本

2. 內容


2.1. 檢查 CUDA

針對所使用的 NVIDIA GPU 設備,我們必須另外安裝 CUDA Toolkit 讓電腦知道顯卡的位置以進行使用,若沒有經過正確的流程則沒法正確驅動,變相使用 CPU 而非 GPU 導致很多人抱怨執行時間過長。

關於如何選擇 CUDA 版本,我們首先到【顯卡與運算兼容】找到自己顯卡的 Compute Capability 數值,如我的設備在下圖標註處而其數值為 8.6 ,相對屬於較新的資源(本篇完成時最新為 9.0)。

接著我們到【架構與對應版本】看到表格,找到對應的 Compute Capability 以及其支援的 CUDA 版本間距。可以看到較舊的型號不再維護,而目前多數則支援到最新的版本,但最低的支援版本各不相同。

ArchitectureCUDA CapabilitiesFirst CUDA Toolkit SupportLast CUDA Toolkit SupportLast Driver Support
Fermi2.0CUDA 3.0CUDA 8.0R390
Kepler3.03.2CUDA 6.0CUDA 10.2R470
Kepler3.53.7CUDA 6.0CUDA 11.xR470
Maxwell5.05.25.3CUDA 6.5OngoingOngoing
Pascal6.06.1CUDA 8.0OngoingOngoing
Volta7.0CUDA 9.0OngoingOngoing
Turing7.5CUDA 10.0OngoingOngoing
Ampere8.08.6CUDA 11.0OngoingOngoing
Ada8.9CUDA 11.8OngoingOngoing
Hopper9.0CUDA 11.8
CUDA 12.0
OngoingOngoing

版本差距不只在於系統的變動,同時有包括外部程式的兼容性,因此還是建議安裝較新的版本。比如【此篇詢問】也是我所遇到的議題,本來 CUDA 11.7 跑得好好的,由於其他程式需要更新 Visual Studio 2022 結果就導致專案錯誤,加上 Community 版沒法回朔,只好加裝新的 CUDA,順道就寫下這篇記錄。

2.2. 匹配 PyTorch

確認完 CUDA 版本後別急著下載最新版,畢竟涉及 CUDA 的系統變動與套件維護,PyTorch 支援的版本與 NVIDIA 最新的版本難免形成差距。

來到【PyTorch 官網】稍微往下滾動,壓下 Get Started 進到安裝介面。

按照自己的設備與需求設定後,底層將會產生安裝的指令。此時注意到指令末端有 /whl/cu124 字樣,在安裝過程中該 PyTorch 內建只會尋找 CUDA 12.4,因此安裝 11.8 或 12.6 都是沒法正確運行的。

在部分 HuggingFace 或 GitHub 開源模型的安裝方式中可能存在 –index-url 之參數,此時我們就必須額外安裝其他版本的 CUDA Toolkit 避免 PyTorch 套件版本不同的差距引發錯誤。

2.3. 安裝 CUDA

再度回首來到【CUDA Toolkit Archive】並選擇 PyTorch 的對應版本,接著依照系統選擇並開始安裝。

等到下載器準備好就能夠執行,過程中維持預設即可,慢慢等待安裝完成即可。

安裝完成後我們開啟 powershell 並輸入 nvidia-smi 指令,此時應該能跳出當下的顯卡資訊。

(卸載不完全,導致 CUDA 版本顯示為 12.6)

2.4. 安裝 PyTorch

建議使用 venv 進行環境的分隔,隨著專案越多雖然占用大量的儲存空間,但相對好集中管理,且避免不同專案的套件版本發生衝突。

我們複製在 2.2 取得的指令並開始進行漫長的安裝,在等待期間我們先建立一個 Python 檔案等會用來檢測系統設備。簡單解釋一下邏輯,當 CUDA 支援時則會使用 GPU 並回報首個設備的資訊,否則使用 CPU 。

Python
import torch
import logging

# Set up logging configuration with a prettier format
logging.basicConfig(
    level=logging.INFO,
    format="%(asctime)s | %(levelname)s | %(message)s",
    datefmt="%Y-%m-%d %H:%M:%S",
)
logger = logging.getLogger()

# Define the dashboard border
border = "=" * 60
section_divider = "-" * 60

# Check if GPU is available and set the device
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")

# Print device type (GPU/CPU)
logger.info(border)
logger.info(f"⚙️  Using Device: {device.type.upper()}")
logger.info(border)

# Additional info when using CUDA (GPU)
if device.type == "cuda":
    gpu_name = torch.cuda.get_device_name(0)

    total_memory = round(
        torch.cuda.get_device_properties(0).total_memory / 1024**3, 1
    )  # Total GPU memory

    logger.info(f"🖥️  GPU Name: {gpu_name}")
    logger.info(f"📊 Total GPU Memory: {total_memory} GB")
    logger.info(border)

確認 PyTorch 安裝結束,我們就來測試看看是否能讀取到顯卡資訊。

Python
python <上述 .py 路徑>

3. 後話


當我們確認好正確安裝與配置後,就可以安心地進入模型開發與探索的階段了。

無論是進行深度學習的訓練,還是處理其他複雜的計算任務,擁有良好的驅動環境將確保你的工作流程順暢無礙。未來就讓我們一起探索模型的潛力,開啟 AI 領域的全新旅程吧!

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.