AMPC-1080Ti机器-深度环境搭建

开启ssh和sftp服务

远程登录

因为服务器连接的是南邮校园网,所以外网无法远程登录,一些内网穿透、反弹的手段我也不懂,要远程登录的话先连接NJUPT。因为服务器常年开启,所以一般没拨号,无法上外网,每隔一段时间,可以需要拨下号,更新下软件。

1
sudo apt-get update

ssh

开启这两个服务是为了远程登陆服务器和远程上传下载服务器文件。

1
2
3
sudo apt-get install openssh-server #安装ssh
sudo service ssh start #开启ssh服务
sudo ps -e | grep ssh #查看是否开启

sshd正在运行。

查看IP

1
sudo ifconfig

红框为IP地址。

设置静态IP

sudo vim /etc/network/interfaces
参照自己机器上ifconfig的信息填写:

网关(gateway)用命令route -n查看:

因为连接路由器的原因,DNS跟网关一样。

路由器管理员密码:njuptampc
路由器无线密码:ampcampc

因为连接了路由器的原因,要从同一个IP连接到3台服务器,采用端口映射。在路由器里设置:

填写后保存重启。

端口22改为
1080Ti 801
1060(1) 802
1060(2) 803

之前搞错了,以为sftp是在端口21的,但其实和ssh一样都是22的。所以只要一台服务器一个端口映射即可。

因为不知道什么原因,路由器一旦静态外网IP,就上不了网,所以只能动态获取,所以当路由器断电或者断网后,路由器IP会重新获取,需要重新查看。连接路由器的wifiTP-LINK_D501 2,连接192.168.1.1或者tplogin.cn,进入路由设置,点击上网设置,便可以看到路由器当前的IP。

使用Xshell连接

链接:https://pan.baidu.com/s/1GRjGNFqYxKg2yhhxuBhFEw 密码:m50i

下载Xshell和Xftp,Xshell用来连接后命令行操作,Xftp用来连接后上传下载文件。

这里的IP为路由器当前的IP,而端口根据连接的服务器和使用的服务根据上表进行填写。
将IP填入主机后确定,第一次登录需要接收保存密钥,之后用用户名和密码登录即可。

sftp

1
2
sudo apt-get install vsftpd
sudo service vsftp start

之后用Xftp登录,方式同Xshell。

chmod

一些上传的程序代码,可能在权限上需要设置一下:

1
sudo chmod 777 file #777代表对所有人开启所有权限

新建用户adduser

adduser相比于useradd更人性化,适合新手。
需要给新同学新建账号时,用

1
sudo adduser name #添加名为“name”的用户

将名为“name”的用户加入sudoers
编辑/etc/sudoers

对要添加的用户添加ALL=(ALL:ALL) ALL的字段。

root

在一些需要权限的操作,如果sudo仍然权限不够,使用su切换为root用户,操作完毕后,用su name切换为“name”的用户。

root身份下的操作一切谨慎!

硬盘分区

机械硬盘都是2t和4t的,不能用普通的fdisk分区,用parted

分区后,用mkfs.ext4格式化:
sudo mkfs.ext4 /dev/sda1

之后挂载,每个硬盘都挂载在/hd4t或者/hd2t

sudo mount /dev/sda1 /hd4t

将挂载写入开机自动挂载的文件/etc/fstab,参考ubuntu fstab设置总结

fstab慎重填写,否则重启后会无法进入系统。

迁移旧的 home 目录文件到新硬盘

首先,你得挂载已经分区好的硬盘,然后把 home 目录下的全部文件拷贝到硬盘挂载的目录下。然后删除 home 目录,最后把第一步挂载好的新硬盘重新挂载在 home 目录下。下文是详细步骤。
这部分的内容得使用 root 用户登录主机,因为涉及到把 home 目录删除,所有的非 root 用户都会失效。

  1. 同步 home 目录所有文件,删除之前的 home 目录下的所有文件
    sudo rsync -avx /home/ /hd4t/

  2. 确定同步成功之后,删除旧 home 目录

    1
    2
    3
    rm -rf /home/*  #deletes the old home
    //卸载 /home
    umount -l /home
  3. 重新挂载新硬盘并设置启动挂载

1
sudo mount /dev/sda1 /home
  1. 修改/etc/fstab

df -h可以看到,/home/已经被挂载到机械硬盘上。

备份与还原

备份命令:dump

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
dump 选项 备份之后的文件名 元文件名或目录

选项 -level :就是我们说的0-9十个级别。这里要注意是直接写级别,并没有level

-f文件名:指定备份之后的文件名
-u :备份成后后,把备份时间记录在/ect/dumpdates文件里
-v :显示备份过程中更多的输出信息
-j :调用bzlib库压缩备份文件,其实就是把备份文件压缩为bz2格式
-W :显示允许被dump的分区的备份等级和备份时间


dump -0uj -f /root/boot.bak.bz2 /boot/ #备份命令。先执行一次完全备份,并压缩和更新备份时间
cat /etc/dumpdates #查看备份时间
cp instal.log /boot/ #复制日志文件都boot分区,为的是做增量备份实验
dump -1uj -f /root/boot.bak1.bz2 /boot/ #增量备份boot分区并压缩
dump -W # 查询分区的备份时间及备份级别

dump -0j -f /root/etc.dump.bz2 /etc/ # 完全备份etc目录,只能使用0级别进行完全备份,而不再支持增量备份

还原命令:restore

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
restore 模式选项 选项

模式选项:restore命令常用的模式有以下四种,这四种模式不能混用

-C :比较备份数据和实际数据的变化
-i :进入交互模式,手工选择需要恢复的文件。
-t :查看模式,用于查看备份文件中拥有哪些数据。
-r :还原模式,用于还原数据。

选项:
-f : 指定备份文件的文件名

比较备份数据和实际数据的变化示例
mv /boot/vmlinuz-2.6 /boot/vmlinuz #把/boot目录中的一个文件改名字,造成丢失的假象
restore -C -f /boot/boot.bak.bz2 #发现文件丢失

restore 还原模式示例

#还原boot.bak.bz2分区备份
#先还原完全备份的数据
mkdir boot.test
cd boot.test
restore -r -f /root/boot.bak.bz2 #解压缩
restore -r -f /root/boot.bak1.bz2 #恢复增量备份的数据

目前备份放在/root/all.dump.bz2,有需要时还原。

Tensorflow

NVIDIA驱动

编译依赖

1
2
sudo apt-get install nvidia-current nvidia-settings
sudo apt-get install build-essential pkg-config xserver-xorg-dev linux-headers-`uname -r`

官网下载最新驱动

http://www.nvidia.cn/page/home.html

屏蔽开源驱动nouveau

sudo nano /etc/modprobe.d/blacklist.conf
添加:

1
2
3
4
5
6
7
8
9
blacklist vga16fb

blacklist nouveau

blacklist rivafb

blacklist nvidiafb

blacklist rivatv

之后更新:
sudo update-initramfs -u

重启。

安装

重启之后,这里要尤其注意,安装显卡驱动要先切换到文字界面,(按Ctrl+Alt+F1~F6).所以,启动电脑后,先进入文字界面。 然后,首先输入命令sudo service lightdm stop

关闭桌面服务现在可以安装驱动了,先进入家目录 cd ~ ,然后: sudo sh ./NVIDIA-Linux-x86_64-375.20.run,按照提示一步步来完成后,再次重启电脑。

安装完成之后输入以下指令进行验证: sudo nvidia-smi ,若列出了GPU的信息列表则表示驱动安装成功。

然后重启。

python版本

Ubuntu自带python2和python3,如今趋势是python3,不过python2也不能删掉,一些Ubuntu日常的组件还是用的python2。

更换系统源和pip源

系统源

  1. 备份系统源
    sudo cp /etc/apt/sources-list /etc/apt/sources-list.bak

  2. 将sources-list更换成下面的源

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial universe
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates universe
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial multiverse
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates multiverse
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security universe
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security multiverse
  3. 更新源

    1
    sudo apt-get update

pip源

在用户目录下创建.pip文件夹,并创建pip.conf文件:

1
2
3
[global]
trusted-host = pypi.mirrors.ustc.edu.cn
index-url = https://pypi.mirrors.ustc.edu.cn/simple

版本选择

因为一开始想要源码安装Tensorflow,装完最新的cuda9.1和cudnn7.1,.configure一直出错。后来还是决定用pip3安装。

https://github.com/tensorflow/tensorflow/releases

上tensorflow的github页面看到1.6.0,是在CUDA 9.0和cuDNN 7.0编译的。

CUDA

安装完后,运行:

1
sudo sh cuda_9.0.176_384.81_linux.run

单击回车,一路往下运行,直到提示“是否为NVIDIA安装驱动nvidia-384?”,选择否,因为已经安装好驱动程序了,其他的全都是默认,不过要记住安装位置,默认是安装在/usr/local/cuda文件夹下。

配置环境变量,运行如下命令打开profile文件

1
sudo gedit  /etc/profile

打开文件后在文件末尾添加路径,也就是安装目录,命令如下:

1
2
export  PATH=/usr/local/cuda-9.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64:$LD_LIBRARY_PATH

保存,然后重启电脑

1
sudo reboot

CUDA安装完成。

cuDNN

这里需要注册账户,登录。

找到7.0版本for CUDA 9.0

下载后,解压,如果后缀名不是.tgz,重命名加上

1
tar -xzvf cudnn-9.0-linux-x64-v7.tgz

解压出来后,得到cuda文件夹,将一些文件复制进cuda里。

1
2
3
4
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*

cuDNN安装完成。

tensorflow-gpu

1
pip3 install tensorflow-gpu=1.6.0

如果安装时提示需要更新pip3,在python3和python2共存的情况下,更新比较麻烦。

1
python3 -m pip install --upgrade pip

安装后,进ipython3。

使用tensorflowtest模块的gpu_device_name(),可以看到,tensorflow正在使用1080 Ti显卡进行计算。

有时候使用tensorflow提示没有找到cuda文件时,可能是/etc/profile的路径没运行,不清楚为什么,不过运行一下就好了:
source /etc/profile

keras

keras是以tensorflow为后端的深度学习框架,可以方便调用多个预训练著名深度卷积神经网络。

1
pip3 install keras

一分一毛也是心意