参考 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 原环境后导致使用最新的命令安装,一直报错,显示不兼容。

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


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, 使用相同的命令,但是失败了

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

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

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

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

 

但仍然不成功,而且要配置 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

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

 

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

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

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

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

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

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

 

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

 

一直失败,最大问题在于虚拟环境中 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

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

 

 参考 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/
# 成功

 

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

 

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

 

 

2020.7.20

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

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

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

 先卸载

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

 

然后直接安装 cpu 版的 tensorflow.

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

 

 成功!