教程:如何配置深度学习服务器

当你拿到一个崭新的服务器账号的时候,你会希望通过这篇文章来快速配置好你所需要的开发环境。

不过这篇文章完全是站在一个拥有服务器账号的非root权限、需要服务器用于深度学习研究开发的普通用户角度

最近一次更新:2019-08-13

连接服务器

初拿到账号,在Windows下首先通过Xshell或者PUTTY连接服务器,我个人倾向于Xshell,PUTTY太老了。而在2019年8月的当下,我最喜欢的方式是MobaXterm和VS Code的remote工具箱,尤其是后者。
老实说,还蛮好奇实验室里的服务器是怎样的配置,于是我们在terminal中输入:

nvidia-smi

就可以看到相关信息。

我们知道Linux是自带Python2和Python3的,在命令行中输入

python -V

python3 -V

可以分别查看他们的版本。
我是习惯使用python3的,我注意到这里它的版本是3.4。
我常用的库包括numpy,matplotlib和pandas等,这里经过试验,发现这台机器上python2这几个库都有,而python3似乎只有numpy。另外貌似机器上已经安了Tensorflow,但不知道为什么使用时一直报错,哪怕我试图激活它的虚拟环境。
这样的情况下,我决定安装一个python3的Anaconda以图方便,至于Tensorflow之后在Anaconda里的虚拟环境再安一次吧。

安装Anaconda

PS: 下述版本已不是当前最新,请自行修改url换成最新版本。

事实上我的安装是参考这篇文章的,这篇文章介绍得非常清楚。但有一点必须注意,文章中下载的URL是这样的:

curl -O https://repo.continuum.io/archive/Anaconda3-5.1.0-Linux-x86_64.sh

但在国内这个下载速度会非常慢,因此我建议你使用清华开源镜像站:

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

在两个都尝试过后,我们可以发现后者的速度远胜前者。

配置Jupyter notebook

接下来进行远程Jupyter notebook的配置,这里主要参考这篇博客。文章中描述得很详细,这里不做赘述。只有一点补充,如果是以root用户登陆,在jupyter notebook命令后加上--allow-root即可。

完成这个配置之后,你在Linux的命令行里输入jupyter notebook的命令之后,就能在其他终端上通过浏览器(http://(你的服务器地址):(端口名))访问服务器的Jupyter notebook了。

通过Anaconda安装Tensorflow

这次我们可以看官方的教程中关于使用Anaconda安装的部分,照做的话一般不会出现什么问题。不过这里我同样推荐你使用清华镜像站,不然你可能也会经历慢到怀疑人生的痛苦。

安装完之后发现仍然不能执行import tensorflow。参考这个StackOverflow的回答,需要在命令行中输入:

source ~/.profile

其他常见的报错在官网上(即上面的链接)都给出了相应的StackOverflow链接。

但这么做之后候我依然得到了报错,信息如下:

ImportError: libcudnn.so.6: cannot open shared object file: No such file or directory

这个原因是我的cuDNN版本不够的原因,因此我决定使用更低版本的Tensorflow。经过询问学长,cuDNN 5.0应该使用1.2版本的tensorflow,因此我们在命令行输入:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ --upgrade tensorflow-gpu==1.2.1

注意以上的安装我们使用了清华镜像。这样一来就终于可以使用Tensorflow了。当然每次使用前,要记得激活你的tensorflow环境。

TensorBoard远程使用

TensorBoard是TensorFlow中用于分析和调试神经网络模型的可视化框架,它将所谓的汇总(summary)操作联系起来。

我们以一个单输入神经元为例:

input_value = tf.constant(0.5, name = 'input_value')
weight = tf.Variable(1.0, name = 'weight')
expected_output = tf.constant(0.0, name = 'expected_output')
model = tf.multiply(input_value, weight, "model")
loss_function = tf.pow(expected_output - model, 2, name = "loss_function")

optimizer = tf.train.GradientDescentOptimizer(learning_rate = 0.025).minimize(loss_function)

for value in [input_value, weight, expected_output, model, loss_function]:
    tf.summary.scalar(value.op.name, value)

summaries = tf.summary.merge_all()
sess = tf.Session()
summary_writer = tf.summary.FileWriter('log_simple_stats', sess.graph)

sess.run(tf.global_variables_initializer())
for i in range(100):
    summary_writer.add_summary(sess.run(summaries), i)
    sess.run(optimizer)

这里我们生成了一个日志文件,log_simple_stats。运行TensorBoard只需要在终端中输入以下命令:

tensorboard --logdir=log_simple_stats

终端将输出:

staring tensorboard on port 6006

如果是在本机上,你只需要在chrome浏览器中输入地址localhost:6006即可使用;但如果你是在自己的机器上访问服务器的TensorBoard,可以参考这个StackOverflow回答

安装PyTorch

Updated on Nov.20th

上周敲定了明年暑假去NUS的暑研,马学长建议我提前做些准备,包括到时候工作的一些前期调研,以及熟悉他们的工具。他们习惯使用的是Pytorch,因此我打算利用平时的时间学习一下。(2019年夏天更新:NUS暑研吹了,我跑来美国了……

Pytorch官网的下载地址在这里。但很可惜在国内用Anaconda下载速度非常堪忧,我试图添加清华源但是实际下载的时候显示pytorch并不是使用的清华源。

这个问题我没能解决,因此我直接换用pip了。

pip也需要将清华源设为默认:

pip install pip -U
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

这样之后只需要简单的pip install torch torchvision就可以了,速度非常让人满意。(这条命令在我使用的当下默认的是python3.6和cuda9.0,其他版本需要指定,具体参考上面的pytorch官网)

后记

整个配置过程实在有些曲折,日后有什么与此相关的配置经验我也会更新在这篇博客中。

This blog is under a CC BY-NC-SA 3.0 Unported License
Link to this article: http://huangweiran.club/2018/05/09/教程:如何配置深度学习服务器/