IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> windows下styleGAN2和styleGAN3编译配置bug -> 正文阅读

[Python知识库]windows下styleGAN2和styleGAN3编译配置bug

styleGAN的extension报错解决

配置

**styleGAN2和styleGAN3一直跑不出来的问题“no module named fused”,或者是“filtered_lrelu_plugin setup failed”,原因在于它们的模型使用了torch extension,例如styleGAN2下的models文件里面有个op,里面有C++代码,这部分在运行时python会调用ninja来编译。对于styleGAN2,有人介绍过一种方法,不需要配环境,只需要把fused_at.py和upfirdn2d.py全部修改为python版本的即可,在styleGAN2的官方仓库的issue里有提供,也可以在这位博主这里找到
在这里插入图片描述
如果不改上面的,或者遇到了一些其它情况下的问题,可能可以参考本文方法解决,不保证有效性,本文的环境配置为

  • pytorch=1.8.0
  • cuda=11.4
  • windows11
  • ninja 1.10.2

预先安装

  1. 检查cuda是否安装好,例如在CMD输入NVCC -V, nvidia-smi能出现正常的字幕。cuda的安装参考其它部分
  2. 检查VS是否是2017版,最好是这个版本,之前笔者安装了VS2019,浪费了2个下午也没有配置成功。需要首先安装VS2017 community版,只需要安装C++桌面开发的库,并且全部使用默认路径(在C盘,program file(x86)里面)。并且配置VS的环境变量Path、LIB和INCLUDE,它们的内容可能是:
    ①Path=C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\Hostx64\x64;
    ②LIB=C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\lib\x64;
    ③INCLUDE=C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\include
  3. 将VS的语言包安装为英文版,否则会出现离奇的错误,UnicodeError,XXX can’t XXX,具体做法是找到VS的installer,里面语言包。完成之后在CMD输入cl,返回的都是英文,这样就可以UTF-8解码了

可能出现的报错情况

  1. 编译[‘ninja’,’-v’] return 1—>如果是styleGAN2报错,这里面需要找到torch的extention这个报错的文件,笔者的是anaconda环境torch18,所以在anaconda3\envs\torch18\Lib\site-packages\torch\utils目录下,找到cpp_extension.py,找到其中的函数_run_ninja_build,下面有一行command = [‘ninja’, ‘-v’],如果把’-v’改成’–version’,可以解决一种情况下的报错,表示的意思是显示版本,先改完保存,再运行一次styleGAN试试,可能就成了【如果没有成功,记得改回来,’-v’表示的是verbose的意思】
  2. UnicodeError, UTF-8 can’t XXXX。有人说要把cpp_extension.py里面的match = re.search(r’(\d+).(\d+).(\d+)’, compiler_info.decode().strip())这里,compiler_info(也就是cl返回的信息,VS默认返回中文,UTF-8解码错误),所以修改为空格gbk,也就是decode(‘ gbk’)用gbk编码来解码中文,会发现运行styleGAN2是warning,styleGAN3是error,在filtered_lrelu_plugin进行setup的时候直接gbk can’t decodeXXX,所以一定要做好预先安装那里,VS的语言是英文,这个错误不需要修改cpp_extension.py
  3. 在styleGAN3中报错[‘ninja’,’-v’] return 1,这个略微复杂,报错非常长,但是在pycharm里面,或者jupyter notebook的报错信息里面搜索’error’,会发现实际上报错的信息是说,filtered_lrelu.cpp代码里面出现了if constexpr这个用法,这个用法是C++17以后才可以用,所以问题变为让ninja调用C++17,也就是cl要使用C++17的规范来编译。修改方法为,修改filtered_lrelu.py这个文件,在里面搜索get_plugin,找到这个函数,加上extra_cflags=[’/std:c++17’],指定使用C++17编译,对于另外两个extension,bias_act和upfirdn2d也要找到get_plugin进行修改,修改完应该就OK了!
    在这里插入图片描述
  4. 运行代码在ninja编译filtered_lrelu、fused或者upfirdn2d的时候,过了2分钟仍然卡在同一个位置,“死锁”。这是由于cpp_extension.py里面创建了一个lock,这个lock的位置是在torch的缓存目录下,windows中,找到个人用户目录,例如自己电脑上登录的用户名为username,这个目录在C:\Users\username\AppData\Local\torch_extensions\torch_extensions\Cache,Cache里面打开就会发现一系列文件,可能文件夹的名字含有…RTX…,再点开这个文件夹,如果是styleGAN3,看见的是下图,挨个点开看,里面是否有一个文件名叫’lock’,有的话,删除该文件,如果删不动说在占用,就点击重试,多点几次重试之后,还删不掉,点击取消,这时候发现程序开始动了…每次运行可能这三个文件夹里面都会或者都不会出现’lock’,需要经常检查
    在这里插入图片描述
    在这里插入图片描述

其它

现在在windows上调试ok了,linux之后更
在上面卡了三四天,浪费了很多时间,希望大家都能一次成功!

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-03-11 22:09:03  更:2022-03-11 22:10:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 21:45:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码