本篇撰寫於 2024/09/07,到目前為止各種所需的版本如下 :
ubuntu : 24.04
Python : 系統預設為 3.12.3
cuda : 最新可支援的版本 12.6
tensorflow : 最新版為 2.17.0
PyTorch : 最新版為 4.1
安裝相關驅動程式
底下會全自動安裝相關驅動程式,但不會安裝顯卡驅動
sudo ubuntu-drivers autoinstall
安裝nVidia 顯卡驅動程式 for Ubuntu 24.04
nVidia 已開放顯卡驅動程式原始碼,open source 的效能跟官網的驅動不相上下,建議安裝 open source driver。
🔒 完整內容請註冊並登入會員。
免費註冊登入gpu-unlock
AI 模型在顯示卡上做矩陣運算時,常見的做法是使用 FP16 或 BF16 格式輸入,然後再用精度較高的 FP32 累加結果,而 GeForce 卡在這種模式下只跑專業卡一半的速率。
gpu-unlock 是一個開源的 nVidia 顯示卡解鎖工具,主要用途是讓部分 GeForce 顯示卡提高 Tensor Core 的特定運算吞吐量,尤其是 FP16、BF16 等運算。它不是一般的顯示卡超頻工具,也不會直接增加顯示卡的 VRAM,而且不會增加電力消耗。
GPU Unlock 的做法是,在 nVidia 驅動程式接管顯示卡之前,先透過 Linux 核心模組改寫 GPU 內部的速度選擇設定,接著讓顯示卡重置一次,再交給原本的 NVIDIA 驅動正常初始化。整個過程有幾個特點:
- 不需要超頻,也不必刷顯示卡 BIOS
- 不修改 NVIDIA 原廠驅動程式,驅動更新後也不用重新打補丁
- 主要改善 FP16、BF16 等矩陣運算效能,也能讓部分 TF32 工作負載受益
- 一般 FP32 與純 INT8 矩陣運算的直接加速效果不明顯
經測試 RTX 3080 可增加 71% 的算力。
官方網址如下 : https://github.com/Zagitta/gpu-unlock
支援型號
支援 RTX 30、40、50 系列安裝
安裝相關套件
安裝 gpu-unlock 需編譯原始碼,編譯前需先安裝如下套件。
sudo apt update sudo apt install -y git build-essential dkms linux-headers-$(uname -r) devscripts debhelper
下載、編譯及安裝 gpu-unlock
使用如下步驟下載、編譯並進行安裝。
git clone https://github.com/Zagitta/gpu-unlock cd gpu-unlock make install
修改 grub
sudo vim /etc/default/grub,在 GRUB_CMDLINE_LINUX_DEFAULT 新增 gpu_unlock_targets=all
GRUB_CMDLINE_LINUX_DEFAULT="gpu_unlock.targets=all"
儲存後,執行 sudo update-grub,然後重新啟動。
測試是解鎖
執行如下指令,如果有如下結果表示解鎖成功。
modinfo -n gpu_unlock
結果
/lib/modules/6.8.0-147-generic/updates/dkms/gpu_unlock.ko.zst
sudo journalctl -k -b | grep -i gpu_unlock
結果
......
pr2=0x1ffffe00:0x0 ss0=0x88888888 ss1=0x8 plm=0xffffffff cmd=0x3 devsta=0x0 chip=0xb72000a1
Oct 28 12:42:56 xxxx kernel: pci 0000:01:00.0: gpu_unlock: stage=handoff ret=0 state=4 retained=0 pages=0/20606 cleanup=0
Oct 28 12:42:56 xxxx kernel: pci 0000:01:00.0: gpu_unlock: unlocked
效能
解鎖後,在 Python 使用 tensorflow 或 pytorch 架構的程式不會有任何效率的增長。
但 ComfyUI 執行 z-image-trubo 的 KSampler 明顯快很多。生成一張1920*1080 圖片,未解鎖需 23 秒,解鎖後直接縮短到 11 秒。
