Ubuntu下机器学习Python环境搭建

Ubuntu下机器学习Python环境搭建

由于Ubuntu下训练神经网络的速度比Windows下快了很多,Linux系统有其独特的优点, Linux系统越来越受到电脑用户的欢迎,于是很多人开始学习Linux。Linux系统之所以会成为目前最受关注的系统之一,主要原因是它的免费,以及系统的开放性,可以随时取得程序的源代码,这对于程序开发人员是很重要的。

一、Linux系统的优势:

1、Linux系统优势一:跨平台的硬件支持

由于Linux 的内核大部分是用C 语言编写的,并采用了可移植的Unix标准应用程序接口,所以它支持如i386、Alpha、AMD和Sparc等系统平台,以及从个人电脑到大型主机,甚至包括嵌入式系统在内的各种硬件设备。

2、Linux系统优势二:丰富的软件支持

与其他的操作系统不同的是,安装了Linux系统后,用户常用的一些办公软件、图形处理工具、多媒体播放软件和网络工具等都已无需安装。而对于程序开发人员来说,Linux更是一个很好的操作平台,在Linux 的软件包中,包含了多种程序语言与开发工具,如gcc、cc、C++、Tcl/Tk、Perl、Fortran77 等。

3、Linux系统优势三:多用户多任务

和Unix系统一样,Linux系统是一个真正的多用户多任务的操作系统。多个用户可以各自拥有和使用系统资源,即每个用户对自己的资源(例如:文件、设备)有特定的权限,互不影响,同时多个用户可以在同一时间以网络联机的方式使用计算机系统。多任务是现代计算机的最主要的一个特点,由于Linux系统调度每一个进程是平等地访问处理器的,所以它能同时执行多个程序,而且各个程序的运行是互相独立的。

4、Linux系统优势四:可靠的安全性

Linux系统是一个具有先天病毒免疫能力的操作系统,很少受到病毒攻击。对于一个开放式系统而言,在方便用户的同时,很可能存在安全隐患。不过,利用Linux自带防火墙、入侵检测和安全认证等工具,及时修补系统的漏洞,就能大大提高Linux系统的安全性,让黑客们无机可乘。

5、Linux系统优势五:良好的稳定性

Linux 内核的源代码是以标准规范的32 位(在64 位CPU上是64 位)的计算机来做的最佳化设计,可确保其系统的稳定性。正因为Linux 的稳定,才使得一些安装 Linux 的主机像Unix 机一样常年不关而不曾宕机。

6、Linux系统优势六:完善的网络功能

Linux 内置了很丰富的免费网络服务器软件、数据库和网页的开发工具,如Apache、Sendmail、VSFtp、SSH、MySQL、PHP和JSP 等。近年来,越来越多的企业看到了Linux 的这些强大的功能,利用Linux 担任全方位的网络服务器。
Linux 在它的追捧者眼里是一个近乎完美的操作系统,它具有运行稳定、功能强大、获取方便等优点,因而有着广阔的前景,或许也值得我们每一个计算机爱好者学习和应用主要来自于硬件方面的支持,还有就是对于普通用户来说,它的操作性没有windows那么方便、实用,一般用户使用起来 不太会操作。

二、为什么做深度学习的人很多都用Linux?

一位资深Linux的算法工程师,回答了这个问题:
转自http://www.360doc.com/content/19/1117/10/9824753_873677226.shtml
• 首先说明下Linux的开源带来的核心优势,接着分析Linux在深度学习单机环境配置的便捷性,最后分析Linux在深度学习多机领域(服务器)的优势,结论,Linux是首选环境,对于绝大多数算法工程师来说是必选。

1、Linux的开源基因,相比Windows和Mac有众多优势

目前操作系统市场上基本就三家: Linux, Windows和Mac。 而Linux相比其他两家,最核心和最根本的不同,就是开源。(Linux的发明者, Linus的一句名言: Talk is cheap, Show me the code. 翻译过来就是: 废话少说,放码过来。简单说, GNU/Linux上的所有软件,源代码都是赤裸裸展现给用户的,而不是一个黑盒。开源性,使得全球码农研究、贡献代码贡献给Linux,带来的好处就是:高度稳定, 即使在低成本硬件上,也高度稳定。以我个人为例, 公司8G内存的笔记本,我用windows收邮件,每次启动卡的要死。最近自动更新失败,失败重试,再失败,再还原,重启个三四次,才能进入桌面。交给IT同事,最后给的结论是重装系统。而用Linux, 一如既往的稳定。
• 终端工具,解放双手,使得执行效率提升。 举个例子, windows中鼠标点来点去,而linux中就是命令敲来敲去。前者不能复制,后者写个脚本,方便复制,甚至自动调度,可以每天每个固定时刻运行对应的程序。再比如, 一个apt命令,就可以安装、升级一个或一些列软件包。而不是想Windows 一样,每次都要手动下载,手动点击。
• 服务器市场,Linux主导。免费、稳定,使得Linux在服务器市场份额巨大。社区支持。很多开发软件,tensorflow,torch,docker等,很多都是先支持Linux, 后期再考虑的windows的。

2、单机深度学习开发环境依赖于GPU, Linux配置速度极快

深度学习的网络中,各种矩阵运算,动不动就上千维的大矩阵运算,而 Nvidia的GPU能加速这些运算, 在卷积神经网络上的相比CPU能带来10倍甚至更高的速度提升。想想,训练一个网络,用CPU训练用30天,而用GPU只需2-3 天。现阶段的深度学习个人开发环境,严重依赖GPU。
目前深度学习两大阵营,Google的Tensorflow和facebook的pytorch。 pytorch自带cuda, 相对简单些,但google的tensorflow安装就底层硬件GPU 的配置环境,需要安装驱动、CUDA、加速库cudnn。以windows为例,安装这些软件,没那么简单,各种依赖关系,有人耗时几天,也不一定能搞定。而用Linux, 拷贝几个命令,分分钟能搞定。官网的安装步骤,以Ubuntu 18.04 (CUDA 10)为例: 复制以下几个命令,安装就能完成:

对于Windows的安装说明,简单总结下,请看英伟达的官方CUDA Windows安装指南。(google工程师的言外之意, 可能是: 情况太复杂了, 你们还是找英伟达吧)

3、多机服务器环境配置,稳定性、免费性的Linux优势更突出

GPU价格不便宜,对于公司来说,每个人配置GPU不现实,也不经济,维护、使用效率也不高。配置GPU的服务器开发和生产环境是必选。每个深度学习算法工程师,相信都希望有一个单机多卡、多机多卡的服务器环境。高效的训练环境,对学术和工业界都十分有利。最近深度学习的论文,好多都是在多机多卡上训练完成(当然Google有自家的TPU),所谓“大力出奇迹”,放进几百G的文本数据, 在Transformer网络稍微调整下,在服务器上跑个几周,效果就出来了。众所周知, 服务器领域是Linux的天下。作为云环境的部署, 容器解决方案 Docker可谓是大名鼎鼎。Docker,是基于Linux的开发的,利用了linux内核的cgroups机制。所以,开始Docker是不支持Windows的。
深度学习的单机环境配置的效率,上一段已经讲过。对于几十台甚至几百几千台的服务器,用收费的Windows去配置,我想没有工程师会去做。
叙述的有点多,让我们回到本文主题,开始Ubuntu深度学习的环境搭建。

三、Ubuntu深度学习的环境搭建

本节主要描述老灰灰的填坑过程,分别叙述显卡、CUDA、cudnn、anaconda3、TensorFlow、Keras、pytorch等安装,以及环境配置,各类包与模块的安装加载方法,让我们开始吧。

(一) NVIDIA显卡的安装(以NVIDIA GeForce RTX 3070为例)

我们今天的目标是在 Ubuntu 18.04 上安装 NVIDIA 显卡驱动,请注意,你的显卡一定要是 NVIDIA 的显卡才能按照这篇文章的方法安装。我将给大家介绍四种安装方法,建议使用第一种或第四种方法安装。
  1. 使用 Ubuntu 软件仓库中的稳定版本安装

1.1. 查看显卡硬件型号

在终端输入:ubuntu-drivers devices,可以看到如下界面:

从上图可以看出,我的显卡厂商是:NVIDIA Corporation,推荐安装的版本号是: nvidia-driver-460 - distro non-free recommended。

1.2. 开始安装

如果同意安装推荐版本,那我们只需要终端输入:sudo ubuntu-drivers autoinstall 就可以自动安装了。当然我们也可以使用 apt 命令安装自己想要安装的版本,比如我想安装 460 这个版本号的版本,终端输入:sudo apt install nvidia-460 就自动安装了。安装过程中按照提示操作,除非你知道每个提示的真实含义,否则所有的提示都选择默认就可以了,安装完成后重启系统,NVIDIA 显卡就可以正常工作了。安装完成后你可以参照 https://linuxconfig.org/benchmark-your-graphics-card-on-linux 上的介绍测试你的显卡。

1.3. 使用 PPA 第三方软件仓库安装最新版本

添加 PPA 软件仓库:sudo add-apt-repository ppa:graphics-drivers/ppa,需要输入用户密码,按照提示还需要按下 Enter 键。更新软件索引:sudo apt update接下来的步骤同方法一,只是这样我们就可以选择安装最新版本的驱动程序了。

1.4从 NVIDIA 官网下载最新版驱动手动安装

• 打开终端,输入:lshw -numeric -C display,确认自己电脑显卡的型号,如下图:
从上图可以看到,我的电脑的显卡是 NVIDIA [GeForce RTX 3070] [10DE:2484],然后我们到 NVIDIA 的官网下载相应型号的驱动,官网地址是:https://www.nvidia.com/Download/index.aspx,如下图,我选择 RTX3070 显卡的驱动下载。

注意每个选项,特别是操作系统那里,一定选择 Linux 64-bit选好后点击 SEARCH 按钮搜索相应的驱动,如下图:

看到了吧,官方最新版本号已经是 460.32.03 了。点击 DOWNLOAD 按钮下载吧。接着需要先安装一些 NVIDIA 显卡依赖的软件,在终端依次执行如下命令:

sudo dpkg --add-architecture i386
•	sudo apt update
•	sudo apt install build-essential libc6:i386

Ubuntu 系统默认安装好是使用的一个开源的驱动:nouveau,我们要安装官方的驱动需要先禁用这个开源驱动,方法如下,依次执行:

sudo bash -c "echo blacklist nouveau > /etc/modprobe.d/blacklist-nvidia-nouveau.conf"sudo bash -c "echo options nouveau modeset=0 >> /etc/modprobe.d/blacklist-nvidia-nouveau.conf"

执行完上面两条指令后,我们使用如下命令看看是否成功禁用了开源驱动:cat /etc/modprobe.d/blacklist-nvidia-nouveau.conf。如果和下面一样,表示成功了。
$ cat /etc/modprobe.d/blacklist-nvidia-nouveau.conf
blacklist nouveau
options nouveau modeset=0
这个时候我们需要先重启一下系统,重启吧。重启成功后打开终端,输入如下命令:sudo telinit 3。然后按快捷键:CTRL+ALT+F1 进入字符界面,输入用户名和密码,然后登录系统,进入我们保存下载 NVIDIA 驱动的目录,默认是:Downloads/ 目录,cd Downloads/,然后执行:bash NVIDIA-Linux-x86_64-418.43.bin。注意:NVIDIA-Linux-x86_64-460.32.03.bin 要根据你下载的驱动文件的名字相应改动。安装过程中都点同意即可,如果你遇到下面的提示,安装下面我的输入输入后回车继续安装:
The distribution-provided pre-install script failed!
Are you sure you want to continue? -> CONTINUE INSTALLATION
Would you like to run the nvidia-xconfig utility? -> YES
安装完成后重启系统就可以点击软件列表中的 NVIDIA 的配置软件配置显卡驱动了,如果你遇到如下报错,请依次在终端输入如下命令解决:
• 如遇报错:WARNING: Unable to find suitable destination to install 32-bit compatibility libraries
• 解决办法:
o sudo dpkg --add-architecture i386
o sudo apt update
o sudo apt install libc6:i386

1.5 通过软件和更新中的附加驱动安装

打开应用程序,找到软件和更新,单击附加驱动,选择第一项,单击应用更改,安装时间稍长请耐心等待,如遇中途因网络问题中断,请再次单击应用更改按钮,会继续安装,安装完成重新启动电脑,驱动更新生效。

我们分享了如何安装 NVIDIA 显卡驱动,再次提醒,如果你的显卡不是 NVIDIA 显卡,千万不要这么干,也不要在虚拟机中这么干。有需要讨论的内容请在讨论区和我讨论。至此Ubuntu显卡驱动安装顺利结束。祝大家安装顺利!!!

(二)NVIDIA显卡CUDA的安装

方法一 利用 sudo sh *.run 命令安装(推荐使用)

打开终端输入nvidia-smi,查看CUDA版本号,例如本机CUDA版本为CUDA11.2,如下图。

从官网下载Linux下对应版本CUDA文件,例如本机是cuda_11.2.0_460.27.04_linux.run,保存到主目录下。打开终端,输入
sudo sh cuda_11.2.0_460.27.04_linux.run
回车输入密码。出现如下图所示:

选择continue,回车继续安装,提示如下:
输入 accept 回车继续安装。提示如下

利用空格键去掉driver选项前面的X,用方向键将光标移动到install上,回车继续安装,直到安装完成。

方法二 利用命令行安装cuda

打开终端,在终端输入命令行一步步进行安装
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin
sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.2.0/local_installers/cuda-repo-ubuntu1804-11-2- local_11.1.0-460.32.03-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1804-11-1-local_11.2.0-455.23.05-1_amd64.deb
sudo apt-key add /var/cuda-repo-ubuntu1804-11-2-local/7fa2af80.pub
sudo apt-get update
sudo apt-get -y install cuda

(三)cudnn安装

  官网下载与CUDA版本配套的CUDNN文件,保存至主目录中。

方法一 利用tgz文件解压到cuda目录中(推荐使用)

下载“cuDNN Library for Linux”,如下载完成后解压tgz文件,得到一个cuda文件夹:如tar -xzvf cudnn-11.2-linux-x64-v8.0.4.30.tgz然后在打开终端中执行下面的命令进行文件复制:
sudo cp cuda/include/cudnn.h /usr/local/cuda-10.1/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-10.1/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*

方法二 利用Deb文件安装

下载 cuDNN Runtime Library for Ubuntu18.04 x86_64 (Deb)
https://developer.nvidia.com/compute/machine- learning/cudnn/secure/8.0.4/11.0_20200923/Ubuntu18_04-x64/libcudnn8_8.0.4.30-1+cuda11.0_amd64.deb

下载 cuDNN Developer Library for Ubuntu18.04 x86_64 (Deb)
https://developer.nvidia.com/compute/machine-learning/cudnn/secure/8.0.4/11.0_20200923/Ubuntu18_04-x64/libcudnn8-dev_8.0.4.30-1+cuda11.0_amd64.deb

下载 cuDNN Code Samples and User Guide for Ubuntu18.04 x86_64 (Deb)
https://developer.nvidia.com/compute/machine-learning/cudnn/secure/8.0.4/11.0_20200923/Ubuntu18_04-x64/libcudnn8-samples_8.0.4.30-1+cuda11.0_amd64.deb

然后按照如下顺序依次安装
sudo dpkg -i libcudnn8_8.0.4.30-1+cuda11.0_amd64.deb
sudo dpkg -i libcudnn8-dev_8.0.4.30-1+cuda11.0_amd64.deb
sudo dpkg -i libcudnn8-samples_8.0.4.30-1+cuda11.0_amd64.deb
安装完后,在terminal输入 nvcc -V ,输出必须如下,否则没安装上
nvcc: NVIDIA ® Cuda compiler driver
Copyright © 2005-2020 NVIDIA Corporation
Built on Wed_Jul_22_19:09:09_PDT_2020
Cuda compilation tools, release 11.2, V11.2.221
Build cuda_11.2_bu.TC460_32.28845127_0

为了cudnn能够运行起来,需要用mnist验证下,在terminal里面输入:
cp /usr/src/cudnn_samples_v8/ $HOME
cd ~/cudnn_samples_v8/mnistCUDNN/
make clean
make
./mnistCUDNN
如果最后出现了Test passed! 恭喜你说明安装成功了

(四)设置环境变量

首先建议安装一个文本编辑器vim,方法为,打开终端中输入安装命令
sudo apt-get install vim-gtk,输入密码,出现下图所示:

输入“y”回车继续安装。镜像源和网络正常即可顺利完成安装,如遇下图情况,重新安装即可。

OK !!! vim安装完成!!!开始编辑环境变量设置。在打开终端中输入
vim ~/.bashrc,或sudo gedit ~/.bashrc输入密码,如出现如下图示:

请按一下键盘上的“e”键,提示如下

用鼠标转到最后一行,按一下insert键变为插入模式,在最下方加入如下三行:
export CUDA_HOME=/usr/local/cuda
export PATH=/usr/local/cuda-10.1/binKaTeX parse error: Expected '}', got 'EOF' at end of input: {PATH:+:{PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64KaTeX parse error: Expected '}', got 'EOF' at end of input: …LIBRARY_PATH:+:{LD_LIBRARY_PATH}}
export PATH=/home/gyf/.local/bin
如图:

此时,按一下ESC键输入“:wq”,如图

再按一下回车键,即修改保存成功。输入source ~/.bashrc命令使环境变量生效。

(五)anaconda3的安装(以python3.7.6为例)

官网下载Anaconda3-2020.02-Linux-x86_64.sh保存到主目录中。打开终端中输入sudo sh Anaconda3-2020.02-Linux-x86_64.sh,回车在输入密码, 进入注册信息页面,输入yes;

   阅读注册信息,然后输入yes;查看文件即将安装的位置,按enter,即可安装,如图

进入安装过程,如下图

  安装完成后,收到加入环境变量的提示信息,输入yes,如图

看到下图这些信息说明已经安装完成。

   提示信息“Do you wish to proceed with the installation of Microsoft VSCode? [yes|no]”,输入no;重启终端,即可使用Anaconda3;

若在终端输入 python,仍然会显示Ubuntu自带的python版本,我们执行:
sudo gedit ~/.bashrc /home/gyf/.local/bin
export PATH=“/home/yunfei/anaconda3/bin:$PATH”
source ~/.bashrc
修改终端的默认 python 为 anaconda3,至此anaconda3安装完成。

(六)TensorFlow的安装(此处坑多,深又大,不变的原则就是版本号)

本机使用的显卡RTX3070,CUDA版本11.2.之前的TensorFlow版本都不支持次CUDA11.2。2021年1月10日官方发布了tf_nightly_gpu-2.5.0最新版本支持CUDA11.2。果断下载tf_nightly_gpu-2.5.0.dev20210110-cp37-cp37m-manylinux2010_x86_64.whl,保存至主目录中,在打开终端中输入:

pip install –-user tf_nightly_gpu-2.5.0.dev20210110-cp37-cp37m-manylinux2010_x86_64.whl -i https://pypi.tuna.tsinghua.edu.cn/simple
注:安装过程需要下载一些依赖包,指定清华源镜像站,加快安装速度。友情提示,安装TensorFlow必须注意版本号,要与操作系统、Python以及CUDA等版本号配套,官网有详细说明(或百度查询)。

(七)pytorch的安装(此处坑多,深又大,不变的原则就是版本号)

本机使用的显卡RTX3070,CUDA版本11.2.之前的pytorch版本都不支持
次CUDA11.2。2020年11月27日官方发布了最新版本pytorch1.7.1搞好支持CUDA11.2。pytorch自带CUDA 。在打开终端中输入:
pip install torch=1.7.1+cu110 torchvision=0.8.2+cu110 torchaudio=0.7.2 -f https://download.pytorch.org/whl/torch_stable.html
pip install torch
1.5.1+cu101 torchvision0.6.1+cu101 -f https://download.pytorch.org/whl/torch_stable.html
提醒,上述命令没有错误,torch
=1.7.1+cu110已是最新版,据官方提示Torch1.8.0提供torch===1.8.0+cu112版本,目前还没有发布。安装过程依然需要下载一些依赖包,指定清华源镜像站,加快安装速度。友情提示,安装pytorch必须注意版本号,要与操作系统、Python以及CUDA等版本号配套,官网有详细说明(或百度查询)。

(八)其他常用依赖包的安装

个别依赖包存在版本问题,请查阅安装,大都直接安装(默认最新版)。我们制定下载源镜像站为豆瓣镜像站。根据自己需要在打开终端中依次执行如下命令,进行安装。

1、 Keras的安装命令:
pip install --user keras -i https://pypi.doubanio.com/simple
2、 pip install easydict -i https://pypi.doubanio.com/simple
3、 pip install --user imgaug -i https://pypi.doubanio.com/simple
4、 pip install pydicom -i https://pypi.doubanio.com/simple
5、 pip install opencv-contrib-python -i https://pypi.doubanio.com/simple
实际训练过程中还有很多七七八八的包要安装,大家参照上述命令进行即可。安装过程中确保网络畅通,尽量避开网络高峰期,否则一个包要重复安装多次才能成功。最后大家别忘更新数据,在打开终端中输入 sudo apt-get update。

(九)机器学习环境验证

这里我们使用简单的验证程序来检验我来之前安装的学习环境是否安装成功。打开终端中输入pip list查看已安装的包如下图

首先验证TensorFlow,在Spyder中执行如下验证程序:
import tensorflow as tf
gpus = tf.config.list_physical_devices(device_type=‘GPU’)
cpus = tf.config.list_physical_devices(device_type=‘CPU’)
print(gpus, cpus)
执行结果如下所示说明GPU安装成功。

同一台电脑分别在Windows10和Ubuntu18.04下运行下面测试程序

下图是Windows10下运行结果

下图是在Ubuntu18.04中运行的结果。请大家比较二者运行速度!!!

其次我们来验证Torch,在Spyder中执行如下验证程序:
import torch
import torchvision
print(torch.cuda.is_available())
a = torch.Tensor(5,3)
a=a.cuda()
print(a)
执行结果如下图所示,说明Torch运行正常,CUDA安装成功。

同样,大家可以在同一台电脑分别在Windows10和Ubuntu18.04下运行一个Torch测试程序,比较一下二者的运行结果有何异同。

本文安装方法不尽全面,就像Windows10系统一样,安装一个程序有多种方法。这里我们仅介绍了最常用的几种方法。所谓的“坑”还是因为“无知”原因造成,根据提示的出错信息及错误代码,通过NVIDIA、Google、Facebook、CSDN以及百度等相应网站,查看出错及解决方法。大多出错原因有两个方面,一是版本号不匹配,二是未设置环境变量或环境变量设置不正确。
总结:踩坑的过程是自我历练修行成长的过程。以上教程仅供大家参考。

  • 19
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大山8606

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值