不同系统搭建pytorch环境的通用细节:
1、切换环境要用 conda activate env_name
2、常用命令:
2.1 删除环境:conda remove -n env_name --all
2.2 添加环境:conda create -n env_name python=3.8
但是上述加入的环境变量,只有几个基础包,如果想要更多的话(例如numpy等),就在命令最后加一个anaconda 例如 conda create -n env_name python=3.8 anaconda
2.3 查询当前有几个环境:conda env list
2.4 检查conda是否安装完成:conda --version 或 python
2.5 安装/卸载第三方包:进入该环境后,conda install requests(包名) conda remove requests(包名) 或者: pip install requests pip uninstall requests
3、Anaconda有时候会崩,比如conda下载东西时提示各种failed,如果这些failed解决不了,可以考虑将所有终端关掉,然后重新打开终端再试试,可能就能恢复,因为有时候你进行的操作没有更新。
如果实在解决不了,①首先可以试试 conda clean -a 命令 清理缓存和不用的软件,如果还不行,②其次可以尝试卸载当前环境,如果还解决不了,③最后就卸载Anaconda软件后重新安装。具体卸载方法参考上文。
4、下载好pytorch后,通过 import torch 和 torch.cuda.is_available() 和 from torch.backends import cudnn (torch.backends.cudnn.is_available())检测是否安装成功pytorch和cudatoolkit(或者系统中的cuda)和cudnn
5、Anaconda添加清华源时,常规添加方式是可以下载的,如果报错的话,就换个网。① 特别的:连接手机热点时,遇到过sslerror错误,网上百度不到原因,后来换成校园网就可以下载了;② 此外下载完成后还遇到过checksumerror,同样百度不到原因,把Anaconda卸载后重新安装就好了(但一定要卸载干净)
6、检测cuda的版本: nvcc -V 或者 nvidia-smi
如果 nvcc -V 或者 nvidia-smi 检测不到cuda,但是你确实安装过,这时候应该是环境变量的问题,百度一下添加环境变量。
7、下面关于下载pytorch语句的解释:conda install pytorch==1.10.1 torchvision==0.11.2 torchaudio==0.10.1 cudatoolkit=11.3 -c pytorch -c conda-forge
-c pytorch 是指定下载的来源是pytorch ; -c conda-forge 是指定下载的来源是anaconda ; 如果在pytorch的来源没有这个包,那么就转去 anaconda下载(例如pytorch没有cudatoolkit这个包)。因此举一反三,如果我们想指定下载的来源,可以加上 “ -c 下载源 ”
cudatoolkit=11.3 这个语句,不一定非得有,如果在系统中有了CUDA,那么这个语句没有也可以,参照后面的知识点。另外补充:如果CUDA想用不同版本,可以在anaconda中下载不同版本cudatoolkit,下载好之后anaconda中的环境用的就是cudatoolkit,而不是系统中的CUDA,但是如果你下载失败,比如说cudatoolkit下到一半崩了,timeout超时了(或者解析错误了,或者系统警告waring了),这么这时候系统中的CUDA是不起作用的,你torch.cuda.is_available()是会报错的,因为此时用的是你anaconda环境中的cudatoolkit,而这个环境中的cudatoolkit是错误的,这时你只有把anaconda环境中的cudatoolkit卸载干净才会使用系统中的cuda。所以,如果系统中已经有了cuda,就可以这么下载:conda install pytorch==1.10.1 torchvision==0.11.2 torchaudio==0.10.1 -c pytorch
8、有些版本的Anaconda软件,使用 conda install 时不能使用代理(VPN),不知道这里面的原因。但是亲测过Anaconda 2020.07版本和Anaconda 2021.11月对待VPN是不同的,前者可以使用代理,后者不行。如果遇到 ProxyError: Conda cannot proceed due to an error in your proxy configuration 错误原因,你可以选择关闭代理,继续使用Anaconda,但是个人建议换个Anaconda吧……因为VPN下得快啊。
9、运行 pip install requests 报错, ERROR: Exception 如下。 这种情况是没有关掉VPN,关了就可以了
10、conda安装报错后,可以用pip命令安装,例如某个包下不下来(比如下载matplotlib时,conda下不了,就用pip下载);
11、一下子下载多个安装包时,有些包没有下载成功,再用原命令重新下一遍(pytorch或者cudatoolkit太大,timeout了),如果重新下之后又报错了,或者警告了(警告内容大多数是需要你手动删除某个文件,这时候你 import torch 是没有这个模块的),可以用 conda clean -a 清除掉,然后重新下。
12、想用Pycharm的终端,但提示 Cannot open Local Terminal Failed to start [powershell.exe] ,这是因为控制台的路径不对,在 file→settings→Tools→Terminal→Shell path 中把值设置为 电脑系统 powershell.exe 文件的全路径。
针对linux系统搭建pytorch环境的一些细节:
1、linux系统想要打开Anaconda 需要先进入conda的base环境,然后在命令行输入anaconda-navigator 打开Anaconda软件
2、想要打开jupyter,首先进入conda 环境,然后输入 jupyter notebook 可以打开
3、linux系统卸载Anaconda,注意要卸载干净,否则重装后可能还会崩;在用户文件夹中 rm -rf *conda* 有关的所有内容,特别是有一些隐藏文件,例如 .condarc .conda 可以通过 ls -a 查看,然后一并删除。再重新下载即可。
这里需要提一下,卸载时.bashrc里面的环境变量可以不删,只要你下次还用默认安装路径就可以
4、conda install 时可以打开linux系统工具包中的流量管理工具,查看下载速度。
5、可以在系统中安装cudnn,也可以在anaconda的环境中安装cudnn。
在anaconda中安装cudnn的语句: conda install cudnn
在系统中安装cudnn:
(1)nvidia官网下载,选择 Cudnn library for linux
(2)解压包: tar -xzvf pack_name
(3)执行安装,(拷贝头文件和库文件并给予权限)
sudo cp cuda/include/* /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
(4)验证安装是否成功
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
6、同样的,可以在系统中安装cuda,也可以在anaconda中安装cudatoolkit (相关细节见文末)。
个人理解 / 知识点:
如果在系统中安装了cuda,那么即使conda环境中没有安装cudatookit,也可以使用cuda(亲测有效),不过这时候的cuda是系统中的;如果在conda环境中安装了cudatoolkit,这时候使用的就是conda环境中的cudatoolkit了。
如果conda环境中没有cudatoolkit,那么系统中的cuda版本一定要大于等于pytorch所需的cuda的版本。(补充:cuda驱动可以向下兼容,所以一直保持最新就行,例如torch需要11.1版本的cuda,那么系统中是11.3版本的cuda是完全可以用的)
如果在conda中安装cudatoolkit,不用担心版本问题,因为conda会自动安装相匹配的版本。
因此,在conda里面离线安装pytorch,是完全可以的,尽管在conda里没法离线安装cudatoolkit(或许也可以,但我没研究过),因为只要系统中装有高版本的cuda,conda就可以只安装pytorch。离线安装方法、pytorch离线安装网站
个人认为,只需要在系统中安装高版本cuda即可,因为cuda只需要选择高版本,就可以适配一切torch版本。虽然conda作用是隔离环境,但是隔离的是python环境和pytorch环境,而不管什么版本的pytorch和python,安装最高版本的cuda都可以运行。因此可以将cuda固定在系统中,只改变conda里面的torch版本和python版本。
此外,除了可以离线安装 pytorch,还可以离线/在线安装 torchtext(用于nlp)、torchaudio(用于音频)、torchvision(用于视频)等等等