0. 前言
在 AI 萌發的世代越來越多組織投入到模型的訓練,不只企業專用還有免費開源。相對於使用網頁產品受到代幣或會費的限制,在擁有夠力的設備下,我們也能夠自己運行略為遜色但免費的服務。
趕緊來看看如何在本地設置環境準備運行開源模型吧!
1. 重點
2. 內容
2.1. 檢查 CUDA
針對所使用的 NVIDIA GPU 設備,我們必須另外安裝 CUDA Toolkit 讓電腦知道顯卡的位置以進行使用,若沒有經過正確的流程則沒法正確驅動,變相使用 CPU 而非 GPU 導致很多人抱怨執行時間過長。
關於如何選擇 CUDA 版本,我們首先到【顯卡與運算兼容】找到自己顯卡的 Compute Capability 數值,如我的設備在下圖標註處而其數值為 8.6 ,相對屬於較新的資源(本篇完成時最新為 9.0)。
接著我們到【架構與對應版本】看到表格,找到對應的 Compute Capability 以及其支援的 CUDA 版本間距。可以看到較舊的型號不再維護,而目前多數則支援到最新的版本,但最低的支援版本各不相同。
Architecture | CUDA Capabilities | First CUDA Toolkit Support | Last CUDA Toolkit Support | Last Driver Support |
---|---|---|---|---|
Fermi | 2.0 | CUDA 3.0 | CUDA 8.0 | R390 |
Kepler | 3.03.2 | CUDA 6.0 | CUDA 10.2 | R470 |
Kepler | 3.53.7 | CUDA 6.0 | CUDA 11.x | R470 |
Maxwell | 5.05.25.3 | CUDA 6.5 | Ongoing | Ongoing |
Pascal | 6.06.1 | CUDA 8.0 | Ongoing | Ongoing |
Volta | 7.0 | CUDA 9.0 | Ongoing | Ongoing |
Turing | 7.5 | CUDA 10.0 | Ongoing | Ongoing |
Ampere | 8.08.6 | CUDA 11.0 | Ongoing | Ongoing |
Ada | 8.9 | CUDA 11.8 | Ongoing | Ongoing |
Hopper | 9.0 | CUDA 11.8 CUDA 12.0 | Ongoing | Ongoing |
版本差距不只在於系統的變動,同時有包括外部程式的兼容性,因此還是建議安裝較新的版本。比如【此篇詢問】也是我所遇到的議題,本來 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 指令,此時應該能跳出當下的顯卡資訊。
2.4. 安裝 PyTorch
建議使用 venv 進行環境的分隔,隨著專案越多雖然占用大量的儲存空間,但相對好集中管理,且避免不同專案的套件版本發生衝突。
我們複製在 2.2 取得的指令並開始進行漫長的安裝,在等待期間我們先建立一個 Python 檔案等會用來檢測系統設備。簡單解釋一下邏輯,當 CUDA 支援時則會使用 GPU 並回報首個設備的資訊,否則使用 CPU 。
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 <上述 .py 路徑>
3. 後話
當我們確認好正確安裝與配置後,就可以安心地進入模型開發與探索的階段了。
無論是進行深度學習的訓練,還是處理其他複雜的計算任務,擁有良好的驅動環境將確保你的工作流程順暢無礙。未來就讓我們一起探索模型的潛力,開啟 AI 領域的全新旅程吧!