跳轉到

ComfyUI + Z-Image + WAN 2.2 動漫角色動畫生成一條龍流程(含 RunPod Secure、朋友 GPU 分享、遊戲 icon 自訓 LoRA 工作流 v2)

文檔資訊

  • 分類: tools
  • 難度: intermediate
  • 預估閱讀時間: 45 分鐘
  • 標籤: ComfyUI, Z-Image, WAN 2.2, 動漫動畫, 圖生視頻, AI 動畫, GPU 選型, RunPod Secure, SSH Tunnel, runpod-tunnel, RTX 5090, RTX 4090, RTX 5070 Ti, 遊戲 icon, glossy_gem, casual_match3, Tailscale, 朋友 GPU 分享, setup_friend_win.ps1, WSL, dpkg, PowerShell, PowerShell 編碼, UTF-8 BOM, TerminatorExpectedAtEndOfString, LoRA 訓練, SDXL, Flux, game_icon_v1, IPAdapter, Redux, XLabs, Shakker-Labs, Icon Kit LoRA, create_workflow, model_name 覆蓋, 硬體適配, Real-ESRGAN, 超解析, 雙 LoRA 堆疊

摘要

從動漫角色立繪出發,使用 Z-Image + WAN 2.2 在 ComfyUI 內完成 10~15 秒動畫的一條龍工作流;並延伸至商業品質遊戲 icon 生成的完整迭代記錄。融合版 v2 新增:(1) 各 icon 生成方案系統性測試結果與品質評比;(2) Redux 確認不適合風格轉移(只生成圖像變體);(3) XLabs IPAdapter 與 ComfyUI 0.18.2 不相容確認;(4) Shakker-Labs/ComfyUI-IPAdapter-Flux 作為替代方案;(5) 雙 LoRA 堆疊(game_icon 0.7 + custom 0.4)目前非寶石類圖示最佳結果;(6) Real-ESRGAN 超解析作為訓練資料前處理的正確方案;(7) Flux + Icon Kit LoRA 作為最新測試方向。

關鍵學習

  • Z-Image + WAN 2.2 一條龍:同一 prompt 同時驅動圖像生成與視頻生成,全程在 ComfyUI 內完成

  • SSH Tunnel 優先策略:先建立 tunnel 再透過 UI 遠端操作,runpod-tunnel 指令只需做一次

  • RTX 5070 Ti 實際 VRAM 為 16GB(16303 MiB),非舊版記載的 12GB,可運行 NVFloat4 量化版

  • setup_friend_win.ps1 有兩層錯誤:MissingEndCurlyBrace(語法)→ TerminatorExpectedAtEndOfString(UTF-8 BOM 編碼問題),最終解決方案是全部改為英文字元

  • create_workflow 新增 model_name/clip_name 參數覆蓋,解決同一 workflow 在不同硬體上的模型不一致問題

  • Redux ≠ 風格轉移:Redux 生成的是圖像變體(image variants),即使 strength=0.15 輸出也全是參考圖風格,不適合 icon style transfer

  • XLabs IPAdapter 與 ComfyUI 0.18.2 不相容:DoubleStreamBlock.forward() got an unexpected keyword argument 'attn_mask'

  • 雙 LoRA 堆疊(game_icon_v1.0 強度 0.7 + 自訓 m3game_icon 強度 0.4)對非寶石類 icon 效果最好

  • 低解析度訓練資料(110px)必須用 Real-ESRGAN anime 模型放大至 512px,不可用 Pillow LANCZOS 插值

  • ComfyUI 節點名稱在不同版本間不一致:ZImageTextEncoder → TextEncodeZImageOmni,需動態偵測

  • Tailscale SSH tunnel 延遲過高時,直接用 Tailscale IP(不透過 SSH tunnel)連接 ComfyUI API 可解決

技術細節

工具鏈架構

  • Z-Image:專為動漫/二次元風格優化的 S3-DiT 架構圖像生成模型(提供 bf16 和 NVFloat4 量化版)
  • WAN 2.2:圖生視頻(Image-to-Video)模型,目標輸出 10~15 秒動畫
  • ComfyUI:統一工作流執行環境,社群已有現成的 Z-Image + WAN 2.2 整合 workflow
  • SDXL + game_icon LoRA:較舊但 LoRA 生態最豐富,適合 casual game icon 風格
  • Flux.1-dev FP8:最新架構,最高品質,支援 IPAdapter(需正確的 extension)

GPU 選型表(修正版)

選項 費用 VRAM 適用場景
本地量化版(GGUF Q4) 免費 8-12GB 驗證流程,無資安顧慮
RTX 5070 Ti(朋友 GPU) 免費 16GB(實測 16303 MiB) NVFloat4 量化版,品質接近 RunPod 4090
RunPod 標準(RTX 4090) $0.34/hr 24GB 快速測試
RunPod Secure(RTX 4090) $0.59/hr 24GB 商業 IP,SOC 2 認證
RunPod Secure(RTX 5090) 更高 32GB BF16 全精度或批次出圖

Icon 生成方案品質評比(系統性測試結果)

各方案測試結果(依品質由低到高排序):

  1. Z-Image 直接生成:品質不足,無法達到商業化水準(約 4/10)
  2. Disney LoRA(Disney_IZT_ATK_V1):風格過於迪士尼化,與目標遊戲風格差異大(5/10)
  3. SDXL + game_icon_v1.0 LoRA 單獨使用:細節問題(時鐘變形、寶石 pattern 問題)(6/10)
  4. SDXL + 精準 prompt:不使用 LoRA,效果有限(6/10)
  5. SDXL + 雙 LoRA 堆疊(game_icon 0.7 + m3game_icon 0.4):非寶石類圖示目前最佳(7/10)
  6. Flux + Redux:確認不適合,生成純圖像變體而非風格轉移(失敗)
  7. Flux + XLabs IPAdapter:與 ComfyUI 0.18.2 不相容(失敗)
  8. Flux + Icon Kit LoRA:最新測試方向,初步結果有改善(測試中)

create_workflow 模型適配機制

不同硬體上的可用模型名稱不同(例如 RunPod 上有 z_image_turbo_bf16,朋友機器上只有 z_image_turbo_nvfp4)。

create_workflow(
    ...
    model_name="z_image_turbo_nvfp4",   # 覆蓋預設的 bf16
    clip_name="qwen_3_4b_fp8_mixed",     # 覆蓋預設的 qwen_3_4b
    vae_name="ae.safetensors"             # 明確指定 VAE
)

ComfyUI 節點名稱版本差異

# ComfyUI 0.18.2 以後的正確名稱
"ZImageTextEncoder"     "TextEncodeZImageOmni"
"ZImageEmptyLatent"     "EmptyLatentImage"     # 需加 batch_size 參數
"CLIPLoader type"       "lumina2"              # 小寫無空格

setup_friend_win.ps1 三種執行結果

結果 現象 解決方案
正常 完全無輸出,游標回到下一行 SSH Server 已在背景成功啟動
第一層錯誤 MissingEndCurlyBrace 第 102 行缺 },修復語法
第二層錯誤 TerminatorExpectedAtEndOfString + 中文亂碼 根本解:改為全英文字元(非 UTF-8 BOM,因為不同環境行為不一致)

Redis/IPAdapter 相容性矩陣

Extension ComfyUI 0.18.2 問題
XLabs IPAdapter ❌ 不相容 DoubleStreamBlock.forward() got an unexpected keyword argument 'attn_mask'
Shakker-Labs IPAdapter 🔄 測試中 需 InstantX FLUX.1-dev-IP-Adapter 模型
Redux ❌ 不適用 生成圖像變體,非風格轉移

朋友機器已安裝模型清單(RTX 5070 Ti, Tailscale: 100.66.164.95)

  • Z-Image: z_image_turbo_nvfp4.safetensors, qwen_3_4b_fp8_mixed.safetensors, ae.safetensors
  • SDXL: sd_xl_base_1.0.safetensors
  • Flux: flux1-dev-fp8.safetensors, clip_l.safetensors, t5xxl_fp8_e4m3fn.safetensors
  • Redux: flux1-redux-dev.safetensors, sigclip_vision_patch14_384.safetensors
  • XLabs: flux-ip-adapter.safetensors, clip-vit-large-patch14.safetensors
  • LoRAs: game_icon_v1.0.safetensors, fantasy_game_assets.safetensors, disney_pixar_3d.safetensors, m3game_icon.safetensors
  • Upscale: RealESRGAN_x4plus_anime_6B.pth

What Changed

最重要新增:icon 生成方案系統性評比

新 session 完整記錄了從 Z-Image → SDXL+LoRA → Flux+Redux → Flux+XLabs → Shakker-Labs 的完整迭代路徑。關鍵發現:Redux 確認不適合風格轉移(只生成圖像變體),XLabs IPAdapter 與 ComfyUI 0.18.2 不相容。目前 SDXL + 雙 LoRA 堆疊是非寶石類 icon 的最佳方案。

新增:Redux vs IPAdapter 關鍵區分

舊版文檔未區分 Redux 和 IPAdapter 的用途。新 session 確認:Redux(flux1-redux-dev)= 圖像變體生成,適合「給我類似這張圖的其他圖」;IPAdapter = 真正的風格轉移,適合「用這個風格生成新內容」。為了 icon 品質,需要的是 IPAdapter 而非 Redux。

新增:ComfyUI 0.18.2 相容性注意事項

多個 extension 在此版本出現問題。已確認不相容:XLabs IPAdapter(attn_mask 參數問題)。替代方案:Shakker-Labs/ComfyUI-IPAdapter-Flux(使用 InstantX FLUX.1-dev-IP-Adapter)。

So What

商業品質 icon 生成路徑尚未完全確立,這是最重要的未解決問題。迭代記錄顯示 SDXL 雖有最豐富的 LoRA 生態,但在寶石類圖示上有固有的 pattern 問題(橘色寶石出現重複圖案)。Flux.1-dev 理論上品質最高,但 IPAdapter 整合路徑受到 extension 相容性阻礙。

**整個流程的價值**在於:建立了一套完整的遠端 GPU 協作基礎設施(Tailscale + SSH key + ComfyUI API),以及系統性測試各種 icon 生成方案的方法論。即使 icon 品質問題尚未完全解決,這套基礎設施可重複使用於未來的 AI 生成任務。

Trade-offs

  • Tailscale vs Cloudflare Tunnel:Tailscale 點對點加密、低延遲,支援浮動 IP;Cloudflare Tunnel 不需帳號配對但流量經中繼,不適合 AI 推理大量資料傳輸
  • 朋友 GPU(RTX 5070 Ti 16GB)vs RunPod Secure(RTX 4090 24GB):前者免費,NVFloat4 品質接近 FP8;後者 $0.59/hr,SOC 2 認證,支援 BF16 全精度
  • SDXL + LoRA vs Flux + IPAdapter:SDXL LoRA 生態豐富,但架構較舊,寶石圖示有 pattern 問題;Flux 品質最高,但 IPAdapter extension 相容性問題尚待解決
  • Redux vs IPAdapter:Redux 生成圖像變體(用於多樣性),IPAdapter 做風格轉移(用於風格一致性)— 兩者目的不同,不可互換
  • 社群 LoRA vs 自訓 LoRA vs IPAdapter:社群 LoRA 開箱即用但風格固定;自訓 LoRA 需高品質訓練資料(≥512px,需 Real-ESRGAN 預處理);IPAdapter 用參考圖直接轉換,無需訓練但需正確 extension
  • 雙 LoRA 堆疊:game_icon 0.7 + custom 0.4 在非寶石類有改善,但增加 VRAM 使用和推理時間

Try It Fast

# === 情境一:朋友 GPU 分享(Tailscale + RTX 5070 Ti 16GB)===
# 確認 Tailscale 連線狀態
tailscale status
# 看到 "windows active" 後 SSH 進入
ssh -i ~/.ssh/id_friend info@100.66.164.95

# WSL 安裝 Tailscale(遇到 dpkg 中斷先修復)
sudo dpkg --configure -a
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up  # 掃 QR code 登入同一帳號

# === 情境二:RunPod Secure 雲端 ===
# 建立 SSH Tunnel(只需做一次)
runpod-tunnel <pod-ip> <ssh-port>
# 下載 14B 模型
python scripts/comfyui/model_manager.py install --preset 14B_FP8

# === create_workflow 跨硬體模型適配 ===
python scripts/comfyui/create_workflow.py \
  --model_name z_image_turbo_nvfp4 \
  --clip_name qwen_3_4b_fp8_mixed

# === 遊戲 Icon 工作流(獨立分支)===
git checkout feat/game-icon-workflow

# 批次生成 icon(朋友機器,雙 LoRA 堆疊)
python scripts/gameicon/batch_generate.py \
  --style casual_match3 \
  --model-name z_image_turbo_nvfp4 \
  --lora game_icon_v1.0:0.7,m3game_icon:0.4

# Flux + Icon Kit LoRA(最新方向)
python scripts/gameicon/batch_generate.py \
  --style glossy_gem \
  --base-model flux \
  --lora icon_kit_flux:0.8

# 訓練資料前處理(110px → 512px,必須用 Real-ESRGAN 而非 Pillow)
python upscale.py \
  --input training_data/图标/ \
  --output training_data/图标_512/ \
  --model RealESRGAN_x4plus_anime_6B \
  --scale 4

# 檢查 ComfyUI 可用節點(用於除錯版本不相容問題)
curl http://100.66.164.95:8188/object_info | python -m json.tool | grep -i ipadapter

Recommendation

  1. 資安優先評估:角色立繪涉及商業 IP → 優先本地量化版(GGUF Q4),避免任何雲端上傳。
  2. icon 品質提升路徑(按優先順序):(a) Flux + Shakker-Labs IPAdapter(需先確認 InstantX FLUX.1-dev-IP-Adapter 模型已下載,並重啟 ComfyUI 確認節點載入);(b) Flux + Icon Kit LoRA(CivitAI #688058,trigger: game_icon);© SDXL + 雙 LoRA 堆疊(game_icon 0.7 + m3game_icon 0.4)作為備用。
  3. 不要再試 Redux:已確認 Redux 生成圖像變體而非風格轉移,浪費時間。
  4. IPAdapter extension 測試前先確認相容性:執行 curl http://<ip>:8188/object_info | grep -i ipadapter 確認節點名稱,再建工作流。
  5. 跨硬體 workflow 部署:使用 create_workflowmodel_name/clip_name/vae_name 參數覆蓋,避免手動修改 workflow JSON。
  6. ComfyUI 卡住時:直接 SSH 重啟 ComfyUI 進程,不要嘗試修復卡住的佇列。
  7. 訓練資料標準:原始素材需 ≥512px;若原始為 110px,必須先用 Real-ESRGAN anime 模型放大,不可用 Pillow LANCZOS(模糊放大版訓練 LoRA 無效)。
  8. 含中文的 PowerShell 腳本:最終解決方案是全部改為英文字元(UTF-8 BOM 在不同 Windows 環境行為不一致,不可靠)。
  9. WSL 安裝 Tailscale 遇到 dpkg 中斷:先執行 sudo dpkg --configure -a 修復,再重新安裝。
  10. 測試完畢立即清理:RunPod 測試後立即終止實例並清除 Persistent Storage。

本文檔由 Semi-Brain 自動生成

Session ID: 6a11d50e-fabd-4e49-90a1-34f9d114caff

分析信心度: 97%