在開始壞壞之前,我們先了解一下 ZLUDA 是什麼?
ZLUDA 是一款很有理想的開源套件,
號稱能模擬閉源的 CUDA ,只用 Intel CPU 就能執行現有的 CUDA code。
但實際用下去發現還是有一點小限制,
畢竟作者本人在 2021 年跳坑了(用膝蓋猜是被 I社把拔的 Arc 顯卡利益衝突到)。
目前 Linux 系列只支援到 5.19 Kernel,
如果你跟我一樣用 Ubuntu 22.04 也是失去支援。
Windows 戰場就優質許多,
只要你是臺正常的家用主機應該都能用!
畢竟這年代誰還用奔騰與賽揚或是 Atom 當家用 CPU 你說對吧?
但還是跟一票嵌入式 CPU 說掰掰了,
因為 ZLADA 主要壓榨的是 UHD 顯示晶片的算力。
話不多說,先來下載在 windows 上面用:
下載完解壓縮,你的框架套件(PyTorch 等)也不用重裝,
就直接:
zluda_wuth.exe -- python your_py_file.py
就能跑了,484很方便?
Ummmm,通常是不會那麼方便啦。
有幾點要特別注意,因為這貨是模擬 CUDA 所以不是真的尻 CUDA 出來用。
你的框架套件配合 CUDA 版本要看 nvidia-smi 上面你裝的 Nvidia Driver 支援的比較準,
而不是 nvcc -V 出來的真實 CUDA 版本。
不然注入 zlida_with.exe 的時候會說你的 Driver 與 CUDA mismatch。
聽起來有點模糊對不對?
簡單來說,
如果你下 nvidia-smi 發現自己 Nvidia Driver 是 53X.xx 版,配合的 CUDA 是 12.2,
而 nvcc -V 出來的真實 CUDA 版本是 10.0?
那麼你 PyTorch 就要按照 Nvidia Driver 配合的 CUDA 裝,而不是裝 cu100 系列的 PyTorch。
這點要特別注意!
還有就是如果在 conda 環境內遇到 Python3.8 的 dll loss 問題,
需要重新安裝 Python ?
切記在 conda 裡面重新安裝 Python ,套件會繼承下來,
這會與之前舊有的 PyTorch 連動產生一些問題。
像是好事的 PyTorch 1.8.1 會喜歡幫你更新 typing_extensions,
如果你重新安裝了低版本的 Python (e.g. 3.8 -> 3.7)
會遇到 typing_extensions 錯誤,而且長得很像你程式寫錯:
File “C:UsersuserNameanaconda3envsmyenvlibsite-packagestyping_extensions.py”, line 874
def TypedDict(typename, fields=_marker, /, *, total=True, **kwargs):
^
SyntaxError: invalid syntax
莫急莫慌莫害怕,先查一下 typing-extensions 版本是不是被繼承?
是的話直接:
pip show typing-extensions pip uninstall typing_extensions pip install typing_extensions
我印象還因為 zluda 處理了一些 deadlock 問題,
還好天公疼憨人讓我順手解開了。
以上就能讓 ZLUDA 在 Windows 上順利跑起來!
結論時間:
ZLUDA 真的能取代低階 GPU (_050, _060)的 inference task 嗎?
以下情況是拿 Alder Lake 的 i5 去測的結論,
某些情況會比純 CPU inference 快一點,
但要 Costdown 還是想多了。
有進步,但不多!