当前位置: 首页 > news >正文

【笔记】解决 “AssertionError: Torch not compiled with CUDA enabled“ 错误

【笔记】解决 "AssertionError: Torch not compiled with CUDA enabled" 错误的完整指南




问题背景

在使用 ComfyUI 或其他基于 PyTorch 的深度学习框架时,经常会遇到 CUDA 相关的错误。其中最常见的就是 "AssertionError: Torch not compiled with CUDA enabled" 错误。这个错误通常发生在安装某些节点或依赖后,导致 PyTorch 无法正确识别和使用 GPU 加速。




报错示例

当启动 ComfyUI 时,可能会看到以下完整的错误堆栈信息:

Traceback (most recent call last):File "H:\PythonProjects1\Win_ComfyUI\main.py", line 150, in <module>import executionFile "H:\PythonProjects1\Win_ComfyUI\execution.py", line 15, in <module>import comfy.model_managementFile "H:\PythonProjects1\Win_ComfyUI\comfy\model_management.py", line 237, in <module>total_vram = get_total_memory(get_torch_device()) / (1024 * 1024)^^^^^^^^^^^^^^^^^^File "H:\PythonProjects1\Win_ComfyUI\comfy\model_management.py", line 187, in get_torch_devicereturn torch.device(torch.cuda.current_device())^^^^^^^^^^^^^^^^^^^^^^^^^^^File "H:\PythonProjects1\Win_ComfyUI\.venv\Lib\site-packages\torch\cuda\__init__.py", line 1069, in current_device_lazy_init()File "H:\PythonProjects1\Win_ComfyUI\.venv\Lib\site-packages\torch\cuda\__init__.py", line 403, in _lazy_initraise AssertionError("Torch not compiled with CUDA enabled")
AssertionError: Torch not compiled with CUDA enabled



问题分析

这个错误的根本原因是:

  1. PyTorch 版本问题:安装的 PyTorch 版本没有编译 CUDA 支持,或者安装的是 CPU-only 版本

  2. 依赖冲突:新安装的节点或依赖包可能与现有的 PyTorch 版本不兼容,导致 PyTorch 被错误地替换为 CPU 版本

  3. 版本不匹配:torch、torchvision、torchaudio 三个包的版本不兼容,或者与系统的 CUDA 版本不匹配


核心机制:节点依赖触发 pip 静默降级 PyTorch

你的环境原本是健康的:PyTorch 已正确安装为 CUDA 版本(如 2.9.0+cu128),可通过 torch.cuda.is_available() 验证。

但当我们执行或程序自动执行类似操作时:

pip install -r custom_nodes/some_node/requirements.txt

如果该节点的 requirements.txt 中包含以下任意一行(无论是否带版本号):

torch
torch>=2.0.0
torch==2.9.0
torchvision
torchaudio

未指定 PyTorch 官方 CUDA 源(如 --index-url https://download.pytorch.org/whl/cu128),pip 就会:

  1. 从默认源(PyPI)解析这些包
  2. PyPI 上的 torchtorchvisiontorchaudio 均为 CPU-only 构建(无 +cuXXX 后缀);
  3. 为满足依赖一致性,pip 强制卸载你当前的 CUDA 版本,并安装 PyPI 上的 CPU 版本;
  4. 整个过程完全静默,无任何警告或确认

💥 关键结论
只要 requirements.txt 中显式声明了 torchtorchvisiontorchaudio(哪怕只是 torch),就极可能触发降级
这不是节点作者的错,而是 pip 依赖解析机制与 PyTorch 多源分发策略共同导致的“陷阱”。

结果:torch.__version__2.9.0+cu128 变成 2.9.0,GPU 支持“凭空消失”。




解决方案

步骤 1:确认当前 PyTorch 版本

首先,查看及回顾当前安装的 PyTorch 版本和 CUDA 相关信息:

pip show torch

示例输出:

Name: torch
Version: 2.9.0
Summary: Tensors and Dynamic neural networks in Python with strong GPU acceleration
Home-page: https://pytorch.org
Author: 
Author-email: PyTorch Team <packages@pytorch.org>
License: BSD-3-Clause
Location: H:\PythonProjects1\Win_ComfyUI\.venv\Lib\site-packages
Requires: filelock, fsspec, jinja2, networkx, setuptools, sympy, typing-extensions
Required-by: kornia, spandrel, torchaudio, torchsde, torchvision

但没有 +cuXXX 后缀(如 2.9.0+cu128),说明当前被安装的是 CPU-only 版本

✅ 正确的 CUDA 版本应显示为:torch-2.9.0+cu128


步骤 2:获取官方安装命令

开始使用

访问PyTorch 官方网站,根据我们的系统配置获取正确的安装命令。

官方网站通常会提供类似这样的命令:

pip3 install torch torchvision --index-url https://download.pytorch.org/whl/cu128

步骤 3:修改安装命令(推荐)

为了避免后续依赖问题,建议同时安装 torchaudio 以匹配安装:

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128 --force-reinstall

💡 强烈建议在AI生成式项目中同时安装 torch torchvisiontorchaudio 三件套,避免后续因依赖安装指定不一致再次触发问题。

如果需要指定具体版本:

pip install torch==2.9.0 torchvision==0.24.0 torchaudio==2.9.0 --index-url https://download.pytorch.org/whl/cu128 --force-reinstall

步骤 4:强制重装

执行修改后的安装命令进行强制重装:

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128 --force-reinstall

--force-reinstall 可确保彻底替换旧版本,避免残留冲突。

⚠️ 注意:安装包较大(约 2.8GB),请确保网络稳定。国内用户可考虑使用镜像源(如清华源)配合 --trusted-host,但 PyTorch 官方 CUDA 包通常必须从官方 index-url 安装

安装过程中会看到类似以下的输出:

Looking in indexes: https://download.pytorch.org/whl/cu128, https://pypi.ngc.nvidia.com
Collecting torchDownloading https://download.pytorch.org/whl/cu128/torch-2.9.0%2Bcu128-cp312-cp312-win_amd64.whl.metadata (29 kB)
Collecting torchvisionDownloading https://download.pytorch.org/whl/cu128/torchvision-0.24.0%2Bcu128-cp312-cp312-win_amd64.whl.metadata (6.1 kB)
Collecting torchaudioDownloading https://download.pytorch.org/whl/cu128/torchaudio-2.9.0%2Bcu128-cp312-cp312-win_amd64.whl.metadata (7.0 kB)
...

步骤 5:验证安装结果

验证PyTorch深度学习环境Torch和CUDA还有cuDNN是否正确配置的命令

创建一个 Python 脚本来验证 CUDA 是否正常工作:

import torch  # 导入 PyTorch 库print("PyTorch 版本:", torch.__version__)  # 打印 PyTorch 的版本号# 检查 CUDA 是否可用,并设置设备("cuda:0" 或 "cpu")
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
print("设备:", device)  # 打印当前使用的设备
print("CUDA 可用:", torch.cuda.is_available())  # 打印 CUDA 是否可用
print("cuDNN 已启用:", torch.backends.cudnn.enabled)  # 打印 cuDNN 是否已启用# 打印 PyTorch 支持的 CUDA 和 cuDNN 版本
print("支持的 CUDA 版本:", torch.version.cuda)
print("cuDNN 版本:", torch.backends.cudnn.version())# 创建两个随机张量(默认在 CPU 上)
x = torch.rand(5, 3)
y = torch.rand(5, 3)# 将张量移动到指定设备(CPU 或 GPU)
x = x.to(device)
y = y.to(device)# 对张量进行逐元素相加
z = x + y# 打印结果
print("张量 z 的值:")
print(z)  # 输出张量 z 的内容

如果一切正常,应该看到类似以下的输出:

PyTorch 版本:2.9.0+cu128
设备:cuda:0
CUDA 可用:True
cuDNN 已启用:True
支持的 CUDA 版本:12.8
cuDNN 版本:90200
张量 z 的值:
tensor([[1.2345, 0.6789, 1.0123],[0.4567, 1.3456, 0.8901],[1.1234, 0.5678, 1.2345],[0.7890, 1.4567, 0.9012],[1.3456, 0.8901, 1.1234]], device='cuda:0')



其他修复方法

方法 1:完全重新安装

如果上述方法无效,可以尝试完全重新安装:

# 卸载现有版本
pip uninstall torch torchvision torchaudio -y# 清理pip缓存
pip cache purge# 重新安装
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128

方法 2:使用 --use-pep517 参数

在某些情况下,使用 PEP 517 构建系统可能有助于解决安装问题:

pip install --use-pep517 torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128

--use-pep517 参数说明

  • 告诉 pip 使用 PEP 517 标准来构建包
  • 避免使用旧的 setuptools 构建工具可能导致的问题
  • 适用于较新版本的 pip(21.3+)
  • 当遇到某些包构建问题时特别有用

方法 3:使用 --user 参数(妥协方案,不建议)

如果我们没有管理员权限,可以使用 --user 参数将包安装到用户目录:

pip install --user torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128

--user 参数说明

  • 将包安装到用户的 home 目录下
  • 避免需要管理员权限
  • 适用于共享系统或没有 sudo 权限的环境
  • 可能需要配置 PATH 环境变量
  • 可能造成路径处理混乱



预防措施

预防再次踩坑:

  1. 一次性装好三件套,即使暂时用不到 torchaudio;

  2. 安装新节点前,先读它的 requirements.txt:

    1. 把  torch 、 torchvision 、 torchaudio  三行 等会影响 CUDA 版本的行 注释或删除;
    2. 若必须保留,请写成与已装版本完全一致的 带 +cuXXX 版本号,并附加 `--index-url https://download.pytorch.org/whl/cu128`参数;
  3. 用虚拟环境隔离且定期备份:

    1. python -m venv .venv
    2. pip freeze > comfyui_cu121_backup.txt
  4. 不在虚拟环境里混用  --user  参数。

一句话总结
装节点前不排查 requirements.txt,CUDA 版 PyTorch 就可能被静默降级;一旦报错,用官方 CUDA 源强制重装三件套即可秒恢复。




常见问题解答

Q1:为什么官方命令不包含 torchaudio?

A1:官方命令通常只包含最基本的 torch 和 torchvision。但对于 ComfyUI 等应用,torchaudio 也是必需的依赖包。同时安装可以避免后续单独安装时可能出现的版本冲突。


Q2:什么时候需要使用 --force-reinstall 参数?

A2:当我们怀疑现有安装有问题,或者想要完全重新安装时使用。这个参数会强制重新下载和安装所有指定的包,覆盖现有版本。


Q3:如何选择正确的 CUDA 版本?

A3:可以通过以下命令查看系统支持的 CUDA 版本:

nvidia-smi

然后在 PyTorch 官网选择对应的 CUDA 版本。

但仍需严格查询如 xformers 、triton-windows、nunchaku 等等,对 torch 和CUDA 版本有严格对齐要求的包的兼容性要求。

facebookresearch/xformers: Hackable and optimized Transformers building blocks, supporting a composable construction.

woct0rdho/triton-windows:Triton 语言和编译器的分支,用于 Windows 支持和易于安装

发布双节棍 v1.0.2 ·双节棍技术/双节棍


Q4:如果我的 GPU 不支持最新的 CUDA 版本怎么办?

A4:最新的未必是最兼容的!我们需要选择与自己的 GPU 和项目所有依赖兼容的 CUDA 版本。可以在 NVIDIA 官网上查询我们的 GPU 支持的最高 CUDA 版本。但最好是选择 与项目中所有包 兼容的版本。




总结

  • 报错 Torch not compiled with CUDA enabled 的本质是:PyTorch 安装了 CPU-only 版本,但代码尝试调用 GPU
  • 解决方法:从 PyTorch 官方安装带 CUDA 支持的版本(如 cu128)。
  • 关键操作:使用 --index-url 指定 CUDA wheel 源,并一次性安装 torch/torchvision/torchaudio
  • 验证环节不可省略,确保 torch.cuda.is_available() 返回 True

解决 "AssertionError: Torch not compiled with CUDA enabled" 错误的关键在于:

  1. 使用官方安装命令:确保从 PyTorch 官网获取正确的安装命令,特殊场景下稍加修改
  2. 保持版本兼容:确保 torch、torchvision、torchaudio 、formers 、triton-windows、nunchaku 等版本匹配
  3. 强制重装:在遇到依赖冲突时,使用 --force-reinstall 参数
  4. 验证安装:安装后使用验证脚本来确认 CUDA 正常工作
  5. 兼顾其他包:除了列举的包外,还需要排查和兼顾其他依赖 CUDA 编译的依赖

通过以上步骤,我们应该能够成功解决 PyTorch 的 CUDA 支持问题,让 ComfyUI 和其他深度学习应用能够充分利用 GPU 的计算能力。

记住,预防胜于治疗。定期备份环境、使用虚拟环境、注意版本兼容性,这些好习惯可以帮助我们避免很多依赖问题。


Date: 2025 年 11 月 5 日Code: https://github.com/pytorch/pytorchReference: https://pytorch.org/get-started/locally/

http://www.dtcms.com/a/573249.html

相关文章:

  • 八股训练营第 7 天 | TCP连接如何确保可靠性?拥塞控制是怎么实现的?TCP流量控制是怎么实现的?UDP怎么实现可靠传输?
  • 清除BSS段(ZI段)
  • 数据库安全配置指导
  • 江苏南京建设局官方网站wordpress开发门户网站
  • 科学休息,我用AI写了个vscode养鱼插件:DevFish发布
  • Spring Boot 项目 GitLab CI/CD 自动构建并推送到 Harbor 教程
  • 彻底理解传统卷积,深度可分离卷积
  • 使用VSCode进行SSH远程连接时无法与xxx建立连接
  • 宁波建设工程报名网站陕西省住房与建设厅网站
  • Rust 练习册 6:生命周期与闭包
  • 公司网站开发的流程高端企业网站公司
  • 第二届中欧科学家论坛暨第七届人工智能与先进制造国际会议(AIAM 2025)在德国海德堡成功举办
  • 微硕WSF3085 MOSFET,汽车电动尾门升降强效驱动
  • 5 Prompt Engineering 高阶技巧:构建智能对话系统的核心技术
  • 汽车系统可靠性与技术融合:智能动力总成及机电一体化诊断
  • 网站建设对企业的重要性线上营销的优势和劣势
  • JavaScript 正则表达式全方位解析:从基础到实战
  • 工业相机成像核心参数解析,帧率与曝光时间的权衡关系
  • Kodiak Perps:Berachain 原生永续合约平台上线
  • 分布式版本控制系统Git的安装和使用
  • 用.echarts文件快速实现日历饼图
  • 影刀RPA一键生成竞品分析!AI智能监控,效率提升100倍[特殊字符]
  • 从卡顿到秒查:Java 项目引入 Elasticsearch 实现亿级地址数据的复杂查询实战
  • 国外可以做推广的网站有哪些广州品牌形象设计
  • 【MySQL】SQL语法详细总结
  • 宿迁华夏建设集团网站下列什么软件不能用于设计网页
  • vue笔记(第一天)
  • cursor和传统idea的区别是什么?
  • SSM--MyBatis框架SQL映射文件获取一对一或者一对多关系值
  • 网站开发实验报告总结阿里云是不是做网站的