Conda 配置虚拟 pytorch 环境 和 Tensorflow 环境

参考 https://blog.csdn.net/weixin_42401701/article/details/80820778 和  https://www.cnblogs.com/lllcccddd/p/10661966.html

一些相关的命令

  • conda update -n base conda # 更新 conda
  • conda config --show channels # 显示当前下载源
  • conda config --set show_channel_urls yes  # 下载时显示下载源
  • conda create --name Pytorch1.3 python=3.7  # 创建新环境
  • conda create --name Pytorch1.3 --clone base # 基于已有环境 创建新环境
    • environment location: /home/guixj/anaconda3/envs/Pytorch1.3 # 提示的环境安装位置
  • conda install --name base beautifulsoup4 你必须告诉conda你要安装环境的名字( --name base)否则它将会被安装到当前环境中(https://blog.csdn.net/yimingsilence/article/details/79388205
  • conda config --show 显示当前 conda 的 config
  • conda env list 会列出所有的环境,当前环境前面有*符号
  • conda activate Pytorch1.3  # 切换环境 to activate this environment
  • conda deactivate # to deactivate this environment 
  • conda env remove -n env-name #删除指定的环境 https://www.jianshu.com/p/777ea4b8d4e2

有空要读读 conda 的官方说明文档(https://conda.io/projects/conda/en/latest/user-guide/getting-started.html

 

注意:换用清华源 https://cloud.tencent.com/developer/article/1572996 :(下面有记录踩坑)

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes

 https 和 http 可能存在一些不同,一些情况下在 windows 上可能要切换成 http, 参照   https://blog.csdn.net/u010099177/article/details/93220251

 https 的 "s" 表示安全。

 

 

下面是一些踩过的坑:

1. base 和 Pytorch1.3 两个环境,有时 Conda activate Pytorch1.3 显示错误,这时先 source activate, 进入 base 环境,再 conda deactivate, 再 conda activate Pytorch1.3 便可以了。https://blog.csdn.net/qq_33825817/article/details/88959785

 

2. Pytorch1.3环境装的是 pytorch1.3的版本,然后打开python import torch 提示 libmkl_intel_lp64.so 一个动态链接库文件找不到,参照博客 https://www.cnblogs.com/denny402/p/10848506.html ,使用

sudo find /home -name libmkl_intel_lp64.so

 但我的情况下显示两个

➜  ~ sudo find /home -name libmkl_intel_lp64.so
[sudo] password for guixj: 
/home/guixj/anaconda3/pkgs/mkl-2019.3-199/lib/libmkl_intel_lp64.so
/home/guixj/anaconda3/lib/libmkl_intel_lp64.so

第一次使用了 /home/guixj/anaconda3/lib/libmkl_intel_lp64.so,将

export LD_LIBRARY_PATH=/home/guixj/anaconda3/lib:$LD_LIBRARY_PATH

导入到 .zshrc 文件,导致打开 python import torch print(torch.__verison__) 仍然显示先前1.0.1 的版本

然后重写.zshrc文件,使用 export LD_LIBRARY_PATH=home/guixj/anaconda3/pkgs/mkl-2019.3-199/lib:$LD_LIBRARY_PATH。

 

再导入时,显示 numpy 未安装 https://blog.csdn.net/Sunny_Future/article/details/85530763 

ImportError: numpy.core.multiarray failed to import

安装 numpy 后, 终于导入的 pytorch 是 Pytorch1.3。

 

3. 另外有一个问题,用 conda 离线包安(.tar.bz) 装新的 python 虚拟环境,找不到 anaconda 之前的包,例如 numpy, pillow 。

如果只有一个 base 环境,先离线装 anaconda, 再离线装 pytorch, torchvision 没有问题。
但是,如果安装新的虚拟环境,用离线包安装 pytorch, torchvision,会导致很多依赖的包没有安装;
而用 conda install pytorch 在线装,可以自动装上依赖的包。
最后不同版本的 pytorch 和 torchvision 需要分别处理。 可以不 uninstall,  而直接 install 新的包,会直接覆盖更新,
例如 conda install torchvision=0.4.2 导致了 pytorch 版本也进行了更新

 

4. 为了更新torchvision版本,远程机器用离线包安装 pytorch1.3 + torchvision0.4.2,没有先卸载 pytorch1.0, 而是直接覆盖安装,然后显示

Python 3.7.3 (default, Mar 27 2019, 22:11:17) 
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/root/anaconda3/lib/python3.7/site-packages/torch/__init__.py", line 81, in <module>
    from torch._C import *
ImportError: libnvToolsExt.so.1: cannot open shared object file: No such file or directory
>>> import torchvision
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/root/anaconda3/lib/python3.7/site-packages/torchvision/__init__.py", line 3, in <module>
    from torchvision import models
  File "/root/anaconda3/lib/python3.7/site-packages/torchvision/models/__init__.py", line 1, in <module>
    from .alexnet import *
  File "/root/anaconda3/lib/python3.7/site-packages/torchvision/models/alexnet.py", line 1, in <module>
    import torch
  File "/root/anaconda3/lib/python3.7/site-packages/torch/__init__.py", line 81, in <module>
    from torch._C import *
ImportError: libnvToolsExt.so.1: cannot open shared object file: No such file or directory

 

个人猜测是当前 cudnn 的版本不对,使用 conda list  显示

pytorch                   1.3.0           py3.7_cuda10.0.130_cudnn7.6.3_0    <unknown>
torchvision               0.4.2                py37_cu100    <unknown>

但换成 cudnn7.6.3 后仍未解决。

google 了一下,发现是个bug, 按照pytorch 官方人员的说法,可以使用 conda install cudatoolkit 修复   https://github.com/pytorch/pytorch/issues/5905#issuecomment-374600969

但没有成功,反倒是把 python 给弄崩溃了:

root@ubuntu:~/guixj# python
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Fatal Python error: initfsencoding: Unable to get the locale encoding
ModuleNotFoundError: No module named 'encodings'

Current thread 0x00007f0a2126c740 (most recent call first):
Aborted (core dumped)

 

只好卸载了 anaconda https://blog.csdn.net/qq_37764129/article/details/100000064

然后重新安装anaconda 和 pytorch torchvision, 但是仍有上述问题。然后看到了一个博客

https://devtalk.nvidia.com/default/topic/1067246/how-can-i-install-the-pytorch-/?offset=2

export PATH="/usr/local/cuda-10.0/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda-10.0/lib64:LD_LIBRARY_PATH"
最终问题解决了。原来这个问题其实是由于安装 cuda 时没有把地址写进去导致的。这个非常关键。


2019.12.3

将远程服务器的pytorch 和 torchvision 的版本更新后,发现原来可以在 pytorch1.0.1 和 torchvision0.2.1 上运行的代码居然报错,显示 inception-resnetv2 有问题


==> creating Inception_RenetV2
    Total params: 54.38M

Epoch: [1 | 1024] LR: 0.001000
Traceback (most recent call last):
  File "main.py", line 266, in <module>
    MixMatch_main(all_data_name, args.ratio, num)
  File "/root/guixj/2019.11.23WebVision_dataset/MixMatch_train_WebVision.py", line 168, in MixMatch_main
    train_loss, train_loss_x, train_loss_u = train(labeled_trainloader, unlabeled_trainloader, model, optimizer, ema_optimizer, train_criterion, epoch, use_cuda)
  File "/root/guixj/2019.11.23WebVision_dataset/MixMatch_train_WebVision.py", line 264, in train
    outputs_u = model(inputs_u)
  File "/root/anaconda3/lib/python3.7/site-packages/torch/nn/modules/module.py", line 541, in __call__
    result = self.forward(*input, **kwargs)
  File "/root/guixj/2019.11.23WebVision_dataset/Inception_resnetV2.py", line 332, in forward
    x = self.logits(x)
  File "/root/guixj/2019.11.23WebVision_dataset/Inception_resnetV2.py", line 325, in logits
    x = self.avgpool_1a(features)
  File "/root/anaconda3/lib/python3.7/site-packages/torch/nn/modules/module.py", line 541, in __call__
    result = self.forward(*input, **kwargs)
  File "/root/anaconda3/lib/python3.7/site-packages/torch/nn/modules/pooling.py", line 554, in forward
    self.padding, self.ceil_mode, self.count_include_pad, self.divisor_override)
RuntimeError: Given input size: (1536x5x5). Calculated output size: (1536x0x0). Output size is too small

然后再次覆盖安装为原来的版本,发现又一次好了。

 

2020.6.20

  当前电脑的 pytorch 环境的版本是:cuda10.0 + py3.7 + pytorch1.0.0 +  torchvision 0.2.1

  由于torchvision 0.3 之后 torchvision.dataset.CIFAR10 和 CIFAR100 的代码发生了改变(增加了 .data, .targets), 一些代码无法在 torchvision 0.2.1上运行,例如 mixmatch 的代码 和 LDAM 的代码。为了向后兼容,决定使用最新的代码写法,因此准备新安装一个环境。

做法如下:

  1. 当前基础环境是:cuda10.0 + python 3.7。
  2. 首先 copy 原环境到一个新环境中:conda create --name Pytorch1.4 --clone base #
  3. 尝试使用类似官网的一行命令安装,没有成功,似乎不好指定 cuda 版本和 pytroch、torchvision 的版本(https://pytorch.org/get-started/previous-versions/)。
  4. copy 原环境后导致使用最新的命令安装,一直报错,显示不兼容。


5. 从清华镜像网站 https://mirrors.tuna.tsinghua.edu.cn/ 下载离线安装包,尝试安装另一个版本:
py37 + pytorch1.4.0 + torchvision 0.4.0
最终使用离线安装包,直接覆盖安装最终成功。

2020.7.7
为了在自己服务器跑 DIEN 的代码,需要安装 py2.7+tf1.4 环境


在个人服务器 anaconda3 配置虚拟 py2.7+tf1.4 环境:https://blog.csdn.net/u013313168/article/details/67828746
虽然是 anaconda3, 但仍然可以装 py2.7 环境。
conda create -n py2.7_tf1.4 python=2.7
conda activate py2.7_tf1.4
conda install tensorflow-gpu=1.4

查看 cuda 版本和 cudnn 版本 https://blog.csdn.net/qq_38451119/article/details/83302585
cat /usr/local/cuda/version.txt # 查看 cuda 版本
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2 # 查看 cudnn 版本

# 但是如果有在同一台电脑上多个不同环境配置了不同版本的 cuda, 结果输出的是仍然是最初的 base 环境对应的 cuda 或者 nvidia-driver 对应的 cuda。

conda list # 会显示与此环境搭配的 cuda 版本和 cudnn 版本, 例如在 py2.7+tf14.0 环境中,使用 conda list, 会显示
cudatoolkit-8.0 + cudnn-6.0.21


由于 py2.7 + tf14.0 需要 cuda 8.0, 而我当前服务器是 cuda10.0, 因此其会为这个环境 py2.7 + tf.14.0 自动安装 cudatoolkit-8.0 + cudnn-6.0.21, 并且还自动安装上了 numpy, tensorflow-tensorboard
Downloading and Extracting Packages
six-1.10.0           | 16 KB     | ##################################################### | 100% 
libprotobuf-3.4.0    | 4.3 MB    | ##################################################### | 100% 
mkl-2017.0.3         | 129.5 MB  | ##################################################### | 100% 
tensorflow-tensorboa | 1.6 MB    | ##################################################### | 100% 
mock-2.0.0           | 96 KB     | ##################################################### | 100% 
cudnn-6.0.21         | 178.2 MB  | ##################################################### | 100% 
numpy-1.13.1         | 6.8 MB    | ##################################################### | 100% 
tensorflow-gpu-base- | 113.8 MB  | ##################################################### | 100% 
cudatoolkit-8.0      | 322.4 MB  | ##################################################### | 100% 
werkzeug-0.12.2      | 408 KB    | ########################################################################################################################################################################################## | 100% 
protobuf-3.4.0       | 469 KB    | ########################################################################################################################################################################################## | 100% 
html5lib-0.9999999   | 183 KB    | ########################################################################################################################################################################################## | 100% 
bleach-1.5.0         | 21 KB     | ########################################################################################################################################################################################## | 100% 
enum34-1.1.6         | 53 KB     | ########################################################################################################################################################################################## | 100% 
tensorflow-gpu-1.4.1 | 3 KB      | ########################################################################################################################################################################################## | 100% 
funcsigs-1.0.2       | 18 KB     | ########################################################################################################################################################################################## | 100% 
pbr-1.10.0           | 100 KB    | ########################################################################################################################################################################################## | 100% 
markdown-2.6.9       | 98 KB     | ########################################################################################################################################################################################## | 100% 
blas-1.0             | 6 KB      | ########################################################################################################################################################################################## | 100% 
Preparing transaction: done
Verifying transaction: done
Executing transaction: done

 但这里可能没有安装 keras, 需要在使用命令来安装 keras

conda install keras  # 安装的是 keras-2.0.5, 对标另一台机器上是 Keras 2.1.2

 但这里有一个问题, 会自动安装 tensorflow cpu 版本,tensorflow1.3.0, tensorflow-base1.3.0 并会造成问题。

Downloading and Extracting Packages
mako-1.0.6 | 108 KB | ##################################################### | 100%
backports.weakref-1. | 7 KB | ##################################################### | 100%
theano-0.9.0 | 3.8 MB | ##################################################### | 100%
markupsafe-1.0 | 31 KB | ##################################################### | 100%
tensorflow-1.3.0 | 7 KB | ##################################################### | 100%
scipy-0.19.1 | 35.2 MB | ##################################################### | 100%
nose-1.3.7 | 194 KB | ##################################################### | 100%
backports-1.0 | 1 KB | ##################################################### | 100%
pygpu-0.6.9 | 1.3 MB | ##################################################### | 100%
pyyaml-3.12 | 313 KB | ##################################################### | 100%
keras-2.0.5 | 377 KB | ##################################################### | 100%
hdf5-1.8.17 | 2.0 MB | ##################################################### | 100%
mkl-service-1.1.2 | 15 KB | ##################################################### | 100%
yaml-0.1.6 | 246 KB | ##################################################### | 100%
h5py-2.7.0 | 2.5 MB | ##################################################### | 100%
tensorflow-base-1.3. | 35.9 MB | ##################################################### | 100%
libgpuarray-0.6.9 | 211 KB | ########################################################################################################################################################################################## | 100%
libgfortran-3.0.0 | 281 KB | ########################################################################################################################################################################################## | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: done

 

# 使用 conda uninstall tensorflow-base 导致

The following packages will be REMOVED: keras
-2.0.5-py27_0 tensorflow-1.3.0-0 tensorflow-base-1.3.0-py27h0dbb4d0_1

 

查看我之前的一篇博客 https://www.cnblogs.com/Gelthin2017/p/12094276.html,决定换用 pip 安装,先使用

(py2.7_tf1.4) ➜ 2020.7.7sli_rec-master conda uninstall protobuf
WARNING: The conda.compat module is deprecated and will be removed in a future release.
Collecting package metadata: done
Solving environment: | 
Warning: 4 possible package resolutions (only showing differing packages):
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free::certifi-2016.2.28-py27_0, https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free::openssl-1.0.2l-0
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free::openssl-1.0.2l-0, https://mirrors.ustc.edu.cn/anaconda/pkgs/free::certifi-2016.2.28-py27_0
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free::certifi-2016.2.28-py27_0, https://mirrors.ustc.edu.cn/anaconda/pkgs/free::openssl-1.0.2l-0
- https://mirrors.ustc.edu.cn/anaconda/pkgs/free::certifi-2016.2.28-py27_0, https://mirrors.ustc.edu.cn/anaconda/pkgs/free::openssl-1.0.2ldone

==> WARNING: A newer version of conda exists. <==
current version: 4.6.11
latest version: 4.8.3

Please update conda by running

$ conda update -n base -c defaults conda

## Package Plan ##

environment location: /home/guixj/anaconda3/envs/py2.7_tf1.4

removed specs:
- protobuf

The following packages will be REMOVED:

protobuf-3.4.0-py27_0
tensorflow-gpu-1.4.1-0
tensorflow-gpu-base-1.4.1-py27ha7e2fe3_0
tensorflow-tensorboard-0.1.5-py27_0

Proceed ([y]/n)? y

删去原来所有的 tensorflow 的环境。

然后用 pip 同时安装 keras, tensorflow-gpu

pip install tensorflow-gpu==1.4.0 keras==2.1.2 -i https://pypi.tuna.tsinghua.edu.cn/simple/ 

最终成功了。

 

2020.7.9

在远程服务器上使用 pip 安装 tenforlow-gpu1.4, 使用相同的命令,但是失败了

于是,决定离线安装 tensorflow 版本,在网站(https://pypi.org/project/tensorflow-gpu/1.4.0/#files

下载文件 tensorflow_gpu-1.4.0-cp27-cp27mu-manylinux1_x86_64.whl (似乎在线安装一行命令自动安装,也是下载的此文件?!)

 

但仍然不成功,而且要配置 cuda, cudnn 特定版本,比较麻烦。

决定换一个 tensorflow-gpu 版本,安装 tf1.14.0, 

两个大坑:

1. 清华镜像源路径设置出错了,导致一直网络连接错误,配置虚拟环境时 python2.7 都无法下载。 https://cloud.tencent.com/developer/article/1572996 、https://blog.csdn.net/u010099177/article/details/93220251

 

2. 配置 py2.7 环境时,居然错误安装了 python 3.7  https://blog.csdn.net/lsf_007/article/details/87931823

为 conda 设置好了 清华源路径,终于可以用 conda 配置虚拟环境,装上 python2.7

使用 pip 安装 tensorflow-gpu 一直没有成功。

(py2.7_tf1.4) root@ubuntu:~/guixj/2020.7.7sli_rec-master# pip install tensorflow-gpu==1.4.0
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7fcd56199690>: Failed to establish a new connection: [Errno 101] Network is unreachable')': /simple/tensorflow-gpu/
WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7fcd56199590>: Failed to establish a new connection: [Errno 101] Network is unreachable')': /simple/tensorflow-gpu/

 

直接用 conda install tensorflow-gpu, 让其自动设置一个版本, 结果这次终于开始安装了,但安装的是 tensorflow-gpu = 1.3.0

 

奇怪的时,即使进了虚拟环境, 用 python 命令还是 py3, 需要用 python2 命令,采用 python2,这个不同于我自己的服务器。我自己的服务器会自动切换 python 是代表 python2 or python3

需要把运行脚本中的所有 python 改为 python2。

 服务器似乎连上外网了,可以下 Amazon standford 数据, 而且 ping baidu.com 也能通

 

 

 

一直失败,最大问题在于虚拟环境中 python  仍然是python2, 导致 pip install tensorflow-gpu==1.4.0, 一直以为是要安装 py3.7 对应的版本tensorflow-gpu,一直没找到。

最终决定完全删去原来的 anaconda3 环境, 重新安装 anaconda2 从清华源下载,https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/

直接在 linux 中,使用如下命令,即可下载anaoncda 包 (没必要先用 windows 下载,然后再传上去)

 wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda2-2019.10-Linux-x86_64.sh

 然后在 ~/.bashrc 把 conda 路径写进去。

这时候使用 pip 则是 对应 python2 了,再使用

pip install tensorflow-gpu==1.4.0 keras==2.1.2 -i https://pypi.tuna.tsinghua.edu.cn/simple/

成功安装了tensorflow 1.4(突然想到,之前使用 pip2, 是否也可能成功?!)

但仍然有一个问题报错,libcudart.so.8.0: cannot open shared object file: No such file or directory

这是因为没有安装对应版本的 cuda 8.0 和 cudnn 6.0

 

 参考 blog, https://blog.csdn.net/chengyq116/article/details/106156748,其实是可以直接用 conda 安装 cuda8.0 和 cudnn 对应的版本。

 使用 conda 安装 tensorflow-gpu == 1.4.0 会报错,显示没找到,但是可以使用 conda 安装 cudatoolkit、 cudnn 工具包。

conda install tensorflow-gpu=1.4.1 cudatoolkit=8.0 cudnn=6.0 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/linux-64/
# 失败,找不到 tensorflow-gpu==1.4.1
conda install  cudatoolkit=8.0 cudnn=6.0 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/linux-64/
# 成功

 

 

但最终 GPU 还是没有用起来,可能还是存在某些问题。不过多核的 cpu 跑起实验来也非常快,就只用 cpu 好了。

 

 

2020.7.20

重新租用学校云服务器,不过这次租了个 32 核 cpu 的,不用 gpu.

安装了 GPU版的,没有装 cuda, 会报错。

 先卸载

 

 

然后直接安装 cpu 版的 tensorflow.

 

 

 成功!

posted @ 2019-11-26 22:49  Gelthin  阅读(5023)  评论(0编辑  收藏  举报