作者筆記: 本文記錄在 NVIDIA DGX Spark 上從零開始部署 Flux AI 圖像生成系統的完整過程,包含所有踩過的坑、錯誤訊息與解決方法。希望能幫助後來者少走彎路。
目錄
- 目錄
- 環境規格
- 安裝 pyenv
- 建立 Python 虛擬環境
- Clone ComfyUI(注意 Repo 已遷移)
- 安裝 PyTorch
- 下載 Flux 模型
- 啟動 ComfyUI
- 踩坑記錄總整理
- 最終最佳化設定
- 效能對比
環境規格
GPU: NVIDIA GB10 (Grace Blackwell Superchip)
VRAM: 119.69 GB(統一記憶體,CPU+GPU 共享)
CUDA: Driver 13.0
OS: Ubuntu 24.04 (aarch64 / ARM64)
Python: 3.11.9
PyTorch: 2.12.0.dev20260224+cu128
ComfyUI: v0.14.1
⚠️ 重要提醒: DGX Spark 是 ARM64 架構,不是 x86!這會影響 PyTorch 版本選擇與部分套件安裝方式。
確認環境指令
# 確認 GPU
nvidia-smi
# 確認系統架構(應顯示 aarch64)
uname -m
# 確認 CUDA(剛安裝完可能尚未有 nvcc)
nvcc --version
安裝 pyenv
安裝系統依賴
sudo apt update && sudo apt install -y \
build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev \
libncursesw5-dev xz-utils tk-dev \
libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev \
curl git
安裝 pyenv
curl https://pyenv.run | bash
加入環境變數
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc
source ~/.bashrc
# 確認安裝
pyenv --version
建立 Python 虛擬環境
# 安裝 Python 3.11.9(ARM64 會自動編譯,需要幾分鐘)
pyenv install 3.11.9
# 建立虛擬環境
pyenv virtualenv 3.11.9 comfyui-flux
# 確認
pyenv virtualenvs
Clone ComfyUI
⚠️ 坑一:Repo 已遷移,舊網址已過時
# ❌ 舊的(已過時,勿使用)
git clone https://github.com/comfyanonymous/ComfyUI.git
# ✅ 正確的(2025年底已遷移至 Comfy-Org)
git clone https://github.com/Comfy-Org/ComfyUI.git
cd ComfyUI
ComfyUI 已遷移至 Comfy-Org 組織,最新版本為 v0.8.0+。新版本對 CUDA 13.0 和 GB10 有原生支援。
綁定虛擬環境
cd ComfyUI
# 在此目錄自動啟用虛擬環境
pyenv local comfyui-flux
# 確認
python --version # 應顯示 3.11.9
安裝 PyTorch
⚠️ 坑二:GB10 需要 PyTorch Nightly
GB10 搭載 CUDA 13.0,穩定版 PyTorch 尚未支援,必須使用 nightly 版本。
pip install --upgrade pip
# GB10 + CUDA 12.8 nightly
pip install --pre torch torchvision torchaudio \
--index-url https://download.pytorch.org/whl/nightly/cu128
# 驗證
python -c "
import torch
print('PyTorch:', torch.__version__)
print('CUDA available:', torch.cuda.is_available())
print('GPU:', torch.cuda.get_device_name(0))
print('Total Memory:', torch.cuda.get_device_properties(0).total_memory // 1024**3, 'GB')
"
安裝 ComfyUI 依賴
pip install -r requirements.txt
安裝 ComfyUI Manager
cd custom_nodes
git clone https://github.com/ltdrdata/ComfyUI-Manager.git
pip install -r ComfyUI-Manager/requirements.txt
cd ..
下載 Flux 模型
⚠️ 坑三:huggingface-cli 指令名稱不同
安裝 huggingface_hub 後,指令不是 huggingface-cli,而是 hf:
pip install huggingface_hub
# ❌ 這樣會報錯
huggingface-cli download ...
# ✅ 正確指令
hf download ...
# 查看所有子指令
hf --help
⚠️ 坑四:登入指令也不同
# ❌ 錯誤
hf login
# ✅ 正確
hf auth login
⚠️ 坑五:Fine-grained Token 無法存取 Gated Repo
使用 Fine-grained Token 會出現以下錯誤:
403 Forbidden: Please enable access to public gated repositories
in your fine-grained token settings to view this repository.
解決方法: 去 https://huggingface.co/settings/tokens/new 建立 Read 類型的 Token(不要選 Fine-grained)。
⚠️ 坑六:必須先在網頁同意授權
即使 Token 正確,也需要先在網頁上接受授權條款:
- 登入 https://huggingface.co/black-forest-labs/FLUX.1-schnell
- 點擊 “Agree and access repository”
正確下載流程
cd ~/ComfyUI
# 建立目錄
mkdir -p models/unet models/vae models/clip
# 登入
hf auth login
# 輸入 hf_xxx token
# ① 主模型(23.8GB)
hf download black-forest-labs/FLUX.1-schnell \
flux1-schnell.safetensors \
--local-dir models/unet/
# ② VAE(335MB)
hf download black-forest-labs/FLUX.1-schnell \
ae.safetensors \
--local-dir models/vae/
# ③ CLIP-L(246MB)
hf download comfyanonymous/flux_text_encoders \
clip_l.safetensors \
--local-dir models/clip/
# ④ T5-XXL fp16(9.8GB)
hf download comfyanonymous/flux_text_encoders \
t5xxl_fp16.safetensors \
--local-dir models/clip/
啟動 ComfyUI
cd ~/ComfyUI
python main.py \
--listen 0.0.0.0 \
--port 8188 \
--disable-cuda-malloc \
--gpu-only
瀏覽器開啟:http://<IP>:8188
踩坑記錄總整理
坑七:Workflow 節點設定錯誤導致 KeyError t5xxl
錯誤訊息:
KeyError: 't5xxl'
File "nodes_flux.py", line 30, in execute
tokens["t5xxl"] = clip.tokenize(t5xxl)["t5xxl"]
原因: DualCLIPLoader 節點的 type 設定成 sdxl 而非 flux,導致載入錯誤的 CLIP 模型。
解決方法:
在 ComfyUI 介面找到 DualCLIPLoader 節點:
type: sdxl ← 改成 flux
坑八:VAELoader 選錯導致 TypeError
錯誤訊息:
TypeError: Cannot handle this data type: (1, 1, 16), |u1
原因: VAELoader 節點選了 pixel_space(預設值),但 Flux 需要的是下載的 ae.safetensors。
解決方法:
在 ComfyUI 介面找到 VAELoader 節點:
vae_name: pixel_space ← 改成 ae.safetensors
坑九:模型目錄名稱不符
官方 Workflow 預期的目錄結構是:
models/
├── diffusion_models/ ← Flux 主模型
├── text_encoders/ ← CLIP 模型
└── vae/ ← VAE
但我們下載時放到:
models/
├── unet/ ← flux1-schnell.safetensors
├── clip/ ← clip_l, t5xxl
└── vae/ ← ae.safetensors
好消息: ComfyUI 會同時掃描兩個路徑,unet/ 和 diffusion_models/ 都能被找到,不需要強制移動。介面的下拉選單都找得到模型即可。
坑十:ComfyUI-Manager 啟動時一直跑進度
FETCH ComfyRegistry Data: 5/127
FETCH ComfyRegistry Data: 10/127
...
這是正常現象,Manager 在背景更新套件資料庫,跑完會顯示:
[ComfyUI-Manager] All startup tasks have been completed.
如果不想每次都跑,去 Manager Settings 關閉 Auto check update。
坑十一:Torch VRAM Total 顯示 0 B
在系統資訊頁面看到:
Torch VRAM Total: 0 B
Torch VRAM Free: 0 B
這是 GB10 統一記憶體的特性,沒有獨立顯存,所以 Torch 顯示 0 是正常的。實際上 GPU 有 119GB 統一記憶體可用,生圖完全沒問題。
坑十二:警告訊息 cu130
WARNING: You need pytorch with cu130 or higher to use optimized CUDA operations.
不影響使用,只是 comfy_kitchen 的 CUDA 優化後端尚未支援 cu128,會 fallback 到 eager 模式。等 PyTorch 正式支援 cu130 後可再升級。
最終最佳化設定
啟動指令
cd ~/ComfyUI
python main.py \
--listen 0.0.0.0 \
--port 8188 \
--disable-cuda-malloc \
--gpu-only \
--use-sage-attention \
--preview-method latent2rgb \
--fast
安裝 sage-attention
pip install sageattention
啟動時看到以下訊息代表生效:
Using sage attention
Workflow 節點最終設定
| 節點 | 設定 |
|---|---|
| UNETLoader – unet_name | flux1-schnell.safetensors |
| UNETLoader – weight_dtype | fp8_e4m3fn ← 效能關鍵! |
| DualCLIPLoader – clip_name1 | clip_l.safetensors |
| DualCLIPLoader – clip_name2 | t5xxl_fp16.safetensors |
| DualCLIPLoader – type | flux ← 必須改! |
| VAELoader | ae.safetensors ← 必須改! |
| KSampler – steps | 4 |
| KSampler – cfg | 1 |
| KSampler – scheduler | simple |
| CLIPTextEncodeFlux – guidance | 3.5 |
效能對比
| 設定 | 推理速度 | 模型大小 | 總執行時間 |
|---|---|---|---|
| fp16(預設) | 6.8s/it | 22.6 GB | ~33 秒/張 |
| fp8 + sage attention | 1.74s/it | 11.3 GB | ~10 秒/張 |
fp8 + sage attention 組合讓推理速度提升約 4 倍,模型大小砍半。
圖片輸出位置
生成的圖片存放在:
~/ComfyUI/output/
重啟 ComfyUI 後介面歷史會清空,但圖片檔案仍保留在硬碟。
# 查看所有生成的圖片
ls -lh ~/ComfyUI/output/
# 查看最新幾張
ls -lt ~/ComfyUI/output/ | head -10
CLIPTextEncodeFlux 兩個欄位說明
Flux 的文字編碼器分兩個欄位,用途完全不同:
| 欄位 | 模型 | 適合內容 |
|---|---|---|
| clip_l(短框) | CLIP-L | 關鍵字、風格標籤、簡短描述 |
| t5xxl(長框) | T5-XXL | 完整自然語句、複雜場景描述 |
實際使用方式:
短框放風格關鍵字:
educational illustration, animation, cartoon style, bright colors, no text
長框放完整句子(T5 能理解自然語言):
A girl is reading a book under a tree while her dog is sleeping beside her.
總結
GB10 Grace Blackwell 是非常特殊的硬體,統一記憶體架構讓它能輕鬆跑 120GB 以上的模型,未來潛力很大。目前最大的限制是 PyTorch 對 CUDA 13.0 的支援尚未完整(仍在 nightly 階段),等正式版釋出後速度應該還能再提升。
整個部署過程最容易踩坑的地方:
- ComfyUI Repo 已遷移,記得用
Comfy-Org/ComfyUI - HF Token 要用 Read 類型,不要用 Fine-grained
- DualCLIPLoader type 必須設 flux,不是 sdxl
- VAELoader 必須選 ae.safetensors,不是 pixel_space
- fp8 是效能最大化的關鍵,從 default 改成 fp8_e4m3fn 速度提升 4 倍
部署日期:2026年2月
硬體:NVIDIA DGX Spark GB10
ComfyUI 版本:v0.14.1