由於買不起 GPU,只好將手上的 CPU 性能榨的一滴不剩。
這篇文章將介紹如何安裝 Pytorch 並且進行在 Intel CPU 的內顯上性能優化。
02/20 更新:
後來發現不用手動編譯就有支援iGPU。
|
|
雖然在 training 的時候 loss.backward() 直接卡住,但在 inference 的時候有確實占用GPU。
工具與環境:
- Windows 11
- Intel i5-1145G7(Intergrated Intel Iris Xe Graphics)
- Microsoft Visual Studio Community 2022
- Workloads: Desktop development with C++
- Separate options: MSVC and Windows SDK
- Mamba with python==3.11.11
安裝開發套件與驅動
由於我們要直接從源碼編譯,所以需要安裝開發套件。
- Intel Deep Learning Essentials
- PyTorch dev support package
還有 Intel 顯示卡的驅動。
- Intel & Iris Xe Graphics - Windows Drivers
開始編譯
注意:以下步驟必須一氣呵成,不可中斷。
- 下載腳本 https://github.com/intel/intel-extension-for-pytorch/raw/v2.5.10%2Bxpu/scripts/compile_bundle.bat
- 由於該腳本是 LF 格式,所以需要轉換成 Windows 需要 CRLF 格式(可以用 vscode 轉換)
- 接著打開 Intel oneAPI command prompt for Intel 64 for Visual Studio 2022 並執行以下指令:
|
|
- 切換到腳本所在目錄,執行腳本
|
|
接著就是漫長的等待時間,等待編譯完成以我的破筆電大概要 6 小時。
如果順利的話,此時虛擬環境內應該已經有 pytorch, torchvision 和 torchaudio。
Intel Extension for PyTorch
沒意外的話,編譯階段會在編譯 Intel Extension for PyTorch 時失敗,這是因為 Intel Extension for PyTorch v2.5.10+XPU 並不支援 Tiger Lake 的 CPU,我們需要到 intel-extension-for-pytorch\csrc\gpu\aten\operators\xetla\kernels\CMakeLists.txt 的第 18 行手動加上 tgllp(如果不是用第 11 代 CPU,請參考表格)。
|
|
接著我們需要修改 compile_bundle.bat,把已經安裝好的部分拿掉,只編譯 Intel Extension for PyTorch。(我可不想再等 6 小時) 且為了避免後面的鬼問題,我們要安裝最新版的 cmake 與 ninja。並把 compile_bundle.bat 的 pip cmake 指令移除。
|
|
修改完成後,總算可以開始編譯 Intel Extension for PyTorch 了。只是此時的指令要改成:
|
|
那個多的 mtl-h 是因為只編譯 tgllp 的話會失敗,所以我隨便加的一個。
等待大約 2 小時後,Intel Extension for PyTorch 就編譯完成了。
測試
|
|
為了日後更方便使用,將以下指令加入 %CONDA_PREFIX%\etc\conda\activate.d\env_vars.bat 中。
|
|
結語
大約一個月後,Intel Extension for PyTorch 就會出 v2.6 版本,到時就能使用 Python v3.13 搭配 PyTorch v2.6 了。其實現在也可以使用 Python v3.12,只是我裝錯又不想重新等 6+2 小時。