开发者社区 > ModelScope模型即服务 > 计算机视觉 > 正文

cpu部署报错 Torch not compiled with CUDA enabled

已解决

读光-表格结构识别-无线表格模型目前不支持纯cpu部署。 https://github.com/modelscope/modelscope/blob/master/modelscope/models/cv/table_recognition/lineless_table_process.py 该文件中包含tensor.cuda(),希望能优化后去掉该强制转化,使其支持cpu部署

展开
收起
ginsoda 2023-03-22 15:57:35 1367 0
22 条回答
写回答
取消 提交回答
  • 读光-表格结构识别-无线表格模型目前不支持纯CPU部署,因为代码中包含了.cuda()函数,这个函数是将数据转移到GPU上进行计算的,如果没有GPU,则会出现错误。用户希望能优化后去掉这个强制转化,以便支持CPU部署。

    针对这个问题,建议修改代码,将.cuda()函数改为.to(device)函数,其中device可以指定为CPU或GPU。这样代码就可以在CPU上运行了。同时,需要注意的是,这样修改后可能会导致模型的计算速度变慢,因为GPU通常比CPU更快。

    2023-06-10 07:53:42
    赞同 展开评论 打赏
  • 如果您想要将表格结构识别模型在无GPU环境中,即仅使用CPU来部署,您需要移除或修改代码中所有的 .cuda() 调用,这样可以避免代码尝试将数据移动到GPU上。

    2024-02-23 16:22:47
    赞同 展开评论 打赏
  • 这个错误提示表明您正在尝试在CPU上运行一个需要CUDA支持的Torch模型。为了解决这个问题,您需要确保您的计算机上安装了正确版本的CUDA和cuDNN库,并且已经将它们正确地配置到您的系统路径中。

    以下是一些可能有用的步骤:

    1. 确保您已经安装了正确版本的CUDA和cuDNN库。您可以从NVIDIA官方网站下载并安装最新版本的CUDA和cuDNN库。

    2. 将CUDA和cuDNN库添加到系统路径中。这可以通过将CUDA和cuDNN库的路径添加到环境变量中来实现。具体来说,您需要将以下路径添加到您的系统路径中:

    
    C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\vX.Y\bin
    C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\vX.Y\libnvvp
    C:\tools\cuda\bin
    
    

    其中,vX.Y表示您安装的CUDA版本号。请注意,这些路径可能会因您的操作系统和CUDA版本而有所不同。

    1. 确保您的Python脚本或代码中使用了正确的Torch版本。如果您使用的是PyTorch,则需要确保您已经安装了支持CUDA的PyTorch版本。您可以使用以下命令安装支持CUDA的PyTorch:
    
    

    如果您使用的是其他深度学习框架,请确保它支持CUDA并已正确配置。

    2023-06-28 16:54:25
    赞同 展开评论 打赏
  • 要将具有tensor.cuda()语句的代码修改为支持CPU部署,您可以进行以下操作:

    1. 导入所需的库:

    import torch

    1. 替换tensor.cuda(): 将tensor.cuda()替换为tensor.to(device),其中device参数指定为torch.device('cpu')。这将使得张量在CPU上运行而不是GPU上。

    原始代码:

    tensor.cuda()

    修改后的代码:

    device = torch.device('cpu') tensor.to(device)

    1. 适应性修改: 由于代码中可能涉及多个tensor.cuda()语句,您需要在适当的位置进行相应的修改。确保将所有这些语句替换为相应的to(device)语句。

    请注意,修改后的代码将在CPU上运行,而不会利用GPU的加速能力。这可能会导致性能下降,特别是对于计算密集型任务。如果您拥有GPU,并且希望充分利用其性能,那么最好使用支持CUDA的环境进行部署。

    另外,请确保您已经安装了最新版本的PyTorch,并且已正确配置CUDA和cuDNN(如果适用)。这样可以确保您的代码在GPU上正常运行,并且您可以利用GPU的计算能力。

    2023-06-25 14:32:00
    赞同 1 展开评论 打赏
  • 可以考虑以下几点:

    模型选择:尝试找到一个在 CPU 上运行良好的替代模型。有些模型在 GPU 和 CPU 上的可移植性更好,选择这样的模型可以避免进行大量的修改。

    模型架构:检查模型架构是否具有与 GPU 相关的特定操作,例如 CUDA 张量或其他 GPU 特定指令。将这些操作替换为等效的 CPU 版本可以使模型在 CPU 上运行。

    硬件加速库:某些深度学习框架提供了通过不同的硬件加速库(如CUDA、OpenCL、MKL)来执行计算操作的能力。确保使用的库已正确配置为适应 CPU,并利用其最佳性能。

    代码优化:对于特定的模型和任务,可以对代码进行优化,以减少计算和内存消耗。这可能包括减少不必要的计算、减少存储需求和缓存操作等。

    无论你采取哪种方法,确保在修改代码前备份原始代码,并进行详细的测试和验证,以确保修改后的模型仍然能够正常工作并产生准确的结果。调试和适应 CPU 环境可能需要一些时间和实验。

    2023-06-21 14:06:50
    赞同 展开评论 打赏
  • 公众号:网络技术联盟站,InfoQ签约作者,阿里云社区签约作者,华为云 云享专家,BOSS直聘 创作王者,腾讯课堂创作领航员,博客+论坛:https://www.wljslmz.cn,工程师导航:https://www.wljslmz.com

    如果在使用 CPU 部署 Torch 模型时出现 "Torch not compiled with CUDA enabled" 的错误,这通常是由于 Torch 没有正确配置所致。Torch 默认情况下是使用 CUDA 加速的,如果您的系统没有安装 CUDA,就会出现这个错误。

    为了解决这个问题,您可以尝试以下几种方法:

    1. 在安装 Torch 时指定不使用 CUDA。具体来说,您可以在安装 Torch 时使用以下命令:luarocks install torch --without-cuda。这将安装一个不支持 CUDA 的 Torch 版本。

    2. 在代码中禁用 CUDA。如果您已经安装了支持 CUDA 的 Torch 版本,可以在代码中禁用 CUDA。具体来说,您可以在代码开头添加以下语句:os.environ['CUDA_VISIBLE_DEVICES'] = '-1'。这将禁用 CUDA,并强制使用 CPU 进行计算。

    3. 安装 CUDA。如果您的系统支持 CUDA,您也可以安装 CUDA,并重新编译 Torch。具体来说,您需要按照 CUDA 的官方文档进行安装和配置,然后重新编译 Torch。

    2023-06-20 10:17:14
    赞同 展开评论 打赏
  • 从事java行业9年至今,热爱技术,热爱以博文记录日常工作,csdn博主,座右铭是:让技术不再枯燥,让每一位技术人爱上技术

    您好,根据读光-表格结构识别-无线表格 模型的使用说明来看目前不支持CPU部署,仅支持GPU image.png 目前官方的模型只用说明还是仅支持GPU哈,后续不确定是否支持CPU

    2023-06-19 20:47:22
    赞同 展开评论 打赏
  • 不断追求着最新的技术和趋势,在云技术的世界里,我不断寻找着新的机会和挑战,不断挑战自己的认知和能力。

    要优化无线表格模型,使其支持纯 CPU 部署,您可以检查模型是否在 CPU 上运行。在无线表格模型中,您可以使用 device_count 函数来检查模型是否在 CPU 上运行。

    2023-06-14 12:55:10
    赞同 展开评论 打赏
  • 云端行者觅知音, 技术前沿我独行。 前言探索无边界, 阿里风光引我情。

    如果你想要将ModelScope中的光学字符识别模型部署到CPU上,你需要对代码进行修改,以便将CUDA张量转换为CPU张量。具体来说,你需要将以下代码:

    tensor = tensor.cuda()
    

    修改为:

    ``if torch.cuda.is_available(): tensor = tensor.cuda() else: tensor = tensor.cpu()

    
    这样,如果CUDA可用,张量将被转换为CUDA张量,否则将被转换为CPU张量。这样修改后,你可以在CPU上运行模型了。
    
    需要注意的是,如果你在CPU上运行模型,模型的推理速度可能会比在GPU上很多,因为CPU的计算能力相对较弱。因此,如果你需要在生产环境中使用模型,建议使用GPU进行部署,以获得更好的性能。
    
    
    2023-06-14 12:54:54
    赞同 展开评论 打赏
  • 这个报错提示是因为你所使用的PyTorch版本没有启用CUDA。CUDA是NVIDIA提供的并行计算平台和编程模型,它可以利用GPU的强大计算能力来加速深度学习训练和推理过程。

    要解决这个问题,你可以检查以下几点:

    确认你的GPU是否支持CUDA,以及CUDA是否已正确安装。

    确认你的PyTorch版本是否支持CUDA,如果不支持,请安装支持CUDA的版本。你可以在PyTorch官网上查看支持CUDA的版本信息。

    确认你的代码中是否正确设置了使用CUDA的相关参数。比如,在PyTorch中,可以使用torch.cuda.is_available()来判断当前环境是否支持CUDA,使用model.cuda()来将模型放到GPU上进行加速计算

    2023-06-14 12:02:58
    赞同 展开评论 打赏
  • 您提到的问题是由于代码中使用的 PyTorch 张量被强制转换为 CUDA 张量而导致的。如果您想要优化代码并支持 CPU 部署,您需要做以下几点:

    移除所有的 “.cuda()” 函数:这将删除代码中张量强制转换为 CUDA 的语句,并将其转换为普通的 PyTorch 张量。

    修改模型以允许在 CPU 上运行:GPU 加速通常分为两个步骤。首先,模型的参数被加载到 GPU 存储器中,并在 GPU 上进行操作。其次,模型的计算结果被复制回 CPU 内存中,以便在其他部分进行处理。为了让模型能够在 CPU 上运行,您需要修改模型的实现,以便在 CPU 上运行相应的操作。

    调整模型的性能:CPU 和 GPU 的计算速度是不同的,因此您需要调整模型的性能来适应 CPU 的计算速度。例如,您可以通过增加批处理大小、降低网络的深度或宽度等方式来改善模型的性能。

    通过以上几点的实现,您应该能够成功优化代码,以支持 CPU 部署。但需要注意的是,由于 CPU 性能与 GPU 性能存在显著差异,因此您可能需要在 CPU 上增加额外的计算资源来获得与 GPU 相当的性能。

    2023-06-13 10:20:29
    赞同 展开评论 打赏
  • 将GPU代码转换为CPU代码需要进行一些修改,具体取决于模型中使用的GPU操作。在这种情况下,将tensor.cuda()替换为tensor.cpu()是一个可能的解决方案。但是,这可能会降低模型的性能并且可能需要进行其他修改以使其更适合CPU。以下是一些可能需要修改的操作:

    1. 数据类型:GPU支持的数据类型与CPU不同,因此可能需要更改模型中使用的数据类型。

    2. 矩阵操作:一些矩阵操作(例如矩阵乘法)在GPU上具有优化,但在CPU上可能会很慢。您可能需要使用其他算法或库来优化这些操作。

    3. 并行化:GPU可以并行处理多个操作,但在CPU上需要手动编写并行代码。

    4. 内存使用:GPU具有更多的内存和更高的带宽,因此模型可能会使用大量内存。在CPU上,需要更加谨慎地管理内存使用。

    当然,这些修改可能需要进行一些调试和优化,以使其在CPU上能够正常工作。因此,如果您不熟悉深度学习和模型优化,建议您寻求专业人士的帮助。

    2023-06-12 21:06:57
    赞同 展开评论 打赏
  • 天下风云出我辈,一入江湖岁月催,皇图霸业谈笑中,不胜人生一场醉。

    您提到的问题可能是因为无线表格模型使用了CUDA加速计算,所以无法在CPU上进行部署。但是,我们可以通过一些方法来尝试让模型在CPU上运行。

    首先,可以检查一下是否可以通过TensorFlow的CPU部署来运行模型。您可以在Python中编写一个简单的程序来创建一个session,然后在session中加载模型并进行推理。如果模型可以在CPU上正常运行,那么您可以尝试使用更高效的算法或优化技术来提高模型的性能。

    另外,您可以考虑使用TensorFlow的Saver和Loader模块来加载和保存模型,以便在CPU上进行模型部署。这样,您可以在CPU上训练模型,并使用加载后的模型进行推理。

    如果以上方法都不能在CPU上部署您的模型,那么您可以尝试使用TensorFlow的Keras模块来重新实现您的模型。Keras提供了许多高效的层和模型,可以在CPU上运行得更快。

    2023-06-12 16:30:06
    赞同 展开评论 打赏
  • 该错误信息表示您的PyTorch库没有启用CUDA支持。CUDA是NVIDIA提供的并行计算平台,可用于在GPU上进行加速计算。由于您的环境没有启用CUDA,您无法在GPU上进行加速计算。

    如果您想在没有GPU的情况下使用PyTorch,您可以尝试以下解决方法:

    1. 安装CPU版本的PyTorch:确保您已经安装了与您的系统兼容的CPU版本的PyTorch。您可以通过使用conda、pip或源代码进行安装。例如,使用pip安装PyTorch的CPU版本可以使用以下命令:

    pip install torch==1.9.0+cpu -f https://download.pytorch.org/whl/torch_stable.html

    1. 检查CUDA依赖:如果您的系统中已安装了CUDA,并且您希望使用GPU进行加速计算,您可以确保正确配置了CUDA和相关的GPU驱动。请参考PyTorch官方文档以获取有关CUDA支持的更多信息。

    请注意,使用CPU进行计算可能会比使用GPU慢,特别是对于涉及大规模数据和复杂模型的任务。如果您有可用的GPU,并且希望在其中进行加速计算,建议您确保正确安装了CUDA,并使用支持CUDA的PyTorch版本。

    2023-06-12 11:05:53
    赞同 展开评论 打赏
  • 值得去的地方都没有捷径

    根据您提供的信息,模型使用了 PyTorch 框架,并且使用了 CUDA 加速。如果您的部署环境没有 GPU 或者没有安装 CUDA,就无法使用 CUDA 加速。因此,需要将模型中的 CUDA 相关代码进行修改,以支持纯 CPU 部署。

    以下是一些可能的解决方案:

    使用 CPU 版本的 PyTorch:如果您的部署环境没有 GPU 或者没有安装 CUDA,可以使用 CPU 版本的 PyTorch。CPU 版本的 PyTorch 不需要 CUDA,可以在不需要 GPU 加速的情况下运行 PyTorch。

    修改代码以支持 CPU:如果您想要在没有 GPU 的环境下运行模型,可以修改代码以支持 CPU。具体地,您需要找到代码中所有调用 CUDA 相关函数的地方,并将其修改为对应的 CPU 函数。

    在您提供的代码中,可以将以下代码:

    tensor = tensor.cuda() 修改为:

    if torch.cuda.is_available(): tensor = tensor.cuda() else: tensor = tensor.cpu() 这样,如果您的环境支持 CUDA,就会使用 CUDA 进行计算;否则,就会使用 CPU 进行计算。需要注意的是,如果您使用 CPU 进行计算,可能会导致计算速度变慢。

    需要注意的是,以上方法仅供参考,具体的解决方法可能因模型和环境配置不同而异。如果您仍然遇到问题,可以尝试联系模型作者或者相关的技术支持人员,寻求帮助。

    2023-06-11 15:46:27
    赞同 展开评论 打赏
  • 好的,为了使该模型支持纯CPU部署,我们需要进行一些优化。首先,我们可以检查该模型是否真的需要GPU加速。如果可以在CPU上运行,则可以避免一些额外的开销。

    在 lineless_table_process.py 文件中,我们可以找到以下代码段:

    python if torch.cuda.is_available():
    device = torch.device("cuda")
    table = table.to(device)
    img = img.to(device)
    else:
    device = torch.device("cpu") 这段代码检查是否有可用的GPU,如果有,则将模型和图像移动到GPU上。否则,将它们移动到CPU上。我们可以简单地删除此代码段,因为我们希望在CPU上运行模型。

    接下来,我们找到模型的输出,即 output = model(img, table)。我们可以删除 .cuda() 转换,因为我们已经将模型和图像移动到CPU上了。修改后的代码如下所示:

    python output = model(img, table) 最后,我们需要在整个代码中删除所有 .cuda() 和 .cpu() 转换。这将确保模型在CPU上运行,而无需进行任何额外的转换。

    完成这些更改后,您应该能够使用纯CPU部署该模型。请注意,如果您的数据集很大,则在CPU上运行模型可能会比在GPU上运行模型慢得多。在这种情况下,您可能需要考虑使用更强大的CPU或拆分数据集以在多个CPU核心上运行模型。

    2023-06-11 09:35:20
    赞同 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    如果在 CPU 环境下部署 PyTorch 模型时出现“Torch not compiled with CUDA enabled”错误,可能是因为您安装的 PyTorch 版本编译时未启用 CUDA 支持,或者您在代码中使用了某些依赖 CUDA 的操作。

    解决此问题的方法是:

    1. 安装支持 CPU 的 PyTorch 版本。您可以通过以下命令安装:
    pip install torch==1.7.0+cpu torchvision==0.8.1+cpu -f https://download.pytorch.org/whl/cu101/torch_stable.html
    

    请注意,该命令将安装 PyTorch 1.7.0 版本的 CPU-only 版本,适用于不需要使用 CUDA 的情况。

    1. 检查代码中是否使用了依赖 CUDA 的操作。例如,如果您使用了 torch.cuda() 或者其他依赖 CUDA 的操作,则需要将其替换为等效的 CPU 实现。可以参考 PyTorch 官方文档和社区资源,了解更多有关替换 CUDA 操作的技术和经验。

    2. 在 PyTorch 初始化时指定 device='cpu' 参数,以确保 PyTorch 正确使用 CPU 设备进行模型计算。例如,

    import torch
    
    device = torch.device('cpu')
    model = MyModel().to(device)
    
    1. 验证代码中的所有依赖项和环境变量,并确保它们与当前运行环境和需求相适应。

    总之,如果在 CPU 环境下部署 PyTorch 模型时出现“Torch not compiled with CUDA enabled”错误,可以尝试安装支持 CPU 的 PyTorch 版本,检查代码中是否使用了依赖 CUDA 的操作,以及在 PyTorch 初始化时指定 device='cpu' 参数。同时,还需要仔细检查其他依赖项和环境变量,并确保它们与当前运行环境和需求相适应。

    2023-06-10 20:21:33
    赞同 展开评论 打赏
  • 如果您在使用 PyTorch 进行 CPU 部署时遇到了 "Torch not compiled with CUDA enabled" 的报错,那么这通常是由于您安装的 PyTorch 版本不支持纯 CPU 模式导致的。PyTorch 分为 CPU 版本和 GPU 版本,需要根据实际情况来选择和安装。

    解决这个问题的方法是重新安装 PyTorch 的 CPU 版本,并卸载掉之前安装的 GPU 版本。具体来说,可以按照以下步骤进行:

    1. 使用 pip 命令卸载当前的 PyTorch 版本:
    pip uninstall torch torchvision torchaudio
    
    1. 从 PyTorch 官网下载并安装适用于 CPU 的 PyTorch 版本。通常可以通过指定 --cpu 参数来强制安装 CPU 版本。例如,在 Linux 上可以使用以下命令安装 CPU 版本:
    pip install torch torchvision torchaudio -f https://download.pytorch.org/whl/lts/1.8/torch_lts.html --no-cache-dir --force-reinstall --no-deps --ignore-installed --verbose --cpu
    
    1. 在重新安装后,可以使用以下方式验证 PyTorch 是否已正确安装并支持 CPU 模式:
    import torch
    
    print(torch.__version__)
    print(torch.cuda.is_available())  # Should output False
    

    如果输出结果中的第二行为 False,则表示 PyTorch 已正确安装并支持 CPU 模式。

    总之,在使用 PyTorch 进行 CPU 部署时,需要确保安装了适用于 CPU 的 PyTorch 版本,并根据实际需求和场景进行选择和配置。如果遇到问题或者异常情况,可以参考官方文档、社区资源或者其他相关的教程和资料进行解决。

    2023-06-10 20:21:33
    赞同 展开评论 打赏
  • 北京阿里云ACE会长

    将模型从 GPU 转移到 CPU 上需要进行一些修改和优化,以确保模型可以在 CPU 上运行,并保持良好的性能和效果。对于表格结构识别模型,也可以进行类似的修改和优化,使其支持 CPU 部署,而不需要强制转换为 CUDA 张量。

    具体来说,你可以考虑以下几个方面来优化模型,以支持 CPU 部署:

    修改模型的前向计算代码,以使用 CPU 上的张量运算。这可能需要对模型代码进行一些重构和修改,以确保模型的计算图可以在 CPU 上正确运行。

    使用 PyTorch 的 JIT 编译功能,将模型编译为 TorchScript 格式。这可以提高模型的性能,并使其可以在 CPU 上运行。

    修改模型的参数和配置,以适应 CPU 上的硬件环境。例如,你可以针对 CPU 特定的指令集进行优化,或者修改模型的批处理大小和并行度,以提高模型的性能。

    使用混合精度训练等技术,以减少模型的计算量和内存占用。这可以使得模型可以在较低的硬件配置上运行,并提高模型的训练速度和推理速度。

    总之,将表格结构识别模型从 GPU 转移到 CPU 上需要进行一些修改和优化。你可以参考 PyTorch 的文档和示例,了解如何在 CPU 上运行模型,并进行相关的优化和调整。

    2023-06-10 17:08:52
    赞同 展开评论 打赏
  • 您好!根据您的需求,您可以通过以下两种方式使该模型支持 CPU 部署:

    移除 CUDA 相关代码并使用 CPU 版本的 PyTorch

    在代码中将tensor.cuda()改为tensor.cpu()。除此之外,如果您的 PyTorch 安装是 CPU 版本的,代码就可以在 CPU 上运行了。如果您当前的 PyTorch 安装是 GPU 版本的,则需要进行以下操作,从而安装 CPU 版本:

    pip uninstall torch
    
    pip install torch==1.9.0+cpu torchvision==0.10.0+cpu -f https://download.pytorch.org/whl/cu111/torch_stable.html
    
    

    使用 ONNX 进行模型转化

    ONNX 是跨平台、高性能的深度学习模型表示和转换框架,使用 ONNX,您可以将 PyTorch 模型转化为 ONNX 格式,并在不同的硬件平台上运行。 以下是转化模型为 ONNX 格式的示例代码:```js

    import torch import torch.onnx as onnx import onnxruntime as ort from modelscope.models.cv.table_recognition.lineless_table_process import LinelessTableProcess

    初始化模型

    model = LinelessTableProcess() model.eval()

    创建示例输入

    inputs = torch.randn((1, 3, 640, 640))

    将模型转换为 ONNX 格式

    onnx_path = "lineless_table_process.onnx" onnx.export(model, inputs, onnx_path)

    在 ONNX 运行时加载模型

    sess = ort.InferenceSession(onnx_path)

    运行模型

    ort_inputs = {sess.get_inputs()[0].name: inputs.detach().numpy()} ort_outputs = sess.run(None, ort_inputs)

    打印模型输出

    print(ort_outputs)```

    在将模型转换为 ONNX 格式后,您可以使用 ONNX 运行时在 CPU 或其他硬件平台上运行模型。 希望这些信息对您有所帮助!

    2023-06-10 15:25:01
    赞同 展开评论 打赏
  • 全栈JAVA领域创作者

    根据您提供的信息,该模型中包含了对CUDA的依赖,并且要求使用GPU进行加速计算,因此如果您想要在CPU上运行该模型,就会出现"Torch not compiled with CUDA enabled"等错误。

    为了解决这个问题,您需要修改代码以将其转换为CPU版本。具体来说,您需要找到所有涉及CUDA操作的部分,并将其替换为适当的CPU实现。这可能需要一些时间和技术,取决于模型的复杂性和代码组织方式。

    另外,如果您想要在CPU上运行该模型,建议您先评估模型的性能,看看是否可以满足您的需求。由于该模型是针对表格结构识别任务进行优化的,因此在部署时可能需要考虑到CPU的计算能力较弱,可能会影响模型的准确性和效率。

    最后,请注意,在修改代码之前,一定要备份原始代码,并测试新的CPU版本是否仍然具有预期的功能和效果。

    2023-06-09 17:05:45
    赞同 展开评论 打赏
滑动查看更多

包含图像分类、图像生成、人体人脸识别、动作识别、目标分割、视频生成、卡通画、视觉评价、三维视觉等多个领域

相关电子书

更多
RDS SQL Server CPU高使用率性能优化 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载