Expected all tensors to be on the same device:查 CPU 与 GPU 的交界
一个运算收到来自不同设备的张量,例如图像在 CUDA、mask 还在 CPU,或者两个分支分别位于不同 GPU。错误指出的是运算边界,不等于整套程序没有识别显卡。
现象与适用范围
一个运算收到来自不同设备的张量,例如图像在 CUDA、mask 还在 CPU,或者两个分支分别位于不同 GPU。错误指出的是运算边界,不等于整套程序没有识别显卡。
检索用原文或片段(具体编号、数值和文件名随环境变化):
Expected all tensors to be on the same device
cpu and cuda
cuda:0 and cuda:1
已核对的依据
历史 issue #2556 在 VAE Encode for Inpaint 场景出现 CPU/CUDA 混用,说明普通图像与遮罩路径也可能触发设备问题。该记录不是所有设备错误的统一修复说明。PyTorch 文档还说明,跨 GPU 的普通张量运算默认不允许,因此应核对 traceback 中的设备名称。 I16 D02 PyTorch CUDA 语义
需要区分的情况
1. 自定义节点创建新的张量后没有按下游需要迁移设备。
2. 手动指定设备、offload 或多卡配置导致两个分支落在不同设备。
3. 节点与核心更新不同步,原先的设备管理假设已经改变。
建议的操作顺序
以下顺序是基于上述资料整理的诊断方案,不代表上游已经为你的环境确认了原因。
第 1 步。 记录错误列出的两种设备、失败节点以及实际 traceback 运算,不要只抄最后一句提示。
第 2 步。 在工作流副本取消非必需的强制设备节点与多卡设置,回到作者默认设备管理路径。
第 3 步。 用单设备的最小流程分别检查图像、mask、条件和模型分支,再恢复 offload 或多卡功能。
第 4 步。 仅某个扩展触发时报告其版本与最小图。不要把所有输入在源码中强制送到 cuda:0,这既不适合 Mac/CPU,也可能破坏内存管理。
如何判断处理有效
参与同一个运算的对象由兼容设备处理,任务完成且不再依赖偶然的缓存状态。
注意事项与尚未确认的部分
迁移张量可能额外占用内存并发生复制。禁用 offload 后出现 OOM 时,应另查容量,不应把两种错误混在一起。
前两项资料的原有核对日期为 2026-09-21;PyTorch CUDA 语义文档核对于 2026-09-25。本站未执行此工作流,未进行 GPU、最低显存或耗时测试。
原始资料
- I16 · CPU/CUDA mismatch in inpainting VAE encode。核对:2026-09-21;原始日期:2024-01-15。
- D02 · ComfyUI custom node troubleshooting。核对:2026-09-21。
- PyTorch CUDA 语义。核对:2026-09-25。
相关排查与操作
排查下一个可能的原因
同样的现象可能来自不同原因。可以按顺序查看下面这些相关条目。
- Float / Half / BFloat16 不一致:沿调用栈定位失败运算
mat1 and mat2 must have the same dtypedtype 错误不同于矩阵尺寸或设备错误。先看调用栈和不兼容的运算输入;仅凭 KSampler 报错不能判定是哪一组件造成了类型不一致。 - CUDA out of memory:按加载、采样和解码阶段排查显存
CUDA out of memory任务在 GPU 上分配内存失败。先定位失败发生在模型加载、采样、VAE 解码还是其他节点,再决定降低哪个负载。显卡标称容量、模型文件体积和本次实际可用显存不是同一个数字。
这篇内容对你有帮助吗?
匿名统计,只记录“有/没有帮助”的计数,不记录账号、IP 地址或设备信息。
资料来源
基于上游文档、源代码或标注为个案的错误报告整理。诊断顺序由本站编排;没有执行、硬件测试或保证修复的结论。
01CPU/CUDA mismatch in inpainting VAE encode资料核对: 2026-09-2102ComfyUI custom node troubleshooting资料核对: 2026-09-2103PyTorch CUDA 语义资料核对: 2026-09-25报告问题 · 2f03b38d-866b-5058-b5b7-b6524d218d30
相关阅读
编辑为本页关联的条目。
当不知道哪一个扩展造成报错、白屏或更新故障时,用可复核的分组对照替代随机卸载。目标是定位最小触发集合,而不是把所有第三方节点都判定有问题。