stylegan3:Setting up PyTorch plugin “bias_act_plugin“... Failed或“upfirdn2d_plugin“... Failed

2023-05-16

stylegan3:Setting up PyTorch plugin "bias_act_plugin"... Failed或Setting up PyTorch plugin "upfirdn2d_plugin"... Failed

  • 1.软件环境⚙️
  • 2.问题描述🔍
  • 3.解决方法🐡
    • 3.1.安装完整的`CUDA toolkit`、`ninja`和`GCC`
    • 3.2.将`cuda`库文件链接到正确位置
    • 3.3.清理历史编译生成的错误文件并重新运行代码
  • 4.结果预览🤔

1.软件环境⚙️

Windows10 教育版64位
Python 3.7.13
WSL 2 Ubuntu 20.04
Pytorch 1.13.1
CUDA 11.7
GPU RTX4090+RTX6000

2.问题描述🔍

今天想用新加的RTX4090跑一下stylegan3,但是却疯狂报错:

Setting up PyTorch plugin "bias_act_plugin"... Failed!
/home/jayce/project/code/Python/Git/MAT/torch_utils/ops/bias_act.py:50: UserWarning: Failed to build CUDA kernels for bias_act. Falling back to slow reference implementation. Details:
Traceback (most recent call last):
  File "/home/jayce/anaconda3/envs/cuda118+py37/lib/python3.7/site-packages/torch/utils/cpp_extension.py", line 1906, in _run_ninja_build
    env=env)
  File "/home/jayce/anaconda3/envs/cuda118+py37/lib/python3.7/subprocess.py", line 512, in run
    output=stdout, stderr=stderr)
subprocess.CalledProcessError: Command '['ninja', '-v']' returned non-zero exit status 1.
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "/home/jayce/project/code/Python/Git/MAT/torch_utils/ops/bias_act.py", line 48, in _init
    _plugin = custom_ops.get_plugin('bias_act_plugin', sources=sources, extra_cuda_cflags=['--use_fast_math'])
  File "/home/jayce/project/code/Python/Git/MAT/torch_utils/custom_ops.py", line 110, in get_plugin
    torch.utils.cpp_extension.load(name=module_name, verbose=verbose_build, sources=sources, **build_kwargs)
  File "/home/jayce/anaconda3/envs/cuda118+py37/lib/python3.7/site-packages/torch/utils/cpp_extension.py", line 1296, in load
    keep_intermediates=keep_intermediates)
  File "/home/jayce/anaconda3/envs/cuda118+py37/lib/python3.7/site-packages/torch/utils/cpp_extension.py", line 1518, in _jit_compile
    is_standalone=is_standalone)
  File "/home/jayce/anaconda3/envs/cuda118+py37/lib/python3.7/site-packages/torch/utils/cpp_extension.py", line 1626, in _write_ninja_file_and_build_library
    error_prefix=f"Error building extension '{name}'")
  File "/home/jayce/anaconda3/envs/cuda118+py37/lib/python3.7/site-packages/torch/utils/cpp_extension.py", line 1916, in _run_ninja_build
    raise RuntimeError(message) from e
RuntimeError: Error building extension 'bias_act_plugin': [1/3] /home/jayce/anaconda3/envs/cuda118+py37/bin/nvcc  -DTORCH_EXTENSION_NAME=bias_act_plugin -DTORCH_API_INCLUDE_EXTENSION_H -DPYBIND11_COMPILER_TYPE=\"_gcc\" -DPYBIND11_STDLIB=\"_libstdcpp\" -DPYBIND11_BUILD_ABI=\"_cxxabi1011\" -isystem /home/jayce/anaconda3/envs/cuda118+py37/lib/python3.7/site-packages/torch/include -isystem /home/jayce/anaconda3/envs/cuda118+py37/lib/python3.7/site-packages/torch/include/torch/csrc/api/include -isystem /home/jayce/anaconda3/envs/cuda118+py37/lib/python3.7/site-packages/torch/include/TH -isystem /home/jayce/anaconda3/envs/cuda118+py37/lib/python3.7/site-packages/torch/include/THC -isystem /home/jayce/anaconda3/envs/cuda118+py37/include -isystem /home/jayce/anaconda3/envs/cuda118+py37/include/python3.7m -D_GLIBCXX_USE_CXX11_ABI=0 -D__CUDA_NO_HALF_OPERATORS__ -D__CUDA_NO_HALF_CONVERSIONS__ -D__CUDA_NO_BFLOAT16_CONVERSIONS__ -D__CUDA_NO_HALF2_OPERATORS__ --expt-relaxed-constexpr -gencode=arch=compute_75,code=sm_75 -gencode=arch=compute_86,code=compute_86 -gencode=arch=compute_86,code=sm_86 --compiler-options '-fPIC' --use_fast_math -std=c++14 -c /home/jayce/project/code/Python/Git/MAT/torch_utils/ops/bias_act.cu -o bias_act.cuda.o 
[2/3] c++ -MMD -MF bias_act.o.d -DTORCH_EXTENSION_NAME=bias_act_plugin -DTORCH_API_INCLUDE_EXTENSION_H -DPYBIND11_COMPILER_TYPE=\"_gcc\" -DPYBIND11_STDLIB=\"_libstdcpp\" -DPYBIND11_BUILD_ABI=\"_cxxabi1011\" -isystem /home/jayce/anaconda3/envs/cuda118+py37/lib/python3.7/site-packages/torch/include -isystem /home/jayce/anaconda3/envs/cuda118+py37/lib/python3.7/site-packages/torch/include/torch/csrc/api/include -isystem /home/jayce/anaconda3/envs/cuda118+py37/lib/python3.7/site-packages/torch/include/TH -isystem /home/jayce/anaconda3/envs/cuda118+py37/lib/python3.7/site-packages/torch/include/THC -isystem /home/jayce/anaconda3/envs/cuda118+py37/include -isystem /home/jayce/anaconda3/envs/cuda118+py37/include/python3.7m -D_GLIBCXX_USE_CXX11_ABI=0 -fPIC -std=c++14 -c /home/jayce/project/code/Python/Git/MAT/torch_utils/ops/bias_act.cpp -o bias_act.o 
[3/3] c++ bias_act.o bias_act.cuda.o -shared -L/home/jayce/anaconda3/envs/cuda118+py37/lib/python3.7/site-packages/torch/lib -lc10 -lc10_cuda -ltorch_cpu -ltorch_cuda_cu -ltorch_cuda_cpp -ltorch -ltorch_python -L/home/jayce/anaconda3/envs/cuda118+py37/lib64 -lcudart -o bias_act_plugin.so
FAILED: bias_act_plugin.so 
c++ bias_act.o bias_act.cuda.o -shared -L/home/jayce/anaconda3/envs/cuda118+py37/lib/python3.7/site-packages/torch/lib -lc10 -lc10_cuda -ltorch_cpu -ltorch_cuda_cu -ltorch_cuda_cpp -ltorch -ltorch_python -L/home/jayce/anaconda3/envs/cuda118+py37/lib64 -lcudart -o bias_act_plugin.so
/usr/bin/ld: 找不到 -lcudart
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
  warnings.warn('Failed to build CUDA kernels for bias_act. Falling back to slow reference implementation. Details:\n\n' + traceback.format_exc())

这是因为官方推荐的Pytorch 1.7.1 版本其实没办法是支持RTX4090,如下为官方推荐的cuda环境:

Python 3.7
PyTorch 1.7.1
Cuda 11.0

会报错:ValueError: Unknown CUDA arch (8.9) or GPU not supported

Traceback (most recent call last):
  File "/home/jayce/project/code/Python/Git/MAT/torch_utils/ops/bias_act.py", line 48, in _init
    _plugin = custom_ops.get_plugin('bias_act_plugin', sources=sources, extra_cuda_cflags=['--use_fast_math'])
  File "/home/jayce/project/code/Python/Git/MAT/torch_utils/custom_ops.py", line 110, in get_plugin
    torch.utils.cpp_extension.load(name=module_name, verbose=verbose_build, sources=sources, **build_kwargs)
  File "/home/jayce/anaconda3/envs/cuda11.0+py37/lib/python3.7/site-packages/torch/utils/cpp_extension.py", line 980, in load
    keep_intermediates=keep_intermediates)
  File "/home/jayce/anaconda3/envs/cuda11.0+py37/lib/python3.7/site-packages/torch/utils/cpp_extension.py", line 1185, in _jit_compile
    with_cuda=with_cuda)
  File "/home/jayce/anaconda3/envs/cuda11.0+py37/lib/python3.7/site-packages/torch/utils/cpp_extension.py", line 1276, in _write_ninja_file_and_build_library
    with_cuda=with_cuda)
  File "/home/jayce/anaconda3/envs/cuda11.0+py37/lib/python3.7/site-packages/torch/utils/cpp_extension.py", line 1602, in _write_ninja_file_to_build_library
    cuda_flags = common_cflags + COMMON_NVCC_FLAGS + _get_cuda_arch_flags()
  File "/home/jayce/anaconda3/envs/cuda11.0+py37/lib/python3.7/site-packages/torch/utils/cpp_extension.py", line 1421, in _get_cuda_arch_flags
    raise ValueError("Unknown CUDA arch ({}) or GPU not supported".format(arch))
ValueError: Unknown CUDA arch (8.9) or GPU not supported

可以看到,在自己编译自定义的算子,最高支持到了Ampere30系显卡,并不支持40系的Ada显卡:
在这里插入图片描述
虽然CudaKernels没法构建,但其实还是可以运行并得到结果的,只不过速度就不尽人意了,程序也会提示你:

UserWarning: Failed to build CUDA kernels for bias_act. Falling back to slow reference implementation.

所以我们直接升级到目前最新的Pytorch最新的的Stable版本1.13.1

Python 3.7
PyTorch 1.13.1
Cuda 11.7

可以在torch/utils/cpp_extension.py中看到已经支持40系以及更牛逼的Hopper计算卡:
在这里插入图片描述

这个时候就意味着你的系统有多个cuda环境了,这种时候就会因为环境太多导致编译的时候出错,最终出现了题目中的报错!
那这个时候又该怎么办呢?
在这里插入图片描述

3.解决方法🐡

3.1.安装完整的CUDA toolkitninjaGCC

在解决这个问题之前,需要装一下完整的Cuda toolkit(如我就是单独安装Cuda 11.7),因为Pytorch自带的Cuda其实不满足我们自己编译额外算子的需求,两者的具体区别见我之前的文章电脑装了pytorch没有安装cuda,nvcc -V没反应,但能正常使用gpu,官方也给出了提示:
在这里插入图片描述

3.2.将cuda库文件链接到正确位置

仔细查看我们的报错,发现是ninja在编译内核的时候报错了:

subprocess.CalledProcessError: Command '['ninja', '-v']' returned non-zero exit status 1.

那为什么没用4090的时候,ninja编译不报错呢?大概率是因为你的cuda相关的变量较为单一,Pytorch正确唤醒了合适的cuda环境变量,这点官方也有讲:
在这里插入图片描述

而我们现在电脑上面有2cuda,导致程序导入变量混乱,最后就出错了!
因此注意找cuda相关的变量,发现有一个报错:

/usr/bin/ld: 找不到 -lcudart

-lcudart是什么呢?
这种一般是cuda相关的库文件,除了-lcudart,一般还有其他cannot find -lxxx ,它对应的库文件的命名规则是:lib+库名(即xxx)+.so,如-lcudart对应着libcudart.so
因此,我们直接使用locate命令定位一下libcudart.so,注意这里选择的是你想要的那个cuda版本,我们这里是11.7

在这里插入图片描述

WSL 2用户安装locate有问题的可以看我另一篇博客: WSL2安装locate命令一直显示Initializing mlocate database; this may take some
time,进度一直卡在60%):

直接将其连接到正确位置即可:

sudo ln -s /usr/local/cuda-11.7/targets/x86_64-linux/lib/libcudart.so /usr/lib/libcudart.so

其实使用下面这个命令其实要好一点,它两都指向libcudart.so.11.0
在这里插入图片描述

因此效果是一样的,但是下面这个命令更灵活,因为你设置CUDA_HOME变量的时候cuda会指向具体的cuda-x.y,如我这边指向的是11.7
在这里插入图片描述
因此我们直接选择指定/usr/local/cuda/lib64/libcudart.so

sudo ln -s /usr/local/cuda/lib64/libcudart.so /usr/lib/libcudart.so

PSlnlinux中一个非常重要命令,它的功能是为某一个文件或目录在另外一个位置建立一个同步的链接,类似Windows下的超级链接。

这个命令最常用的参数是-s,具体用法是: bash sudo ln -s 源文件 目标文件

3.3.清理历史编译生成的错误文件并重新运行代码

直接删除/home/jayce/.cache/torch_extensions文件夹,这里面是之前编译生成的文件:
在这里插入图片描述
然后再次运行代码即可!

4.结果预览🤔

再次运行代码再也不报错啦:

在这里插入图片描述

Setting up PyTorch plugin "bias_act_plugin"... Failed
Setting up PyTorch plugin "upfirdn2d_plugin"... Failed

已经变为:

Setting up PyTorch plugin "bias_act_plugin"... Done.
Setting up PyTorch plugin "upfirdn2d_plugin"... Done.


渣男!都看到这里了,还不赶紧点赞评论收藏走一波?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

stylegan3:Setting up PyTorch plugin “bias_act_plugin“... Failed或“upfirdn2d_plugin“... Failed 的相关文章

  • Pytorch 说 CUDA 不可用(在 Ubuntu 上)

    我正在尝试在我拥有的笔记本电脑上运行 Pytorch 这是一个较旧的型号 但它确实有 Nvidia 显卡 我意识到这可能不足以实现真正的机器学习 但我正在尝试这样做 以便我可以了解安装 CUDA 的过程 我已按照上面的步骤操作安装指南 ht
  • PyTorch 中的截断反向传播(代码检查)

    我正在尝试在 PyTorch 中实现随时间截断的反向传播 对于以下简单情况K1 K2 我下面有一个实现可以产生合理的输出 但我只是想确保它是正确的 当我在网上查找 TBTT 的 PyTorch 示例时 它们在分离隐藏状态 将梯度归零以及这些
  • 推导 pytorch 网络的结构

    对于我的用例 我需要能够采用 pytorch 模块并解释模块中的层序列 以便我可以以某种文件格式在层之间创建 连接 现在假设我有一个简单的模块 如下所示 class mymodel nn Module def init self input
  • Pytorch 分析器显示两个不同网络的卷积平均执行时间不同

    我有两个网络 我正在对它们进行分析以查看哪些操作占用了大部分时间 我注意到CUDA time avg为了aten conv2d不同网络的操作有所不同 这也增加了一个数量级 在我的第一个网络中 它是22us 而对于第二个网络则是3ms 我的第
  • Cuda和pytorch内存使用情况

    我在用Cuda and Pytorch 1 4 0 当我尝试增加batch size 我遇到以下错误 CUDA out of memory Tried to allocate 20 00 MiB GPU 0 4 00 GiB total c
  • 如何使用 torch.stack?

    我该如何使用torch stack将两个张量与形状堆叠a shape 2 3 4 and b shape 2 3 没有就地操作 堆叠需要相同数量的维度 一种方法是松开并堆叠 例如 a size 2 3 4 b size 2 3 b torc
  • pytorch通过易失性变量反向传播错误

    我试图通过多次向后传递迭代来运行它并在每个步骤更新输入 从而最小化相对于某个目标的一些输入 第一遍运行成功 但在第二遍时出现以下错误 RuntimeError element 0 of variables tuple is volatile
  • 在pytorch中使用tensorboard,但得到空白页面?

    我在pytorch 1 3 1中使用tensorboard 并且我在张量板的 pytorch 文档 https pytorch org docs stable tensorboard html 运行后tensorboard logdir r
  • Model() 获得参数“nr_class”的多个值 - SpaCy 多分类模型(BERT 集成)

    您好 我正在致力于使用新的 SpaCy 模型实现多分类模型 5 类 en pytt bertbaseuncased lg 新管道的代码在这里 nlp spacy load en pytt bertbaseuncased lg textcat
  • pytorch grad 在 .backward() 之后为 None

    我刚刚安装火炬 1 0 0 on Python 3 7 2 macOS 并尝试tutorial https pytorch org tutorials beginner blitz autograd tutorial html sphx g
  • torch.mm、torch.matmul 和 torch.mul 有什么区别?

    阅读完 pytorch 文档后 我仍然需要帮助来理解之间的区别torch mm torch matmul and torch mul 由于我不完全理解它们 所以我无法简明地解释这一点 B torch tensor 1 1207 0 3137
  • LSTM 错误:AttributeError:“tuple”对象没有属性“dim”

    我有以下代码 import torch import torch nn as nn model nn Sequential nn LSTM 300 300 nn Linear 300 100 nn ReLU nn Linear 300 7
  • 在非单一维度 1 处,张量 a (2) 的大小必须与张量 b (39) 的大小匹配

    这是我第一次从事文本分类工作 我正在使用 CamemBert 进行二进制文本分类 使用 fast bert 库 该库主要受到 fastai 的启发 当我运行下面的代码时 from fast bert data cls import Bert
  • 从打包序列中获取每个序列的最后一项

    我试图通过 GRU 放置打包和填充的序列 并检索每个序列最后一项的输出 当然我的意思不是 1项目 但实际上是最后一个 未填充的项目 我们预先知道序列的长度 因此应该很容易为每个序列提取length 1 item 我尝试了以下方法 impor
  • 下载变压器模型以供离线使用

    我有一个训练有素的 Transformer NER 模型 我想在未连接到互联网的机器上使用它 加载此类模型时 当前会将缓存文件下载到 cache 文件夹 要离线加载并运行模型 需要将 cache 文件夹中的文件复制到离线机器上 然而 这些文
  • 如何更新 PyTorch 中神经网络的参数?

    假设我想将神经网络的所有参数相乘PyTorch 继承自的类的实例torch nn Module http pytorch org docs master nn html torch nn Module by 0 9 我该怎么做呢 Let n
  • 如何使用pytorch构建多任务DNN,例如超过100个任务?

    下面是使用 pytorch 为两个回归任务构建 DNN 的示例代码 这forward函数返回两个输出 x1 x2 用于大量回归 分类任务的网络怎么样 例如 100 或 1000 个输出 对所有输出 例如 x1 x2 x100 进行硬编码绝对
  • pytorch 的 IDE 自动完成

    我正在使用 Visual Studio 代码 最近尝试了风筝 这两者似乎都没有 pytorch 的自动完成功能 这些工具可以吗 如果没有 有人可以推荐一个可以的编辑器吗 谢谢你 使用Pycharmhttps www jetbrains co
  • Pytorch“展开”等价于 Tensorflow [重复]

    这个问题在这里已经有答案了 假设我有大小为 50 50 的灰度图像 在本例中批量大小为 2 并且我使用 Pytorch Unfold 函数 如下所示 import numpy as np from torch import nn from
  • 如何从已安装的云端硬盘文件夹中永久删除?

    我编写了一个脚本 在每次迭代后将我的模型和训练示例上传到 Google Drive 以防发生崩溃或任何阻止笔记本运行的情况 如下所示 drive path drive My Drive Colab Notebooks models if p

随机推荐