RuntimeError: Device type privateuseone is not supported for torch.Generator() api.

这个报错通常出现在 Windows 下用 AMD 显卡通过 torch-directml 运行 Fooocus 并尝试生成图片时,PyTorch 的随机数生成器(torch.Generator)不支持 DirectML 的 privateuseone 设备类型,导致生成流程直接中断。优先排查 tor

快速结论:这个报错通常出现在 Windows 下用 AMD 显卡通过 torch-directml 运行 Fooocus 并尝试生成图片时,PyTorch 的随机数生成器(torch.Generator)不支持 DirectML 的 privateuseone 设备类型,导致生成流程直接中断。优先排查 torch-directml 与 Fooocus 代码的兼容性,而不是显卡驱动或模型文件。

适用环境:Issue 中确认的环境为 Windows、Fooocus_win64_2-1-25、Python 3.10(cp310 嵌入式包)、torch 2.0.0、torchvision 0.15.1、torch-directml 0.2.0.dev230426,用户按官方文档 [Windows(AMD GPUs)] 说明修改了 run.bat。发起者使用 AMD 显卡,另有评论者提到 AMD 8GB 无法使用。CUDA 版本未提及。

最快修复方案:暂无确认的一步修复方案。Issue 被关闭时没有给出明确、经过验证的解决方法。

注意事项:不要把卸载并重装 torch-directml 当成万能修复:Issue 中执行该流程后依然报错,说明该报错很可能来自 Fooocus 内部对 torch.Generator 的调用方式与 DirectML 设备不兼容,属于代码/后端适配问题,而非单纯的依赖安装问题。

问题场景

用户在 Windows 上运行 Fooocus(AMD GPU 分支),按照官方文档中 [Windows(AMD GPUs)] 的说明修改 run.bat,将 torch/torchvision/torchaudio/torchtext/functorch/xformers 卸载后安装 torch-directml,然后尝试生成图片。生成阶段没有正常出图,CMD 日志中出现报错。多位 AMD 用户在该 Issue 中复现了类似情况,并提到 AMD 8GB 显卡无法使用。

报错原文

RuntimeError: Device type privateuseone is not supported for torch.Generator() api.

原因分析

可能原因是:在 AMD GPU 的 DirectML 路径下,PyTorch 会把设备类型识别为 privateuseone,而 Fooocus(或其依赖)在生成流程中调用了 torch.Generator(),并对该设备类型设置了随机种子。当前版本的 PyTorch / torch-directml 并不支持在 privateuseone 设备上使用 torch.Generator() API,于是直接抛出 RuntimeError,生成流程中断。

从 Issue 讨论看,用户已经按文档卸载并重装了 torch-directml,依赖本身是“满足”的,所以报错更可能出在 Fooocus 代码与 DirectML 后端的接口兼容性上,而不是缺包或网络超时。评论区也有人怀疑那 10.15 秒的实际总耗时是否真的完成了任何生成,说明这并非单一用户的环境问题。

环境排查

  • 确认操作系统是 Windows,且 Fooocus 使用的是 AMD GPU 分支的 run.bat 配置。
  • 确认 Python 版本(Issue 中嵌入式包为 cp310,即 Python 3.10)。
  • 确认 torch 版本(Issue 中为 2.0.0)和 torchvision 版本(Issue 中为 0.15.1)。
  • 确认 torch-directml 是否安装(Issue 中为 0.2.0.dev230426)。
  • 确认显卡型号与显存容量,Issue 中有用户反馈 AMD 8GB 无法使用。
  • 确认没有残留的 CUDA 版 torch 或其他冲突的 torch 相关包。

解决步骤

  1. 先按官方文档确认 run.bat 中 AMD GPU 的相关配置是否正确,包括设备类型等参数,避免因为配置写错导致走到不支持的设备分支。
  2. 检查当前 Python 环境中 torch、torchvision、torch-directml 的版本是否与 Issue 中一致(torch 2.0.0、torchvision 0.15.1、torch-directml 0.2.0.dev230426),以排除版本过新或过旧带来的兼容差异。
  3. 可优先尝试换用 Fooocus 更新版本或等待/查找上游对 DirectML 与 torch.Generator 兼容性的修复;如果新版仍报同一错误,说明该问题尚未被上游解决。
  4. 如果你的 AMD 显卡显存较低(例如 8GB),可先参考 Issue 中“AMD 8GB cannot be used”的反馈,评估是否属于硬件/显存限制导致的同类失败,再决定是否继续排查软件配置。
  5. 在确认是 torch.Generator 与 DirectML 不兼容之前,不建议反复卸载重装 torch-directml,因为 Issue 中用户已经执行过该流程但报错依旧。

验证方法

重新启动 Fooocus 并提交一次生成任务,观察 CMD 日志中是否还出现 RuntimeError: Device type privateuseone is not supported for torch.Generator() api.。若不再出现该报错,并且能正常输出图片文件,说明问题已绕过或解决;若仍出现同样错误,则说明当前 Fooocus 版本与 DirectML 后端的兼容性问题仍未解决,需要等待上游修复或改用其他后端。

参考来源

lllyasviel/Fooocus #624

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 25815

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注