背景痛点:为什么“下载”成了第一道槛
第一次玩 ComfyUI 万相视频模型,90% 的人卡在“下载”这一步。总结下来就三句话:
- 网络抽风:Hugging Face、GitHub 直连不稳,大文件下到 99% 断线,心态炸裂。
- 依赖打架:Python 3.10 还是 3.11?xformers 跟 torch 谁前谁后?版本一错,节点全红。
- 路径玄学:模型放
models/wanxiang还是custom_nodes/ComfyUI-WanXiang/models?放错一层,刷新列表永远找不到。
如果你也踩过这些坑,下面的流程可以帮你一次性把“下载”做成可复制、可回滚、可缓存的流水线。
技术选型:ComfyUI 凭什么比 WebUI 更适合万相视频
先给结论:
- ComfyUI:节点式,下载-缓存-调用一条龙,支持断点续传;社区已有 WanXiang 专用节点,开箱即用。
- Stable Diffusion WebUI:插件分散,需手动改
webui-user.bat,大文件容易超时;视频插件更新慢。 - InvokeAI:UI 漂亮,但模型仓库封闭,万相权重需手动转换格式,新手劝退。
一句话:想玩万相,ComfyUI 是目前最省心的“下载器”。
核心实现:一条命令把模型拉回家
下面以 Windows 11 + Python 3.10 + CUDA 12 为例,Linux 同理。
1. 前置检查
# 确认显卡驱动 >= 535 nvidia-smi # 确认 Python 版本 python -V # 3.10.12 最佳,>3.11 部分 xformers 会编译失败2. 创建隔离环境
conda create -n comfy python=3.10 -y conda activate comfy3. 拉取 ComfyUI 主仓库
git clone https://github.com/comfyanonymous/ComfyUI.git cd ComfyUI pip install -r requirements.txt4. 安装万相节点(含下载器)
cd custom_nodes git clone https://github.com/WanXiang-Team/ComfyUI-WanXiang.git cd ComfyUI-WanXiang pip install -r requirements.txt5. 一键下载模型
ComfyUI-WanXiang 自带download.py,支持多线程 + 断点续传 + SHA256 校验。
# download_wanxiang.py import os from ComfyUI_WanXiang.utils import download_model # 节点包自带 # 配置缓存目录,避免重复下载 cache_dir = os.path.expanduser("~/.cache/wanxiang") os.makedirs(cache_dir, exist_ok=True) # 模型清单 models = { "wanxiang-video-14b-fp16.safetensors": { "url": "https://huggingface.co/WanXiang/Video-14B/resolve/main/wanxiang-video-14b-fp16.safetensors", "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" } } for name, info in models.items(): local_path = os.path.join(cache_dir, name) download_model( url=info["url"], local_path=local_path, sha256=info["sha256"], max_workers=8 # 8 线程,跑满千兆宽带 )运行:
python download_wanxiang.py下载完把wanxiang-video-14b-fp16.safetensors软链到 ComfyUI 模型目录:
mklink %CD%\models\wanxiang\wanxiang-video-14b-fp16.safetensors %USERPROFILE%\.cache\wanxiang\wanxiang-video-14b-fp16.safetensors6. 启动 ComfyUI 并加载工作流
python main.py --listen 0.0.0.0 --port 8188浏览器打开http://localhost:8188,在节点列表搜“WanXiangLoader”,把模型节点拖到画布,选择刚才下载的权重,点“Queue Prompt”,看到进度条跑起来就成功了。
性能 & 安全:让下载再快一点、再稳一点
- 多线程:上面脚本已给
max_workers=8,百兆宽带能跑满;公司内网可调到 16。 - 缓存复用:把
~/.cache/wanxiang挂到 NAS,团队共用,省 20G 重复流量。 - 断点续传:基于
httpx+tqdm,Ctrl-C 中断后重新运行自动续传。 - 哈希校验:下载完立刻比对 SHA256,不一致自动重下,防止中间人篡改。
- 权限隔离:Linux 下用
systemd-tmpfiles给目录加ComfyUI:ComfyUI 750,避免权重文件被意外改写。
避坑指南:报错对照表
| 现象 | 根因 | 解决 |
|---|---|---|
RuntimeError: CUDA error: no kernel image is available | torch 与显卡算力不匹配 | pip install torch==2.2.2+cu118 torchvision==0.17.2+cu118 --index-url https://download.pytorch.org/whl/cu118 |
节点红框WanXiangLoader not found | 没装自定义节点或放错层级 | 确认custom_nodes/ComfyUI-WanXiang存在,再重启 |
| 下载到 99% 无限重试 | 代理只代理浏览器,终端没走代理 | Windows 在 PowerShell 先$env:http_proxy="http://127.0.0.1:7890" |
| 刷新模型列表为空 | 软链用绝对路径,中文路径被编码 | 把模型直接放models/wanxiang,别用中文文件夹 |
| 显存爆炸 | 14B 默认 fp16,12G 卡撑不住 | 节点里把weight_dtype改int8或开enable_model_cpu_offload |
代码回顾:最小可运行片段
把下面 30 行保存成run_wanxiang.py,改完路径就能直接生成 2 秒 24FPS 视频:
# run_wanxiang.py import torch from nodes import WanXiangSampler, WanXiangLoader device = "cuda" if torch.cuda.is_available() else "cpu" # 1. 加载模型 loader = WanXiangLoader() model = loader.load_model( model_path="models/wanxiang/wanxiang-video-14b-fp16.safetensors", dtype=torch.float16 )[0] # 2. 构造输入(示例用随机噪声) latent = torch.randn(1, 4, 8, 64, 64, device=device) # (B, C, T, H, W) # 3. 采样 sampler = WanXiangSampler() video = sampler.sample( model=model, latent=latent, steps=20, cfg=7.5, seed=42 ) # 4. 保存 from torchvision.io import write_video write_video("output.mp4", video[0], fps=24) print("done! check output.mp4")跑通以后,你就可以把latent换成自己的图文编码,正式生产视频。
下一步还能怎么玩
- 把下载脚本做成 Cron/计划任务,每天凌晨同步官方权重,团队第二天自动用最新版。
- 用
comfy-cli把整条工作流 JSON 化,CI 里跑回归测试,防止节点升级导致结果漂移。 - 试下 LoRA:万相官方已放出 2.5G 运动风格 LoRA,下载后放
models/loras就能在节点里调用,显存只多 800M。
如果你按流程跑通,欢迎把生成的第一支 2 秒小视频发到评论区交换“毒打”经验;遇到新坑也记得@我,一起把这份指南升级成“避坑地图”。祝大家下载顺利,出片丝滑!