名詞解說
CPU
CPU: Central Processing Unit,就是一般電腦的中央處理器。
GPU
Graphics Processing Unit,就是俗稱的顯示卡。
CPU 控制整台電腦的程式運作,當然也會進行數字的運算。CPU 的頻率決定其效能,效能是指在 1 單位時間內所能執行的指令數量。
比如說,A 這個 CPU 在1 秒鐘(1 個單位時間) 可以執行 10 億個指令(1G),而 B 這個 CPU 1 秒鐘可以執行1 億(0.1G) 個指令,那麼 A的效能就比B高出 10 倍效能。
CPU 是一個很強大的半導體晶片,每個指令花不到 1 奈秒。但 AI 的演算,動則多達好幾萬億個計算,再怎麼厲害的 CPU 都會被卡死。
為了解決上述的問題,使用 1000 顆 CPU 來幫忙計算,當然就可以輕易解決。不過 CPU 造價昂貴,這種方式並不切實際。
那麼如果用 “簡易型CPU”,也就是把複雜的 CPU 功能閹割掉,只剩下計算的功能,然後一次安裝 3000 多顆 “簡易型CPU”,是否能解決上述的問題呢。
GPU 就是上千台簡易的計算機,也就是 nVidia 老黃所說的多核彈攻略。
把高階顯卡說成是上千台算易型計算機,確實有點過份,因為要在那麼小的晶片上安裝這麼多台計算機真的是高科技。但在學習路程上,上千台簡易型計算機是最佳的解決方式。
CUDA 、Tensorflow 、PyTorch
CUDA 全名為 Compute Unified Device Architecture (演算設備統一架構),是 nVidia 主推的演算法,該架構可啟用 GPU 多核心計算。CUDA tool kit 是啟動 nVidia GPU 的函數庫。
cudnn 全名為 nVidia CUDA Deep Neural Network (深度神經網路),專門為深度學習計算所設計的軟件庫,裏面包含了許多的計算函數,如卷積等函數。
而 Tensorflow、PyTorch 可以想像成是一台強大的計算機。Tensorflow 由 Google 所開發,PyTorch 則是由 Facebook 開發。他們把複雜的計算式傳送給 CUDA,然後再由 CUDA 與 GPU 硬体溝通。
Python => TensorFlow => CUDA => GPU
上述的流程,我們用 Python 寫指令,將指令傳送給 TensorFlow 。TensowFlow 再判斷是否該使用 GPU,若是的話,就傳送指令給 CUDA,然後由 CUDA 對 GPU 進行控制。
各種版本說明
到 2024/09/06 為止,各個版本如下
ubuntu : 目前最新版本為 24.04,系統預設 python 3.12.3
cuda : 目前最新的版本為 cuda 12.8,而且支援 ubuntu 24.04
tensorflow : 在 Windows 中已不支援 GPU,但 Linux 則是全面都支援 GPU。
PyTorch : 在 Windows 及 Linux 都支援 GPU。
Windows 總結
在 Windows 下要使用 tensorflow 啟動 GPU,根本就是死路一條,無解。
Linux 總結
在 ubuntu 下要使用 tensorflow 啟動 GPU,完全沒問題
Windows 是否需要安裝CUDA
雖說 Tensorflow 不支援 Windows Cuda,PyTorch 會自已安裝需要的 Cuda,看似在 Windows 不需要手動安裝Cuda。
但其實錯了,因為像威力導演影片剪接軟体、Dlib 人臉辨識套件、Autodesk Maya、3ds Max 等許多軟體都需要 Cuda,所以安裝 Cuda 是必要的。
Tensorflow 為何停止支援 Windows GPU
TensorFlow’s development community has focused on improving support for Linux environments, where the ecosystem for deep learning frameworks and GPU acceleration is more mature and robust. The majority of high-performance computing and research in machine learning is done on Linux, and many GPU drivers and libraries are better supported there.
上述的意思,本人稍作翻譯~~
機器學習的高效計算及研究大多數都以 Linux 為主,而大部份的 GPU 驅動程式及函數庫對 Linux 有更好的支援,所以 Linux 在深度學習及 GPU 加速運算的生態系統更加成熟及廣泛,這也是為什麼 Tensorflow 開發社群要花更多的精力改善對 Linux 環境的支援。
本人推測
這可能是 Google 要逼迫微軟 Windows 系統退出 AI 領域所採用的商業賤招。
但因 PyTorch 的橫空出世,再加上 nVidia 更不可能讓 Google 任意宰割,所以後續發展精彩可期。
就讓我們站在高崗上,欣賞這些梟雄們自相殘殺血流成河吧!!
ps1 : WSL 是 Windows Subsystem Linux,在 Windows 上啟動模擬器執行 Linux,其實就是 Linux
ps2 : 無第二台電腦進行實際安裝 Linux 的人,是可以玩看看 WSL,因為支援硬体顯卡。不過本人徹底研究過,發現它真的是爛爛的。
安裝CUDA
CUDA Toolkit
請由如下網址下載安裝 : https://developer.nvidia.com/cuda-toolkit-archive。 進入網站後請選擇最新版本(12.8)。共有 3G 容量,請耐心等後。
安裝時選擇自訂安裝,然後把有關 Nsight 的項目關掉,否則會進入無窮迴圈中,裝不起來。Nsight 主要是用於效能分析、偵錯及最佳化,不安裝並不會影響 Cuda 的運作。
安裝後請在 dos 模式下輸入 nvcc -V,若有看到版本,即表示安裝成功。
cudnn
專門為深度學習計算所設計的軟件庫。裏面包含了許多的計算函數,如卷積等函數。全名為
nVidia CUDA Deep Neural Network (深度神經網路), 請由如下網址下載
https://developer.download.nvidia.com/compute/cudnn/redist/cudnn/windows-x86_64/
。
下載後,將檔案解開,然後把cuda裏的目錄及檔案 copy 到 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8 之下
copy到如下位置
測試
安裝好後,可以用如下代碼測試一下.
#pip install tensorflow==2.10.1 import tensorflow as tf gpus = tf.config.list_physical_devices(device_type='GPU') print(gpus)