UR error: 45 (UR_RESULT_ERROR_INVALID_ARGUMENT) [PYI-2512:ERROR] Failed to execu...

2026年03月23日 17:08 状态: processing

🚨 错误信息

Traceback (most recent call last): File "main.py", line 243, in <module> File "main.py", line 222, in main File "lada\restorationpipeline\__init__.py", line 28, in load_models File "lada\models\basicvsrpp\inference.py", line 55, in load_model File "torch\nn\modules\module.py", line 1199, in half return self._apply(lambda t: t.half() if t.is_floating_point() else t) ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "torch\nn\modules\module.py", line 930, in _apply module._apply(fn) ~~~~~~~~~~~~~^^^^ File "torch\nn\modules\module.py", line 1022, in _apply self._buffers[key] = fn(buf) ~~^^^^^ File "torch\nn\modules\module.py", line 1199, in <lambda> return self._apply(lambda t: t.half() if t.is_floating_point() else t) ~~~~~~^^ RuntimeError: UR error: 45 (UR_RESULT_ERROR_INVALID_ARGUMENT) [PYI-2512:ERROR] Failed to execute script 'main' due to unhandled exception!

🤖 AI解决方案

报错分析报告

1.错误翻译



原文:RuntimeError: UR error: 45 (UR_RESULT_ERROR_INVALID_ARGUMENT)
译文:运行时错误:UR错误45(UR_RESULT_ERROR_INVALID_ARGUMENT,参数无效错误)

2.原因分析


  • 根本原因:模型加载时尝试将模型转换为半精度(FP16)的过程中,某个缓冲区张量的参数不符合half()转换要求(如非浮点型或数据无效)。

  • 发生位置torch.nn.Module._apply处理模型缓冲区时,调用t.half()触发底层UR运行时错误(堆栈中lada\models\basicvsrpp\inference.py第55行的load_model调用了half())。
  • 3.解决方案


    若无需半精度推理,可移除half()转换;若需半精度,需确保张量兼容。修复示例(以inference.py第55行为例):

    python

    原代码(推测):model = model.half()


    修复后(方案1:禁用半精度)


    model = model.float() # 或直接移除half(),保持FP32

    修复后(方案2:安全转换,仅浮点型张量转half)


    def safe_half(module):
    for param in module.parameters():
    if param.is_floating_point():
    param.data = param.data.half()
    for buffer in module.buffers():
    if buffer.is_floating_point():
    buffer.data = buffer.data.half()
    return module

    model = safe_half(model)

    4.️ 预防措施


  • 精度转换前校验:使用tensor.is_floating_point()检查张量类型,避免对整数/布尔张量调用half()

  • 工具推荐:用PyTorch torch.cuda.amp自动混合精度(GradScaler)替代手动half(),减少低级错误。
  • ---
    :若需更精准修复,请提供lada\models\basicvsrpp\inference.py第55行附近的load_model函数代码。