[Note]从0开始搭建深度学习环境TensorFlow+PyTorch
Posted 西蒙的庄园
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Note]从0开始搭建深度学习环境TensorFlow+PyTorch相关的知识,希望对你有一定的参考价值。
前言
最近lab进了一个新机箱,专门用来跑DL,既然是一台新机器,就让我们从装系统开始一起来配置DL环境吧,这也是我第一次真正意义上从头到尾配环境,一路上也是遇到了一些问题,写下本文也是为了记录一下配置环境的整体流程为以后所用,也希望初入DL大门的各位能尽可能少的踩坑,毕竟只有配环境的人才知道着配环境的过程有多闹心。
希望大家都能顺顺利利配环境,开开心心跑模型(●'◡'●)
p.s.本来想从装机开始,但是拿来的时候已经装配好了,那么我们就假定你已经有一台装好的裸机了,
1 硬件环境
CPU: i7-8700 3.20GHz
GPU: 七彩虹 iGame GeForce RTX2080Ti
内存: 金士顿 16G
主板: 华硕 PRIME Z370-P
硬盘: SSD 120G + HDD 2T
2 安装Ubuntu 18.04.1 LTS
2.1 下载官方镜像
2.2 制作系统USB启动盘
首先下载工具Refus
官方下载链接:https://rufus.ie/zh_CN.html
笔者写下本文时,官方提供的是Refus3.3
选择安装系统镜像,分区选择GPT,目标系统UEFI,如 图1 所示,之后点击开始,等待进度条走完,然后点击[关闭],弹出U盘就ok了。
图1
2.3 安装系统
开机连续按F2,进入Bios,将引导模式设置为UEFI引导,如 图2 所示(不同主板设置不同,请自行查找相关资料进行修改)
图2
补充资料:
【BIOS引导】:传统的电脑通常都是使用BIOS引导,开机BIOS初始化,然后BIOS自检,再引导操作系统→进入系统,显示桌面。
USB启动: 在BIOS引导的情况下,通常使用U盘维护、安装操作性系统,只要找到U盘使用上下键,选中此项,按回车键(Enter)予以确认,再按F10键,重启电脑就ok了。
【UEFI引导】:UEFI引导的流程是开机初始化UEFI,然后,直接引导操作系统,进入系统。和传统的BIOS引导相比,UEFI引导少了一道BIOS自检的过程,所以开机就会更快一些,这也成为了电脑的新宠。
开机之后正常选择,到了installation type 这里记得选something,自定义配置比较方便一些
p.s.这里由于之前学长把系统直接挂在了HDD上,SSD没挂上,所以在 图3 中你会看到前3行是这样显示的,不过没有关系,直接进入Something else
图3
进入之后可以看,图4,到有两块硬盘一个sda,一个sdb,分别对应SSD和HDD,如果没有看到对应盘下面出现free space,请先选择对应的硬盘然后点击右侧的 new partation table,之后在对应的硬盘下就会出现free space之后,我们对分出来的free space进行分配
图4
首先先分一下HDD,HDD主要用来存放数据,一般DL训练过程中的数据集我们选择放在这个HDD里面
分一个内存大小的swap
剩下选择 Ext4 journaling file system 并挂在到/home
在 图5 中我展示了我的配置结果,读者根据自己的实际情况自行分配即可
图5
之后分SSD
分一个500M的 EFI System Partition 分区
剩下的全部分给 / 即可
分配结果如 图6 所示
图6
之后只要常规的下一步下一步,然后重启就ok了。
3 安装Linux之后的几件事情
3.1 给Linux换国内源
Ubuntu系统自带的源都是国外的网址,国内用户在使用的时候网速比较慢。这里讲解一下如何将国外源更换为国内源,让你的网速起飞
1、首先备份原来的源,以防以后可以用的
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
2、更换源
sudo nano /etc/apt/sources.list
将原有的源注释掉,之后将下面的阿里源复制到 sources.list
中
deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
之后执行 sudo apt update
和 sudo apt upgrade
3.2 安装显卡驱动
刚安装好的Ubuntu18是没有2080ti的驱动的,那个输出的屏幕分辨率简直没法直视,首先就让我们安装显卡驱动。
系统自带的显卡驱动不是NVIDIA的,先删除这个驱动
sudo apt-get purgenvidia*
添加Graphic Drivers PPA
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get updat
查找驱动:
ubuntu-drivers devices
选择上图中推荐的415驱动:
sudo apt-get install nvidia-driver-415
之后重启:
reboot
重启后点开系统Setting里面的Detail,就可以看到系统识别到了信仰的2080Ti了
还可以在Terminal中输入 nvidia-smi
查看显卡信息
3.3 添加搜狗输入法
1.Ubuntu电脑自带Ibus输入法+拼音/五笔,但是用了一段时间之后发现经常会出现输入不了中文的现象,解决办法是去清空ibus的配置文件,但是这样会把自己每天使用电脑变得更加麻烦
2.同时网上对于Ubuntu中某些特定的软件,例如sublime等不能输入中文的解决办法都是提出基于fcitx的解决方案
3.sougou输入法基于输入法市场是比较成熟的,模拟输入、检测目标词汇都是比较好的,体验不错
首先卸载电脑中存在的ibus输入法:
这个时候在系统中还可以看到ibus的设置和输入法,不过没有关系,如果介意的话可以重启电脑即可消除。
sudo apt remove 'ibus*'
之后在自带的应用商店搜索fcitx,安装查找到的三个fctix应用(三个小企鹅图标)
4 安装CUDA9.0
TF的安装主要是需要CUDA,cuDNN这些版本进行匹配,如果匹配不成功,会相当麻烦。
附:官网各版本的匹配表https://tensorflow.google.cn/install/source
这里我们选择红框里的配置
4.1 安装依赖库
sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
4.2 修改gcc与g++版本
CUDA9.0要求gcc版本是5.x或者6.x,其他版本不可以,要自己进行配置,下面改变gcc与g++版本。
#安装5.x的gcc与g++
sudo apt-get install gcc-5
sudo apt-get install g++-5
#替换旧版本的gcc与g++
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 50
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 50
4.3 安装CUDA9.0
按下图配置进行选择
之后下载下方的Base Installerh和四个Patch文件
进入Download目录,依次执行以下命令:
# 1 这一步中如果询问是否安装NVIDIA驱动,一定要选择no!!!!!
sudo sh cuda_9.0.176_384.81_linux.run
期间会让你看一段很长的协议,一开始还从头看到了尾,后来发现只要按一下 q
退出就好了(如下图所示,这一堆条款,按enter得按半天(;´д`)ゞ)
安装完之后会出现下图中的提示,这一步就算ok了(虽然下面Summary出现了Warning,不用担心)
# 2 安装剩下的4个Patch
sudo sh cuda_9.0.176.1_linux.run
sudo sh cuda_9.0.176.2_linux.run
sudo sh cuda_9.0.176.3_linux.run
sudo sh cuda_9.0.176.4_linux.run
之后在~/.bashrc 中设置环境变量
sudo nano ~/.bashrc
在该文件最后面添加
export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export CUDA_HOME=/usr/local/cuda
然后ctrl+x退出nano编辑器。 之后 source/etc/bash.bashrc
使环境变量生效。最好再 reboot
一下
如果你上面安装路径都是默认的话,那么可以试着执行下面的指令,测试一下你的CUDA装没装好。
cd ~/NVIDIA_CUDA-9.0_Samples/1_Utilities/deviceQuery
make -j4
sudo ./deviceQuery
出现下图中的PASS就是成功了!( •̀ ω •́ )✧
离成功又进了一步
5 安装cuDNN7.4
这个需要提前注册一个账号,登陆之后下载
选择 DownloadcuDNN v7.4.1(Nov8,2018),forCUDA9.0--cuDNNLibraryforLinux
下载下来是一个 cudnn-9.0-linux-x64-v7.4.1.5.tgz
压缩包这个tar文件默认应该是你的Download目录下。
首先解压:
tar -zxvf cudnn-9.0-linux-x64-v7.4.1.5.tgz
会得到一个叫cuda的文件夹,依次执行下面的3条指令
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 /usr/local/cuda/lib64/libcudnn*
没有报错就OK了。
6 配置Anaconda 5.3.1
6.1 下载与安装
既然是用Python,肯定离不开Anaconda全家桶,那么就先安装一个,笔者写下本文时官网Anaconda版本是5.3.1
该版本Anaconda对应的是Python3.7的版本,按下图进行选择
同样的到Download目录,执行以下指令,安装anaconda,之后安装过程和PC类似,只要一路next就ok(记得有一条是加环境变量,记得点选)
bash Anaconda3-5.3.0-Linux-x86_64.sh
6.2 为conda更新为国内源
跟换linux的源一个道理,国外的源实在是太慢了,换个源,让你配置系统的效率再次起飞
对于conda我们使用清华大学的TUNA提供的Anaconda 仓库的镜像
执行下面的3条指令就OK了
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes
6.3 为pip更换阿里源
首先执行
mkdir ~/.pip
之后执行
cat > ~/.pip/pip.conf << EOF
然后依次输入下面4行
[global]
trusted-host=mirrors.aliyun.com
index-url=https://mirrors.aliyun.com/pypi/simple/
EOF
效果图如下图所示
6.4 在Anaconda中创建Python3.6环境
Anaconda的python版本是3.7的,但是现在TF不支持,于是我们创建一个Python的虚拟环境
这里补充以下conda的一些基本用法,这里发一个CONDA CHEET SHEET,名字还是挺好玩的,大家可以熟练掌握基本的语句,具体内容放在下面2张图里
官方链接:https://conda.io/docs/_downloads/conda-cheatsheet.pdf
首先先创建一个叫tf的虚拟环境
conda create --name tf python==3.6
然后利用 conda activate tf
进入这个虚拟环境,我们将在虚拟环境内安装tensorflow
然后安装GPU版本tensorflow,Anaconda将为我们自动下载相关依赖组件
pip install --ignore-installed --upgrade tensorflow-gpu
安装完成后进行测试,看看你的tensorflow装没装好,在虚拟环境内输入 python
然后输入下面内容
import tensorflow as tf
hello = tf.constant('first tensorflow')
sess = tf.Session()
print sess.run(hello)
如果正常输出就是成功了!
7 安装Keras
在虚拟环境中执行 pip install keras
8 PyTorch
在虚拟环境中执行 conda install pytorch torchvision-c pytorch
然后进入python测试
import torch
print(torch.cuda.is_available())
#输出True则为成功
9 总结
至此你应该已经完整的配置好DL的环境了,这只是DL的第一步,好好学习DL理论和tf与torch才是王道,在此特别感谢知乎 黄海广 博士的文章,他的文章为本文的实践提供了坚实的基础,真的是填了不少的坑,笔者也是第一次从头到尾配环境,感谢。
p.s.另外如果你喜欢本文且对你产生了帮助,欢迎点赞、分享、收藏,您的鼓励是我继续前进的动力,大家一起加油吧!
参考链接
[1] cuDNN官方Document: https://docs.nvidia.com/deeplearning/sdk/cudnn-install/index.html#install-windows
[2] https://zhuanlan.zhihu.com/p/50302396
Lotus Panda 12/2/2018 3:11:37 PM
以上是关于[Note]从0开始搭建深度学习环境TensorFlow+PyTorch的主要内容,如果未能解决你的问题,请参考以下文章
深度学习目标检测(YoloV5)项目——从0开始到项目落地部署
深度学习环境搭建:Tensorflow1.4.0+Ubuntu16.04+Python3.5+Cuda8.0+Cudnn6.0