配置服务器环境(Tensorflow+PyTorch+Anaconda)

(本文更新于2018.08.04)

修改服务器别名

只谈Mac情况下。打开Finder,Command+Shift+G调到~/.ssh/config处,增加内容:

1
2
3
Host nickname
HostName 0.0.0.0
User username

保存退出,以后在终端里只需要写:

1
ssh nickname

就可以省去每次都要查IP地址的烦恼。

安装Anaconda

下载

去清华服务器:
连接
用命令行下载:

1
curl -O https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-5.2.0-Linux-x86_64.sh

安装

1
bash Anaconda3-5.2.0-Linux-x86_64.sh

将Anaconda的bin目录加入PATH:

1
echo 'export PATH="~/anaconda3/bin:$PATH"' >> ~/.bashrc

更新bashrc(老规矩了,以后每次ssh进入服务器后,都要打这句话):

1
source .bashrc

测试一下,输入

1
2


Python 3.6.5 |Anaconda, Inc.| (default, Apr 29 2018, 16:14:56)
[GCC 7.2.0] on linux
Type “help”, “copyright”, “credits” or “license” for more information.

1
2

创建名为`dev`的新环境:

conda create -n dev

1
2
3

## 修改默认源:
Conda的:

conda config —add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config —set show_channel_urls yes

1
2

pip的:在`~/`目录下,手动添加`~/.pip/pip.conf`文件,并在其中并保存写入:

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple

1
2
3

### .bashrc中加入CUDA有关信息
在后期,运行Tensorflow的时候出现了这个错误:

ImportError: libcublas.so.9.0: cannot open shared object file: No such file or directory

1
2
3
后来估计是CUDA没有装好。本机上已经有了CUDA8和CUDA7.5,但是默认是CUDA7.5。因为我用的是Tensorflow1.4,所以应该要CUDA8才行。

于是在`.bashrc`文件中加上这两行:

export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

1
2
3
4
5

# 安装TensorFlow

## 建立环境
创建并激活一个名为`tf`的Conda环境:

conda create -n tf
source activate tf

1
2
3

## 下载并安装
正好在别人的文件夹中找到了:`tensorflow_gpu-1.4.0-cp36-cp36m-manylinux1_x86_64.whl`文件,直接用`cp FILE ~/`复制到了自己的文件夹,然后:

pip install tensorflow_gpu-1.4.0-cp36-cp36m-manylinux1_x86_64.whl

1
2
3
4
5
就好了。


# 安装PyTorch
直接根据官网的建议:https://pytorch.org,用下列代码就好了。

conda install pytorch torchvision -c pytorch

1
2
3
4

发现下载极慢,原来PyTorch安装中有一些位置需要更深入的配置一下清华的镜像,参照:[清华镜像帮助文件](https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/)

也就是先打一行:

conda config —add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/

1
2
3
4
5
6
7
8
9
10

安装好后出现`ModuleNotFoundError: No module named 'torch'`错误。后来发现是Ipython的问题。Deactivate环境,然后把Ipython删了(`pip uninstall ipython`),然后用Conda安装方式重新装一遍IPython就好了。
# ipython更新
直接使用ipython是无法import torch的。因为这个ipython是系统赠送的。我们要把它卸了,再用conda重新装一遍。

先`conda deactivate`退出来。
然后`pip uninstall ipython`删掉旧版。
再`source activate dev`进入环境,`conda install ipython`安装新东西即可。

试试

$ ipython
import torch
a = torch.Tensor([1])
a.cuda()

1
2
3
看看会不会报错。

在驱动版本不足的情况下,会出现:

RuntimeError: cuda runtime error (35) : CUDA driver version is insufficient for CUDA runtime version at /opt/conda/conda-bld/pytorch_1532579805626/work/aten/src/THC/THCGeneral.cpp:74

1
2
3
4
5
错误,见下章。


# 调整驱动
运行一个PyTorch程序,出现错误。经查([链接](https://blog.csdn.net/lhakuma/article/details/79574929))是显卡驱动版本过低所致。

RuntimeError: cuda runtime error (35) : CUDA driver version is insufficient for CUDA runtime version at /opt/conda/conda-bld/pytorch_1524584710464/work/aten/src/THC/THCGeneral.cpp:70

1
首先卸载旧驱动

sudo apt-get remove —purge nvidia-*
sudo apt-get autoremove

1
2
3
4
5
6

然后安装新驱动



安装完之后,运行nvidia-smi出现错误:

NVML: Driver/library version mismatch

1
2
3
解决方法见: [Stackoverflow](https://stackoverflow.com/questions/43022843/nvidia-nvml-driver-library-version-mismatch) Comzyh的答案。

后来还是出错,看来必须要重启了

RuntimeError: cuda runtime error (30) : unknown error at /opt/conda/conda-bld/pytorch_1524584710464/work/aten/src/THC/THCGeneral.cpp:70
```

部署PyCharm

一切照旧,但是有一个问题,就是要在Run前激活环境tf。具体做法是:

Tipping