Kaggle + ComfyUI 完整操作指南

在 Kaggle 免费 GPU 上跑文生图、文生视频、图生视频:双卡双开 + 固定域名 + 模型持久化,全流程一次讲清。

0. 架构总览

Kaggle Notebook(免费 GPU:T4 x2,每张 16GB 显存) ├─ ComfyUI 实例 1 ── GPU 0 ── 端口 8188 ──┐ └─ ComfyUI 实例 2 ── GPU 1 ── 端口 8189 ──┤ ▼ 一条 Cloudflare Tunnel(comfy) 两个路由:comfy → 8188,comfy2 → 8189 ▼ https://comfy.goodpcb.kdns.fr / https://comfy2.goodpcb.kdns.fr 模型:8 个文件约 41GB,首次下载;发布成私有 Kaggle Dataset 后,下次挂载即用,不用重下。 额度:免费 GPU 每周约 30 小时,单个会话最长 12 小时。

下载 Notebook(.ipynb)

内容政策红线Kaggle 社区准则禁止性暗示或明确色情(NSFW)内容,包括 Notebook 保存的输出文件——生成图/视频存在 /kaggle/working 里会随版本保存,自动审查系统会扫描。违规会导致内容下架乃至账号封禁。请勿在 Kaggle 上生成或保存 NSFW 内容。

1. 前置准备

1.1 Kaggle 账号与 Notebook 设置

1.2 Secrets(两个 Token,分开用途)

在 Notebook 的 Add-ons → Secrets 里添加,并勾选授权给这个 Notebook:

Secret 名是什么在哪拿用来干什么
CF_TUNNEL_TOKENCloudflare 隧道的连接器 TokenZero Trust 后台 → Networks → Tunnels → 点进隧道复制固定域名(comfy / comfy2)。不加也能跑,自动回落临时网址。
KAGGLE_API_TOKENKaggle 新版 API Token(KGAT_ 开头)Kaggle 设置页 → Generate New Token(只显示一次,生成时复制)只给附录的 Dataset 发布单元用。CLI 需 ≥ 1.8;旧的 username + key 是另一套,别混用。
Token 安全Token 只放 Secrets 里,不要贴到聊天记录、Notebook 输出或公开页面里。隧道 Token 走环境变量注入,不会出现在命令行参数里。

1.3 Cloudflare 隧道与路由

2. Notebook 导入与运行

  1. 下载上面那个 .ipynb 文件。
  2. 在 Kaggle 里新建 Notebook 时选导入/上传这个文件。
  3. 导入后先检查 §1.1 的三项设置(新 Notebook 不继承旧的设置,Secrets 也要重新勾选授权)。
  4. 如果已经发布过 Dataset:点 Add data → 你的 Datasets → 把 comfyui-models 加为 Input。
  5. 按顺序跑 1~6 号单元(或 Run All)。各单元的分工:
单元做什么备注
1/6检查 GPU 与磁盘确认两张 T4、临时空间可用。
2/6安装 ComfyUI 到临时空间克隆 + 装依赖;Kaggle 自带 torch,一般只补少量包。
3/6模型:Dataset 挂载优先,挂不上才下载8 个文件约 41GB,断点续传(先下 .tmp 再改名,残文件不会被误判)。旧版 6 文件 Dataset 会先复制已有的、只补下新增 2 个。
4/6启动第一个 ComfyUI(GPU 0,端口 8188)后台运行,输出到 /kaggle/working/comfy-output。
5/6启动第二个 ComfyUI(可选,GPU 1,端口 8189)不需要双开就跳过。见 §5。
6/6隧道有 Token 走固定域名;没 Token 走临时隧道(两个实例各一条)。

跑完打开固定域名就能用。附录的 Dataset 发布单元只在要发布/更新 Dataset 时跑,平时不用。

3. 模型清单与 Dataset 持久化

8 个文件全部来自 HuggingFace 上 Comfy-Org 的官方重打包仓库,非门控、无需 Token:

用途文件仓库大小
文生图
Z-Image Turbo
z_image_turbo_bf16.safetensors(扩散模型)Comfy-Org/Z-Image-Turbo12.3 GB
qwen_3_4b.safetensors(文本编码器)8.0 GB
ae.safetensors(VAE)0.34 GB
文生视频
Wan2.1 T2V 1.3B
wan2.1_t2v_1.3B_fp16.safetensors(扩散模型)Comfy-Org/Wan_2.1_ComfyUI_repackaged约 2.6 GB
umt5_xxl_fp8_e4m3fn_scaled.safetensors(文本编码器)约 6.7 GB
wan_2.1_vae.safetensors(VAE)约 0.3 GB
图生视频
Wan2.2 TI2V 5B
wan2.2_ti2v_5B_fp16.safetensors(扩散模型)Comfy-Org/Wan_2.2_ComfyUI_Repackaged10 GB
wan2.2_vae.safetensors(VAE,2.2 专用)1.4 GB

文本编码器 umt5 由 Wan2.1 和 Wan2.2 共用,不用重下。图/视频本地开源权重没有 LLM 式的拒答,不用专门找消融版。

Dataset 持久化(只需做一次)

4. 三种模式:文生图 / 文生视频 / 图生视频

铁律:换模型就换模板Z-Image、Wan2.1、Wan2.2 各有自己的模板(加载器类型、文本编码器、潜空间节点都不一样)。直接在一个工作流里换另一个模型的文件会报维度对不上(mat1 and mat2 shapes cannot be multiplied / CLIPLoader 词表大小不匹配)。换模型就去模板库重开对应模板。

4.1 文生图(Z-Image Turbo)

4.2 文生视频(Wan2.1 T2V 1.3B)

4.3 图生视频(Wan2.2 TI2V 5B)

4.4 通用操作

5. 双卡双开:用上第二张 T4

为什么默认只用一张卡?ComfyUI(以及 PyTorch 推理)默认单卡跑一个任务:两张卡的显存不合并,模型整个载入 0 号卡;单次生成是顺序计算,没法自动拆到两张卡上。两张 T4 之间没有 NVLink 高速互联,硬拆反而更慢。

用法是再起一个实例:第 5 号单元启动第二个 ComfyUI,关键三点:

验证:新单元跑 !nvidia-smi,两张卡都应该有 python 进程、显存被占用。两个实例队列、历史各自独立:一个跑视频时,另一个照常出图。

画布按网址存ComfyUI 的画布存在浏览器本地存储里,是按域名分开存的。换个网址打开,之前搭的工作流不会自动跟过来:在原来的标签页里点菜单保存/导出工作流,再到另一个网址的标签页里打开/导入;固定用一个网址就不会岔开。

6. 隧道与固定域名

为什么一条隧道能挂两个端口?隧道里跑的是按域名分流,不是按端口分流:边缘收到请求后看域名查路由表,comfy 走 8188、comfy2 走 8189,两条路由共用同一根隧道连接,最后一段才由 cloudflared 分别拨到两个本地端口。隧道是一根电话线,域名是分机号。只有换机器、换账号、或想彻底独立开关时,才需要建两个隧道。

7. 安全:给两个域名加上 Access 验证

ComfyUI 自己没有登录功能,固定域名裸奔在公网上:谁拿到网址都能进、烧你的 GPU 额度、看你生成的内容。固定子域名在证书记录里能查到,靠“别人猜不到”防不住。Cloudflare Access(Zero Trust 免费版,50 用户内够用)是标准解法。

注意:Tunnel 面板里没有 Access 的开关。建策略、选登录方式都在 Access 板块;Tunnel 里唯一的 Access 相关项是路由高级设置里的 “Enforce Access JWT validation”,只是加固开关,前提是已经建好了应用。分工就是:Tunnel 管“网址指向哪台机器”,Access 管“谁能进”。

  1. Zero Trust 后台 → Access → Applications → Add an application → Self-hosted,域名填 comfy.goodpcb.kdns.fr(一个应用里可以加多个域名,把 comfy2.goodpcb.kdns.fr 也加进去)。
  2. Policy:动作选 Allow,Include 规则选 Emails,填你能收到邮件的邮箱。任意邮箱都行,不用是 Cloudflare 账号邮箱、也不用是自己域名的邮箱。
  3. 登录方式选 One-time PIN(邮箱验证码)。如果列表里没有,先去 Settings → Authentication 里添加 One-time PIN 这个登录方式。
  4. 保存后立即生效,不用动 Notebook。用无痕窗口打开域名自验:应先出现 Cloudflare 登录页,输邮箱、收验证码,通过后才能进 ComfyUI。

收不到验证码先看垃圾箱。会话停后隧道下线、暴露自行解除,但下次开机固定域名会再次暴露,所以还是建议加上。

8. 常见问题与排查

9. 示例:小猫跳迈克的舞

先用 Z-Image 模板出图(提示词):

An adorable fluffy orange tabby kitten standing on its hind legs on a concert stage, wearing a black fedora hat, a black sequined jacket and a single white sparkling glove on its front paw, one paw tipping the hat, dramatic spotlight from above, dark background with colorful stage lights, cute and photorealistic, full body shot, centered composition

再用 Wan2.2 TI2V 模板,把图传到 Load Image 节点(提示词):

The kitten dances like Michael Jackson: it moonwalks backwards smoothly across the stage, then spins around on its hind legs, tips its fedora with its paw, and does a smooth 45-degree lean, tail swishing to the rhythm, stage lights flashing, smooth natural motion, full body visible throughout

负面提示词:

blurry, distorted, extra limbs, deformed paws, static image, no movement, low quality

动作词写具体(moonwalk、spin、lean),模型按词执行;先拿小分辨率、短帧数试一条,确认动作对了再上 720P。