GPU 與裝置設定
預設的 PyTorch 安裝適用於所有平台(CPU,以及透過 MPS 的 Apple Silicon)。只有在你需要特定 CUDA 版本、AMD ROCm/DirectML,或想驗證 GPU 偵測時才需要繼續往下讀。
CodefyUI 會在執行階段從後端讀取可用的裝置,所以只要 PyTorch 看得到的,都會出現在每個裝置下拉選單裡:設定、執行旁邊這張圖自己的裝置控制項,以及每個節點「進階」裡的 device 參數。在圖上或設定裡設一次即可。節點參數的 auto 跟隨這次執行的裝置:圖的裝置,沒有指定時則用設定。送到 worker 且拿到多個裝置的執行,會依列出的順序把它們看成 cuda:0..N-1,所以可以用這個位置把節點固定在其中任一個。
NVIDIA CUDA(特定版本)
先確認你已安裝的 CUDA 版本:
nvidia-smi
查看右上角的 CUDA Version: 欄位,然後使用 cdui install --gpu 安裝相符的 wheel。此指令會替換 venv 中的 PyTorch build。之後執行 cdui update 時,指令會從已安裝的 wheel 讀取變體並保留該設定:
# CUDA 13.0:需要 NVIDIA driver 580 以上
cdui install --gpu cu130
# CUDA 12.9:需要 NVIDIA driver 575 以上
cdui install --gpu cu129
# CUDA 12.8 —— RTX 50 系列(Blackwell, sm_120)必裝,RTX 30 / 40 亦可使用。
cdui install --gpu cu128
# CUDA 12.6 —— RTX 30 / 40 系列,現代驅動的通用預設選擇
cdui install --gpu cu126
# CUDA 11.8 —— GTX 10 / RTX 20 系列,或舊驅動
cdui install --gpu cu118
一行指令安裝程式使用 --gpu auto。它會依 nvidia-smi 回報的 driver 版本選擇 wheel:580 以上選擇 cu130,575 以上選擇 cu129,560 以上選擇 cu128,555 以上選擇 cu126,545 以上選擇 cu124,530 以上選擇 cu121,520 以上選擇 cu118。較舊的 driver 會選擇 CPU build。如果伺服器是以 cdui start 啟動,套件中心的 GPU 版 PyTorch 卡片會執行相同的安裝並重新啟動伺服器。請參閱讓伺服器重新啟動的安裝。
若要手動安裝,請啟用 backend/.venv,並執行安裝程式使用的同一個 uv pip 指令:
cd backend
.venv\Scripts\activate # Windows
source .venv/bin/activate # macOS / Linux
uv pip install --reinstall-package torch --reinstall-package torchvision torch torchvision --index-url https://download.pytorch.org/whl/cu128 # 或 cu130 / cu129 / cu126 / cu118
:::warning RTX 50 系列(Blackwell)
RTX 5090 / 5080 / 5070 必須使用 cu128 或更新的版本(cu129、cu130);舊版 wheel 缺少 sm_120 kernel,執行時會以 no kernel image is available for execution 失敗。
:::
驗證 CUDA 可用:
python -c "import torch; print('CUDA:', torch.cuda.is_available(), '| Device:', torch.cuda.get_device_name(0) if torch.cuda.is_available() else 'N/A')"
Apple Silicon (MPS)
在 M1/M2/M3/M4 Mac 上,預設安裝就已經附帶 Metal Performance Shaders 後端。注意「附帶」不等於「使用」:除非你在設定裡、或直接在圖上選了 mps,否則執行仍然留在 CPU——參見 裝置後端。驗證後端存在:
python -c "import torch; print('MPS:', torch.backends.mps.is_available())"
:::note MPS 上的 float64
MPS 以 float32 為原生格式,並會拒絕 float64 張量。CodefyUI 會在 device_utils.to_device 中處理,但自訂節點在 Apple GPU 上應建立 float32 張量。MPS 沒有某項運算的 kernel 時,PyTorch 會改在 CPU 上執行,而不會使整次執行失敗。裝置後端說明如何變更此退回行為,也記錄實驗性的原生 MLX 推論 spike。
:::
AMD 顯卡
AMD 的支援度高度取決於你的作業系統。
Linux + AMD(ROCm,官方支援)
cdui install --gpu rocm6.2 # 或 rocm6.1 / rocm6.3 / rocm6.4 / rocm7.0
PATH 中有 rocm-smi 時,--gpu auto 會選擇 rocm6.2。rocm-smi 不會回報 driver 支援的 ROCm 版本,所以若你安裝的 ROCm 較新,請自行選擇 rocm6.3、rocm6.4 或 rocm7.0。若要手動安裝,請啟用 backend/.venv,再執行 uv pip install --reinstall-package torch --reinstall-package torchvision torch torchvision --index-url https://download.pytorch.org/whl/rocm6.2。
驗證:
python -c "import torch; print('CUDA (ROCm):', torch.cuda.is_available())"
在 ROCm 上,torch.cuda.is_available() 會回傳 True,因為 ROCm 對外以相容於 CUDA 的後端介面呈現。
Windows + AMD(支援有限)
PyTorch 沒有提供官方的 Windows ROCm 版本。你的選項有:
-
(a) DirectML —— 需要修改程式碼。套件可以安裝,但執行、圖與節點參數只接受
cpu、auto、cuda(或cuda:N)與mps,因此 CodefyUI 永遠不會選用 DirectML 裝置:uv pip install torch-directml -
(b) CPU 模式 —— 上方的預設安裝已經可用。建議在 Windows + AMD 上用於學習/原型開發。
Intel GPU(XPU)
PyTorch 為 Intel Arc、Data Center GPU Max/Flex 與較新的 Intel 內顯提供 xpu build,支援 Linux 與 Windows。請先安裝 Intel GPU driver;各款 GPU 的需求請見 Intel 的 PyTorch 安裝前置說明。
cdui install --gpu xpu
只有 PATH 中有 xpu-smi(Intel GPU driver 套件的一部分)時,--gpu auto 才會選擇 xpu。偵測不使用 sycl-ls,因為 oneAPI 工具組在沒有 Intel GPU 的電腦上也會安裝它。沒有 xpu-smi 的電腦請自行選擇 xpu。
驗證:
python -c "import torch; print('XPU:', torch.xpu.is_available())"
:::note 執行仍使用 CPU
CodefyUI 的裝置控制項提供 cpu、auto、cuda(或 cuda:N)與 mps,auto 不會選用 Intel GPU。安裝 xpu build 後,執行仍留在 CPU,直到 CodefyUI 加入 xpu 裝置選項為止。現在先提供這個 build,是為了讓同一個 venv 中的自訂節點與腳本可以直接使用 torch.xpu。
:::
裝置無法使用時
設定裡的運算裝置儲存在瀏覽器中,而不是伺服器上,因此它可能指向這台伺服器沒有的裝置,例如在另一台電腦上選的 cuda。這時編輯器會顯示:
- 設定的下拉選單會把儲存的值顯示為停用的選項「cuda(此伺服器沒有)」,這一列的提示也會從「最佳可用裝置:…」改為「這台伺服器沒有 cuda,執行時會退回 CPU。」
- 執行旁邊這張圖的裝置選單中,第一個選項會從「跟隨設定(…)」改為「跟隨設定(cuda → CPU)」。
- 圖檔中儲存、但不在這台伺服器清單中的裝置,例如
auto,或單一 GPU 機器上的cuda:1,會在該選單中以停用選項顯示儲存的值。儲存圖時會保留這個值。
選擇清單中的裝置即可解除這個狀態。伺服器沒有的裝置類型會改在 CPU 上執行;伺服器清單中沒有的 cuda:N 或 mps:N 會改用它目前的 GPU(或 mps),auto 則使用現有最好的裝置(見裝置後端)。上面的 CPU 訊息不會區分這些情況:在只列出 cuda 的單一 GPU 伺服器上,設定中的裝置為 cuda:0 或 cuda:1 時會顯示「執行時會退回 CPU」與「→ CPU」,但執行其實會在 GPU 上。
伺服器偵測到 GPU、但 PyTorch build 不是該 GPU 建議的版本時(通常是 CPU 版),設定的這一列會加上「偵測到 NVIDIA GeForce RTX 4080 (driver 560.94),但這台伺服器跑的是 CPU 版。安裝:」、安裝指令(例如 cdui install --gpu cu128)與套件中心連結。只要版本不一致,訊息就會說「CPU 版」,包括已經能使用 GPU 的較舊 CUDA 版(例如 cu126)。伺服器若由 cdui start 啟動,套件中心裡的 GPU 版 PyTorch 卡片會安裝該版本、重新啟動伺服器並重新載入頁面。設定中的裝置不會自動改變;要使用 GPU,請在設定或圖上選擇它。
疑難排解
從 CPU 切換到 CUDA(或反向切換)
cdui install --gpu cu128 # 改回去:cdui install --gpu cpu
uv pip install -e . 裝到錯的 PyTorch 版本
torch 與 torchvision 是後端的核心依賴,而且沒有指定 index URL。venv 中沒有 torch,或 torch 版本低於 2.5 時,uv pip install -e .(或 -e ".[dev]")會安裝 PyPI 的預設 wheel:Windows 上是純 CPU 版,其他平台則不一定符合你的 CUDA runtime。請先用 cdui install --gpu <choice> 或本頁明確指定 --index-url 的指令安裝需要的版本;已符合需求的 torch 不會被更動。
有 NVIDIA 顯卡時 torch.cuda.is_available() 仍回傳 False
- 執行
nvidia-smi確認驅動版本。 - 確認你安裝的是與驅動匹配的 CUDA PyTorch wheel(例如不要在只支援到 CUDA 11.8 的驅動上安裝
cu128)。 - RTX 50 系列 +
no kernel image is available for execution→ 代表你用的是舊版 wheel;重新安裝cu128。 - 若需要請更新你的 NVIDIA 驅動。
UI 的 device 下拉選單沒有顯示 CUDA
前端會從後端讀取可用裝置。若你的 GPU 沒有列出來:
- 在啟用
backend/.venv的情況下確認 PyTorch 能看見它:python -c "import torch; print(torch.cuda.is_available())" - 重新啟動伺服器(先
cdui stop,再cdui start)。伺服器只在啟動時匯入一次 PyTorch,所以執行期間安裝的 build 它看不到,重新載入節點也不會重新匯入。 - 重新整理頁面。編輯器每次載入頁面只讀取一次裝置清單。
從 API 驗證裝置偵測
curl -s http://127.0.0.1:8000/api/nodes/TrainingLoop | python -c "import sys,json; d=json.load(sys.stdin); print([p['options'] for p in d['params'] if p['name']=='device'][0])"
這會印出可用裝置。NVIDIA 系統會顯示 ['auto', 'cpu', 'cuda'];有多張卡時,還會顯示 cuda:0、cuda:1 與其他帶索引的裝置。PyTorch 未偵測到加速器時,會顯示 ['auto', 'cpu']。auto 一定可用,並會跟著圖的裝置走:工具列指定的裝置,圖沒有指定時則是設定裡的裝置。