【ComfyUI】RuntimeError: CUDA error: operation not supported

前言

最近好不容易,安装好ComfyUI后,启动也OK,点击生成图片时,报错了

got prompt
model_type EPS
adm 0
making attention of type 'vanilla-pytorch' with 512 in_channels
Working with z of shape (1, 4, 32, 32) = 4096 dimensions.
making attention of type 'vanilla-pytorch' with 512 in_channels
missing {'cond_stage_model.text_projection', 'cond_stage_model.logit_scale'}
left over keys: dict_keys(['cond_stage_model.transformer.text_model.embeddings.position_ids', 'model_ema.decay', 'model_ema.num_updates'])
loading new
loading new
loading in lowvram mode 1842.6899042129517
!!! Exception during processing !!!
Traceback (most recent call last):
  File "E:\openai\project\ComfyUI\execution.py", line 152, in recursive_execute
    output_data, output_ui = get_output_data(obj, input_data_all)
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "E:\openai\project\ComfyUI\execution.py", line 82, in get_output_data
    return_values = map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "E:\openai\project\ComfyUI\execution.py", line 75, in map_node_over_list
    results.append(getattr(obj, func)(**slice_dict(input_data_all, i)))
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "E:\openai\project\ComfyUI\nodes.py", line 1236, in sample
    return common_ksampler(model, seed, steps, cfg, sampler_name, scheduler, positive, negative, latent_image, denoise=denoise)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "E:\openai\project\ComfyUI\nodes.py", line 1206, in common_ksampler
    samples = comfy.sample.sample(model, noise, steps, cfg, sampler_name, scheduler, positive, negative, latent_image,
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "E:\openai\project\ComfyUI\comfy\sample.py", line 81, in sample
    comfy.model_management.load_models_gpu([model] + models, comfy.model_management.batch_area_memory(noise.shape[0] * noise.shape[2] * noise.shape[3]) + inference_memory)
  File "E:\openai\project\ComfyUI\comfy\model_management.py", line 394, in load_models_gpu
    cur_loaded_model = loaded_model.model_load(lowvram_model_memory)
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "E:\openai\project\ComfyUI\comfy\model_management.py", line 288, in model_load
    accelerate.dispatch_model(self.real_model, device_map=device_map, main_device=self.device)
  File "D:\Program Files\Python\Lib\site-packages\accelerate\big_modeling.py", line 391, in dispatch_model
    attach_align_device_hook_on_blocks(
  File "D:\Program Files\Python\Lib\site-packages\accelerate\hooks.py", line 532, in attach_align_device_hook_on_blocks
    add_hook_to_module(module, hook)
  File "D:\Program Files\Python\Lib\site-packages\accelerate\hooks.py", line 155, in add_hook_to_module
    module = hook.init_hook(module)
             ^^^^^^^^^^^^^^^^^^^^^^
  File "D:\Program Files\Python\Lib\site-packages\accelerate\hooks.py", line 253, in init_hook
    set_module_tensor_to_device(module, name, self.execution_device)
  File "D:\Program Files\Python\Lib\site-packages\accelerate\utils\modeling.py", line 307, in set_module_tensor_to_device
    new_value = old_value.to(device)
                ^^^^^^^^^^^^^^^^^^^^
RuntimeError: CUDA error: operation not supported
CUDA kernel errors might be asynchronously reported at some other API call, so the stacktrace below might be incorrect.
For debugging consider passing CUDA_LAUNCH_BLOCKING=1.
Compile with `TORCH_USE_CUDA_DSA` to enable device-side assertions.

这个问题查了挺久的资料的,特意记录下解决方案。

解决办法

官方提供了两种解决策略。

方式一:黑名单策略

在这里插入图片描述

在这里插入图片描述

加完后,再重启。发现还是不行。

方式二:启动时添加–disable-cuda-malloc

# 注意--disable-cuda-malloc
E:\openai\project\ComfyUI>python main.py --disable-cuda-malloc

最后,通过方式二,得以解决。


其实,在启动的时候,它已经告诉我们可能会遇到的问题;

在这里插入图片描述

有两段提示:

  1. 第一段提示:
Trying to enable lowvram mode because your GPU seems to have 4GB or less. If you don't want this use: --normalvram
Set vram state to: LOW_VRAM

说,由于我的GPU<=4G,所以它尝试开启了lowvram模式。如果我想使用正常模式,就在启动命令行后面添加--normalvram

  1. 第二段提示:
WARNING: this card most likely does not support cuda-malloc, if you get "CUDA error" please run ComfyUI with: --disable-cuda-malloc

就是,发现我的GPU卡,并不支持cuda-malloc函数或接口。如果在后续的运行中遇到了CUDA error错误,那么就在启动命令行后面,添加:--disable-cuda-malloc


参考地址:

CUDA error: operation not supported, in KSampler

https://github.com/comfyanonymous/ComfyUI/issues/940#issuecomment-1691327437

https://github.com/comfyanonymous/ComfyUI/issues/940#issuecomment-1642586085

### 解决PyTorch中的CUDA运行时错误 在处理PyTorch中的CUDA运行时错误时,可以采取多种方法来诊断和解决问题。以下是针对提到的两种主要错误(`operation not supported` 和 `misaligned address`)以及调试技巧的具体说明。 #### 错误分析与解决方案 1. **关于`operation not supported`错误** 此类错误通常表明当前使用的硬件或驱动版本不支持某些特定的操作[^1]。为了排查此问题,建议验证以下几个方面: - 确认所用的CUDA工具包版本是否兼容NVIDIA GPU架构。 - 更新至最新的NVIDIA驱动程序以确保最佳性能和支持最新功能。 2. **对于`misaligned address`错误** 这种情况通常是由于内存访问未对齐引起的,常见于低级操作中[^2]。解决办法可能包括调整数据结构布局使其满足对齐要求或者修改底层实现逻辑避免此类违规行为发生。 3. **启用设备端断言机制** 编译时设置环境变量`TORCH_USE_CUDA_DSA`能够激活设备上的断言语句,从而更精确地定位潜在问题所在位置[^4]。这一步骤有助于深入理解具体哪个部分触发了异常状况。 4. **利用同步模式辅助查找问题根源** 设置环境变量`CUDA_LAUNCH_BLOCKING=1`可以让每一个CUDA调用都变为阻塞式的执行方式而不是异步完成形式。这样做的好处是可以让报错信息更加贴近实际引发崩溃的地方,便于进一步分析原因^。 5. **绑定指定GPU资源管理策略** 如果项目涉及多张显卡之间的协作运算,则需合理分配每一块卡的任务负载,并通过代码明确指派工作给目标设备实例化对象如下面例子所示: ```python import torch model_name = "your_model_name" torch_dtype = torch.float16 pipe = SomeModelClass.from_pretrained(model_name, torch_dtype=torch_dtype).to("cuda:1") ``` #### 总结 综合运用以上措施可以帮助有效缓解乃至彻底消除PyTorch框架下遇到的各种CUDA相关难题。重要的是始终保持软件栈各组件间良好匹配状态的同时密切关注官方文档更新动态获取更多技术支持资料。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山鬼谣me

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值