从-1开始搭建深度学习环境

额,记录hh同学主板烧掉之后心酸的日子….

从-1开始

为什么是从-1开始呢?事情是这样的。某天晚上我用scrapy爬了一个贴吧的帖子,睡前照常输入命令sudo systemctl hibernate来休眠,因为我不喜欢关机。但第二天发现电源点不亮了,插电源没用,拆了又装上,也是徒劳。第三天去送修,宏碁官方代理点告诉我主板坏了,和我推测的一样,而且主板过保4个月,换新要3800块!!!你怎么不去抢钱啊!后来我思索了一下,决定自己攒一台主机。

捡垃圾

由于来大学我已经买了两台笔记本了…极度败家的我不敢再乱花钱了,于是便有了接下来的捡垃圾之旅。

由于工作学习的需要,我必须要上16g的内存和1060 6g以上的gpu。我选择了耕升烈风和十铨火神×2,双通道。剩下的则是能扣则扣了。Lenovo的sl700 240g的ssd(MLC的固态都是垃圾,希望大家引以为戒),散片intel的7500(传说中的智商检测U),msi的b250m迫击炮,买主板送的酷冷至尊的散热扇,航嘉450w的电源,还有一个巨丑的机箱……基本够用了,如果再多1000的预算的话,我会上nvme的固态和8400的主板套。ryzen系列的话我担心和linux不兼容,所以没有上农企的车。e3洋垃圾我也考虑过,但是由于没有核显和部分指令集,外加不会搭服务器集群,也放弃了。想到实验室还有7700k和一块1080ti,宿舍里也用不太到那么高的配置,能跑点主流的model就满足了。

推荐大家买牙膏厂的cpu都上淘宝散片据说不对着cpu撒尿都翻不了车,毕竟一年质保和三年质保+盒子差了300块,没必要。别的7大部件尽量上狗东自营,售后有保障。

订单

订单

总结一下,买电脑这事儿就像旅游,有钱人就上顶配外星人、败家之眼顶配或者我们实验室顶配omen 880这些,质量好售后更好,好比旅游时嫌麻烦便多花点钱上最贵服务。亦或是自己研究路线、买票、找食宿,就和现在的我一样选部件来组装,好处是可定制性强,而且会便宜一些。最不推荐的是整机,看上去便宜,但很容易上烈士墙。就像贪图便宜上廉价旅游团,换来的只是被导游无限的推销。

组装机器

由于组装过程没有拍什么图,所以只能靠回忆脑补。

安装cpu到主板上

注意cpu上有一个小的三角,要和主板上的对应,然后无脑盖上盖子即可,不要弄坏了主板上的针脚。

cpu

散装cpu上的封条不用撕掉,撕了就没质保了(虽然并没有什么用)

然后加一些硅脂再cpu表面。

装cpu风扇

这是此次装机中最困难的一部分,买主板送的原价50的酷冷至尊的散热扇,真的很难装。我们先把底座和散热扇装在一起,再将其放在主板上。后面大力出奇迹,三个同学一起强行把固定底座的四根小棍子插进了主板。

cpu

两位机友

装内存条

装在靠近cpu的1号和3号插槽,可以上双通道。这里看上去散热扇好像是对着内存条吹的,其实不是,散热扇是抽风吸热,从后面的铜片出散热。

cpu

走几根线塞进机箱

我的机箱太小没法走背线,故很丑。接通总电源线,cpu线,cpu fan线。然后先装上买主板配赠的挡板,再把电源主板塞进机箱,要开始无限拧螺丝了。

记住对硬盘、显卡这些部件,需要接电源线数据线

固定好电源和主板后接上usbhd audio的接口。尝试放显卡进机箱,但发现需要拆掉机箱外的两条铁皮,用来暴露出HDMIDVI的接口,于是先撕铁皮。

塞机箱

装硬盘

还是没有先装显卡,是因为我发现我的小机箱如果先装显卡会很难再装上去硬盘。我的固态是sata3接口的,后悔没有上NVME。从一堆电源线里找出一根线给硬盘供电,买主板时送了两根sata3的线。一头接主板上sata3的接口,另一头借硬盘的。用两颗螺丝将硬盘固定在机箱上。同理,可以装sata3接口的另一个西数机械硬盘,来自主板坏了的笔记本VN7…..反正我后来还是嫌机械硬盘声音大把它拆了233

装显卡

显卡插在主板上,接上电源线,拧两颗螺丝就完事了。

显卡

OVER

插上显示器,装机结束。下图为灵魂走线…盖上透明侧窗,装机结束。

over

由于我的机械硬盘里有之前的win10和ubuntu,所以我开机直接进去了。但是我不会migrate ubuntu到ssd,修改grub有点复杂。转念一想,反正电脑都重拼了一台,重刷个系统多大点儿事啊,于是便踏入了重装系统的坑。

刷机

淘汰下来的hdd我放在了2.5寸硬盘转接盒,拿来做移动硬盘了。这是这四个月第三次刷ubuntu…上次重刷还是因为把驱动玩坏了,想不到这么快主板又坏了..

系统选择

暂时用不到win,我选择了ubuntu 16.04LTS。最近17.10已经出来了,还是Genome的桌面。但想到暑假坑爹的17.04,各种意想不到的bug以及屈指可数的解决方案,我还是滚回了LTS版本。除非等到18.04LTS,不然绝不换系统。做deep learning不像搞开发,一个稳定的系统极其重要。像tensorflow keras这些库默认的都是ubuntu系统。以14.04和16.04为佳。

做启动盘

这一步应该是最简单的。下个ultraso,ubuntu官网的最新版本,直接无脑刷到u盘就可以了,连格式化都不需要。我这里用的启动盘是16g ubs 2.0的闪迪CZ48,其实用8g的完全ok。

插到电脑上,进BIOS,设置启动项ubuntu放在首位,按照提示一步一步来就行。

稍微要注意点的地方是磁盘分区,我习惯不好,分了16g的swap区后(因为我的ram也是16g),剩下全分给了/ 了,大家可以自由发挥。

细节不记得了,没什么难度,记得时区选上海,语言一定要English,不然以后路径名全是坑233333,安装系统时好像还会问要不要额外安装系统需要的东西,千万要点拒绝!

装系统

日常软件的安装

其实这才是我最想写的部分,我经常会因为各种原因重刷系统,后来总要重装一些软件或驱动,但又记不全导致后来又很多坑,所以干脆现在先记录下来,一来便于我后期使用,二来也给阅读我的blog的人提供一些经验。

删垃圾

刷完机之后,第一件事情是删掉没有用的垃圾,比如amazon,libreoffice(用过了才知道有多么垃圾)

sudo apt remove libreoffice-common

换源

推荐USTC的源,因为被Tsinghua坑过..

sudo gedit /etc/apt/sources.list

换成

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ xenial main main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
 
# 预发布软件源,不建议启用
# deb https://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse

换完源后sudo apt update

几个命令行方式安装的必备工具

sudo apt install git
sudo apt install tmux
sudo apt install vim
sudo apt install htop
sudo apt install bleachbit
sudo apt install tree
sudo apt-get install lm-sensors 
sudo sensors-detect
sensors

Over the GFW

shadowsocks

sudo apt install python-pip
pip install --upgrade pip
pip install shadowsocks
pip install genpac
pip install --upgrade genpac

然后去home下mkdir一个shadowsocks文件夹并cd进去,gedit一个ss.json,里面写上服务器的配置,现在就可以sslocal -c ss.json了,使用gui的ss参见这里

genpac -p "SOCKS5 127.0.0.1:1080" --gfwlist-proxy="SOCKS5 127.0.0.1:1080" --gfwlist-url=<https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt> --output="autoproxy.pac"

生成一个pac文件,在proxy里设置url为此文件。proxy

最后一步,安装proxychains-ng,用于terminal走socks5端口。在shadowsocks文件夹下,

git clone https://github.com/rofl0r/proxychains-ng.git

./configure --prefix=/usr --sysconfdir=/etc

make

sudo make install

sudo make install-config

然后在vim /etc/proxychains.conf,修改socks4 127.0.0.1 9095socks5 127.0.0.1 1080

如果顺利的话,就可以使用proxychains4 + 需要的命令,走socks5端口了。

SS加速工具finalspeed

双边加速,暂时使用起来没问题,youtube 4k可以播放。

这里下载,注意安装时要有java环境,于是先装jdk,jdk安装方法参见stackoverflow

sudo apt-get install openjdk-8-jdk
apt-cache search jdk
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk
export PATH=$PATH:/usr/lib/jvm/java-8-openjdk/bin
javac -version

fs使用起来很简单,java -jar + 包名即可

我一般再tmux下打开,左侧ss,右侧fs,效果图如下。

ss+fs

VPS管理工具PAC manager

这里,下载deb包,然后安装。

我目前仅有两个vps,一个是digitalocean的,位于sgp。另一个是鹅厂的,位于上海。左侧配置了sshsftp

PAC

显卡驱动

神坑。不过现在熟练后已经可以随便装了。

具体细节看这里

在tty里依次输入:

sudo apt purge nvidia-*
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
sudo apt install nvidia-384

第四步可能血慢,然后各种故障。这时建议使用proxychains。

安装完毕reboot,启动terminal,如果有nvidia-smi命令,则安装成功。

驱动

cuda80到后面再装

Browser配置

先安装chrome

sudo wget http://www.linuxidc.com/files/repo/google-chrome.list -P /etc/apt/sources.list.d/

wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add -

sudo apt-get update

sudo apt-get install google-chrome-stable

如果一切顺利的话,这时候搜索chrome就有了,lock到launch栏方便到时候使用。

如果ss也顺利配置成功的话,现在就可以登录google account了。对我而言,这是最关键的一步,因为我的生产环境有极大一部分依赖于能跨越长城的chrome,以及一个可以同步书签和app的google account。chrome的扩展有网易云音乐,和wechat,telegram。其中网易云音乐的chrome扩展程序是我的主力听歌环境。

chrome2

chrome

最后配置firefox的爬墙设置,firefox一般不使用,主要用来测试,做第二浏览器,以及做web开发调试。选择Edit,Preference,General的最下方,Network Proxy的Setting,输入pac的full urlfirefox

Communication

众所周知,linux没有官方的wechat和QQ。好在我基本不用qq,一般qq的文件传输可以用腾讯微云来替代。wechat首推electronic wechat,是用node写的。electronic wechat的下载很简单,去release页面下最新的就行。

linux上最后的通讯工具应该是telegram吧,telegram.org下载linux版本即可,下载完毕后设置socks5端口,便可以使用。communication

写作工具与输入法

  1. markdown编辑器,typora

    # optional, but recommended
    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys BA300B7755AFCFAE
    # add Typora's repository
    sudo add-apt-repository 'deb http://typora.io linux/'
    sudo apt-get update
    # install typora
    sudo apt-get install typora
    

    typora优雅美观,不需要分屏,实时预览效果更加,这篇blog便是出自typora。

    typora

  2. 输入法,搜狗小鹤双拼

    众所周知,双拼是目前输入法的最优解决方案之一,linux上的搜狗是没有广告的,目前为止体验100分(如果没有窃取我的隐私的话)

    这个安装有点烦人,先去官网下载最新版deb包,然后按照装deb包的套路sudo dpkg -i + 包名和sudo apt upgrade即可。

    然后搜索Fcitix Configuration,打开后点击左下角的+,添加sougou拼音即可。

    搜狗

    如果有问题,如果有问题,就卸载掉fcitx,

    sudo apt-get --purge remove fcitx
    

    然后重装搜狗,重装参见这里。最后reboot一下。

  3. office替代品wps

    除了搜狗没广告,wps也没有。千万不要用libre office,头硬的可以去试试。过去一贯抵制金山产品的我终于还是上了wps的车,讲道理体验不错。不过使用频率较少,一般用markdownlatex

    wps安装很简单,官网下deb包,继续dpkg -i和apt upgrade。

    wps

    这里多说一句,上了linux的船就不要想着Microsoft家的东西了,one note word excel powerpoint通通没有,wps虽好,但没法与Microsoft账号同步。我不会特意去注册金山账号来同步wps,不过偶尔会用chrome的office插件同步写好的doc和ppt。

IDE与编辑器

IDE

IDE用jb的全家桶,没什么好说的,pycharm,idea,clion,webstorm,通通用学生ID激活的professional版本。

这里以pycharm安装为例,

  1. 上jb官网找到pycharm
  2. 点击download now
  3. download professional(教育邮箱!)
  4. 下载一个tar.gz文件
  5. 放到~/Coding/Python/目录下
  6. extract here
  7. sh bin里面的pycharm.sh便可使用,一般lock到launch栏。pycharm

编辑器

编辑器用主力是sublime text 3和vim。辅以gedit和VScode。

以下以sublime配置为例,

  1. 官网 ,找linux repos,下载tar.gz文件,放在~/Coding/Editor/目录下

  2. 打开sulime后lock到launch栏,然后按Ctrl+shift+P打开command palette,输入install package ,安装Boxy Theme,修改主题。

  3. enter purchase key

  4. 与terminal alias,在.zshrc末尾append

    alias subl='/home/hugo/Coding/Editor/sublime_text_3/sublime_text'
    

  5. 修改配置文件setting

    {
        "auto_complete_commit_on_tab": true,
        "auto_complete_with_fields": true,
        "color_scheme": "Packages/Boxy Theme/schemes/Boxy Monokai.tmTheme",
        "default_encoding": "UTF-8",
        "detect_indentation": true,
        "draw_white_space": "all",
        "font_size": 12,
        "highlight_line": true,
        "highlight_modified_tabs": true,
        "ignored_packages":
        [
            "Vintage"
        ],
        "tab_size": 4,
        "theme": "Boxy Monokai.sublime-theme",
        "translate_tabs_to_spaces": true,
        "word_wrap": true
    }
    
    

    效果如下:

    sublime

界面美化

theme

这是个巨坑,很容易让人沉迷于各种华丽特效无法自拔,然而我已经过了那个naive的时候了,先安装unity tweak tool。

sudo apt install unity-tweak-tool

然后看这里,我装了两套,一套os x,假装是macbuntu。另一套最喜欢也最常用的theme是Flatabulous ,力荐!

效果图

oh my zsh

sh -c "$(wget https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"

比较geek的bash皮肤,效果图:

zsh

杂项

chrome皮肤,去官网下主题,随意。

搜狗默认的主题越看越好看,不必改。

tweak tool加动画

tweak

steam学习平台的安装

没错,哪怕是linux也逃不了g胖的手掌,官网安装steam即可。

我先下了一个dota2,全特效锁120帧没什么问题。

steam

安装deep learning环境

前面已经装了gpu驱动了,剩下的主要是有关框架的安装。我日常使用最多的是tensorflow,pytorch,keras,并且使用anaconda的安装方式。

安装miniconda

为什么不选择anaconda?因为它很臃肿,习惯于用miniconda代替。

官网,选择linux amd64即可。

下载后用sh命令安装。安装完毕会发现无法使用conda命令,其实是zsh的锅。只要把.bashrc的最后一行

export PATH="/home/hugo/miniconda3/bin:$PATH"

复制到.zshrc末尾即可解决。

然后换一套ustc的源

conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes

安装tensorflow-gpu

我曾按照tensorflow官网给出的办法一步一步安装cuda、cudnn等等,还要手动配环境变量,极其之麻烦,而且很容易翻车,但可以装到最最新的版本(2017-11-11,目前为1.4版本,以下的方法截止今天只能安装1.3版本,不过没太大差别)。

  1. 先开一个新环境tensorflow,conda create -n tensorflow python=3.6

    然后source activate

  2. (Optional)装cuda80

    conda install cuda80

  3. 直接conda install tensorflow-gpu

在ipython 中import tensorflow as tf,随便测试几行,识别到了gpu则安装成功

tensorflow

这里有很多warning,是关于部分指令集没有办法编译的warning,解决办法是下载tf源码,手动编译。可能会提高运行速度。

安装pytorch

这个极为简单,新create一个环境后,按照官网的说法,输入conda install pytorch torchvision cuda80 -c soumith即可。然而在天朝,soumith自己的channel挂在aws上,被gfw墙了。使用proxychains即可。

pytorch

安装keras

推荐在tensorflow环境下安装,便于直接使用tensorflow-gpu做后端

pip install keras

杂项

numpy pandas matplotlib scikit-learn jupyter等一系列必备的库不用多说。直接conda install,无脑操作。暂时写到这里,双十一的深夜没买东西居然在写blog,以后看着更新…

hackerHugo wechat
一个一万年没有更新的公众号