我的AI之路 —— 从裸机搭建GPU版本的深度学习环境
之前一直在CPU上跑深度学习,由于做的是NLP方向所以也能勉强忍受。最近在做图像的时候,实在是扛不住了...还好领导们的支持买个虚拟机先体验下。由于刚买的机器,环境都得自己摸索,瞎搞过很多次,也走过很多弯路,所以我就记录下从裸机安装深度学习环境的正确过程。(全程root用户哦!)
裸机简介
服务器是阿里云的CentOS7.4,默认的时候选择的CUDA驱动选错了,1.5以上的tensorflow都应该选择CUDA9.0,注意不要太高,也不要太低!TF很挑剔!
先来聊聊裸机里面包含什么有用的东西:
- git:好像是1.18.x的版本,记不清了
- python:2.7
下面就开始安装吧!
第一步,升级Python3
我这边选择的版本是3.6.6,原则就是当前最新最稳定的大版本,以及最高的小版本。如果本机下载,可以直接去这个地址:
https://www.python.org/ftp/python/3.6.6/
如果是服务器下载可以使用命令
wget https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tgz
然后解压缩压缩包:
tar zxvf Python-3.6.6.tgz
进入目录后:
cd Python-3.6.6
先创建python3安装目录:
mkdir /usr/local/python3
开始编译安装
./configure --prefix=/usr/local/python3
make && make install
修改老版本的python执行文件
mv /usr/bin/python /usr/bin/python_old2
新建python3的软连接
ln -s /usr/local/python3/bin/python3 /usr/bin/python
使用命令验证下:
[root@izwz9fnfgk9709s3h9ex47z ~]# python -V
Python 3.6.6
然后不要忘记增加pip3的可执行文件:
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
这样就可以通过pip3安装python3的模块了。
[root@izwz9fnfgk9709s3h9ex47z ~]# pip3 -V
pip 18.0 from /usr/local/python3/lib/python3.6/site-packages/pip (python 3.6)
此时python就升级完了。
由于这时修改了python脚本的版本,可能对老系统的脚本有影响,所以需要修改两个脚本——/usr/bin/yum
、/usr/libexec/urlgrabber-ext-down
把对应的文件头从#!/usr/bin/python
修改为#!/usr/bin/python2.7
。
另外,我这里用的是阿里云,python下载很多东西都很快,如果是其他的服务或者物理机,有时候需要临时指定yum源,可以使用下面的命令:
pip3 install xxx -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
参考资料:https://www.cnblogs.com/idotest/p/5442173.html
第二步,升级Git
默认CentOS装的git是1.8版本有点陈旧,可以对它进行重装。
安装之前需要先升级gcc一类的东西,按照下面的脚本过程执行即可:
# 安装gcc相关的东西
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
yum install gcc perl-ExtUtils-MakeMaker
# 这里可以挑一个最新版本下载
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.15.tar.gz
tar zxvf libiconv-1.15.tar.gz
cd libiconv-1.15
./configure --prefix=/usr/local/libiconv
make && make install
# 卸载之前的git
yum remove git
# 重新下载git
wget https://github.com/git/git/archive/v2.18.0.tar.gz
tar zxvf v2.18.0.tar.gz
cd git-2.18.0
make configure
./configure --prefix=/usr/local/git --with-iconv=/usr/local/libiconv
make all doc
make install install-doc install-html
echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrc
source /etc/bashrc
然后重新验证一下:
[root@izwz9fnfgk9709s3h9ex47z soft]# git --version
git version 2.18.0
我的开发流程是这样,我们自己有git的代码库,我本地写完代码提交到gitlab。然后从阿里云的服务器clone代码,运行。由于里面涉及到大量的图片资源,因此clone的时候有个技巧:
git clone xxxx --depth 1
指定一下clone的深度,不然git会下载每一次的提交历史。如果训练的图片或者模型很多都删除或者替换掉了,就没必要下载了。
参考资料:https://blog.csdn.net/z_dianjun/article/details/50819908
第三步,安装CUDA
我记得在学校的时候写过一篇手把手教你在windows安装cuda6,当时看的人还挺多。这回在linux上安装,感觉更简单了。
首先去官网下载cuda的版本,如果不知道你该安装哪一个版本的CUDA,就先确定你想使用哪一个版本的tensorflow,然后去tensorflow的github里面查看configure.py这个文件:
https://github.com/tensorflow/tensorflow/blob/3379bae787d73d6db67d66a284bd1a076b2cbdba/configure.py
这里面有说明对应的CUDA版本:
_DEFAULT_CUDA_VERSION = '9.0'
_DEFAULT_CUDNN_VERSION = '7'
_DEFAULT_NCCL_VERSION = '2.2'
_DEFAULT_CUDA_COMPUTE_CAPABILITIES = '3.5,7.0'
_DEFAULT_CUDA_PATH = '/usr/local/cuda'
_DEFAULT_CUDA_PATH_LINUX = '/opt/cuda'
_DEFAULT_CUDA_PATH_WIN = ('C:/Program Files/NVIDIA GPU Computing '
'Toolkit/CUDA/v%s' % _DEFAULT_CUDA_VERSION)
_DEFAULT_TENSORRT_PATH_LINUX = '/usr/lib/%s-linux-gnu' % platform.machine()
_TF_OPENCL_VERSION = '1.2'
_DEFAULT_COMPUTECPP_TOOLKIT_PATH = '/usr/local/computecpp'
_DEFAULT_TRISYCL_INCLUDE_DIR = '/usr/local/triSYCL/include'
_SUPPORTED_ANDROID_NDK_VERSIONS = [10, 11, 12, 13, 14, 15]
可以看到这里需要的是9.0,注意9.0就是9.0,别以为9.2更牛逼就安装9.2,到时候一样用不了的(本篇文章当前最新的是9.2版本)。
安装文件的地址在这里:
https://developer.nvidia.com/cuda-90-download-archive
按照我的系统CentOS7,我是这么选的:
也可以直接在服务器上执行下面的命令进行下载:
wget https://developer.nvidia.com/compute/cuda/9.0/Prod/local_installers/cuda-repo-rhel7-9-0-local-9.0.176-1.x86_64-rpm
下载后按照官网的安装指令安装就行了:
sudo rpm -i cuda-repo-rhel7-9-0-local-9.0.176-1.x86_64-rpm
yum clean all
yum install cuda
注意:如果之前你的及其里面装了其他版本的cuda,或者你已经安装了cuda9.2,yum里面已经缓存了9.2的安装文件,那么可以这么做,创建下面的脚本,执行sh rpm_e.sh cuda
移除全部的cuda安装资源,重新输入上面的三条命令安装:
[root@izwz9fnfgk9709s3h9ex47z soft]# cat rpm_e.sh
#/bin/bash
set -x
temp_rpm=$(rpm -qa | grep $1)
for item in $temp_rpm
do
rpm -e $item --nodeps
done
安装完成后,添加环境变量vi /etc/profile
:
export CUDA_HOME=/usr/local/cuda-9.0
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}}
然后执行source /etc/profile
再执行以下nvcc命令验证下:
[root@izwz9fnfgk9709s3h9ex47z bin]# nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2017 NVIDIA Corporation
Built on Fri_Sep__1_21:08:03_CDT_2017
Cuda compilation tools, release 9.0, V9.0.176
此时基本的CUDA就安装完了,如果想要体验下CUDA的程序,也可以编译执行以下samples里面的代码。
第四步,安装cuDNN
由于我们是搞深度学习,因此需要安装这个cuDNN,它是专门针对深度学习的库。
首先登陆这个网址:https://developer.nvidia.com/rdp/cudnn-archive
先要进行注册,邮箱确认,同意配合测试,填一下基本信息,然后就可以下载了。
只要CUDA版本是9.0就行,我这边选择的是cuDNN v7.1。
下载后传到服务器上,执行解压缩:
tar -zxvf cudnn-9.0-linux-x64-v7.1.tgz
然后拷贝对应的文件
sudo cp cuDNN/cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuDNN/cuda/lib64/* /usr/local/cuda/lib64
修改libcudnn.so
#下面的操作在/usr/local/cuda/lib64/目录下进行
cd /usr/local/cuda/lib64
sudo rm -rf libcudnn.so libcudnn.so.7#删除两个符号链接;
sudo ln -s libcudnn.so.7.0.64 libcudnn.so.7
sudo ln -s libcudnn.so.7 libcudnn.so
这样cuDNN就安装完了。
安装完cuDNN不要忘记重启机器,不然tensorflow可能会识别不到!
参考资料:https://blog.csdn.net/guoyunfei20/article/details/78191599
第五步,安装keras和tensorflow
最后照着官网的安装步骤来就行了:
sudo pip3 install -U --pre pip setuptools wheel
sudo pip3 install -U --pre numpy scipy matplotlib scikit-learn scikit-image
sudo pip3 install -U --pre tensorflow-gpu
# sudo pip3 install -U --pre tensorflow ## CPU版本
sudo pip3 install -U --pre keras
# 如果搞图像,还需要安装cv2
sudo pip3 install -U --pre opencv-python
其他的按照自己需要的来就行了。
然后打开python命令行,import一下,看看有没有错
[root@izwz9fnfgk9709s3h9ex47z soft]# python
Python 3.6.6 (default, Aug 2 2018, 14:32:43)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow as tf
>>> import keras
Using TensorFlow backend.
>>> tf.__version__
'1.10.0-rc0'
>>> keras.__version__
'2.2.1'
>>>
最后启动终极代码
可以看到里面已经有GPU参与的信息了,而且速度上明显感觉有质一般飞跃!爽!
安装资源
如果有不方便下载的,我这里也有所有组件的安装资源,可以去yunpan下载。
https://pan.baidu.com/s/1IkgVpnn2VWUNXAFkKVlM6g
我的AI之路 —— 从裸机搭建GPU版本的深度学习环境的更多相关文章
- 小白秒懂的Windows下搭建基于pytorch的深度学习环境
配置环境总体思路 1.依据python版本选择对应Anaconda版本: 2.依据显卡驱动版本选择对应的CUDA版本: 3.依据CUDA版本选择对应的cudnn和pytorch版本. 一.Anacon ...
- 服务器搭建远程docker深度学习环境
服务器搭建远程docker深度学习环境 本文大部分内容参考知乎文章 Docker+PyCharm快速搭建机器学习开发环境 搭建过程中出现ssh连接问题可以查看最后的注意事项 Docker Docker ...
- [AI开发]centOS7.5上基于keras/tensorflow深度学习环境搭建
这篇文章详细介绍在centOS7.5上搭建基于keras/tensorflow的深度学习环境,该环境可用于实际生产.本人现在非常熟练linux(Ubuntu/centOS/openSUSE).wind ...
- linux系统下深度学习环境搭建和使用
作为一个AI工程师,对Linux的一些技能的掌握也能从一定层面反应工程师的资深水平. 要求1:基于SSH的远程访问(本篇文章) 能用一台笔记本电脑,远程登陆一台linux服务器 能随时使用笔记本电脑启 ...
- Android开发学习总结(一)——搭建最新版本的Android开发环境
Android开发学习总结(一)——搭建最新版本的Android开发环境(转) 最近由于工作中要负责开发一款Android的App,之前都是做JavaWeb的开发,Android开发虽然有所了解,但是 ...
- 深度学习环境搭建:Tensorflow1.4.0+Ubuntu16.04+Python3.5+Cuda8.0+Cudnn6.0
目录 深度学习环境搭建:Tensorflow1.4.0+Ubuntu16.04+Python3.5+Cuda8.0+Cudnn6.0 Reference 硬件说明: 软件准备: 1. 安装Ubuntu ...
- 搭建最新版本的Android开发环境
只为成功找方法,不为失败找借口! Android开发学习总结(一)——搭建最新版本的Android开发环境 最近由于工作中要负责开发一款Android的App,之前都是做JavaWeb的开发,Andr ...
- 保姆级教程——Ubuntu16.04 Server下深度学习环境搭建:安装CUDA8.0,cuDNN6.0,Bazel0.5.4,源码编译安装TensorFlow1.4.0(GPU版)
写在前面 本文叙述了在Ubuntu16.04 Server下安装CUDA8.0,cuDNN6.0以及源码编译安装TensorFlow1.4.0(GPU版)的亲身经历,包括遇到的问题及解决办法,也有一些 ...
- 装载 | Eclipse中搭建最新版本的Android开发环境
文章目录 准备工作 下载文件 下载JDK并配置系统变量环境 下载安装Eclipse 下载Android SDK 下载ADT插件 使用下载好的软件搭建Android开发环境 安装Android的SDK ...
随机推荐
- Fiddler建好代理后,能连到手机,但手机不能上网了是什么原因
依次 tools(工具) >> fiddler options(fiddler选项) >> connections( 连接) >>allow remot ...
- php多表查询数据合并,避免foreach循环嵌套
$memberList = $member->getMemberList(); $members = []; if (is_array($memberList)) { foreach ($mem ...
- linux 下安装安装mysql 5.6. 5.7
linux版本:CentOS7 64位 5.7.20 安装请看 他人博客 我已经安装成功了 https://www.cnblogs.com/cz-xjw/p/8006904.html 5.6安装 前提 ...
- 非关系型数据库MongoDB
爆炸式发展的NoSQL技术 在过去的很长一段时间中,关系型数据库(Relational Database Management System)一直是最主流的数据库解决方案,他运用真实世界中事物与关系来 ...
- 安装配置ftp服务器
1.安装ftp服务 检查是否安装vsftpd rpm -qa|grep vsftpd 安装 vsftpd yum -y install vsftpd 2.配置 编辑 文件 /etc/vsftpd/vs ...
- java常用设计模式八:代理模式
一.概述 代理模式是指客户端并不直接调用实际的对象,而是通过调用代理,来间接的调用实际的对象. 其特征是代理类与委托类有同样的接口,真正的核心业务逻辑还是在实际对象里面. 二.为什么要使用代理模式 当 ...
- ubuntu彻底删除apache2 再重装
删除apache2不彻底,导致用 apt-get install apache2 重新装时总是不成功.下面是如何彻底删除apache2 1. 删除apache 代码: $ sudo apt-get - ...
- [待完善]mycat使用(一)
生产上的mycat已经投入使用,这次的应用场景是数据写入和查询都非常大的一个需求,而且经常出现多表join的查询 1.应用上线没多久出现大量慢查询: 分片键的选择率非常高,但没有建索引,在其上加上索引 ...
- (转)FIKKER和Nginx的反向代理服务功能对比评测报告
转自:http://tieba.baidu.com/p/1268737304 针对高并发反向代理服务器 NGINX和FIKKER评测报告 测试硬件环境:服务端:CPU:E5200硬盘:SATA 133 ...
- Beta阶段第五篇Scrum冲刺博客-Day4
1.站立式会议 提供当天站立式会议照片一张 2.每个人的工作 (有work item 的ID),并将其记录在码云项目管理中: 昨天已完成的工作. 张晨晨:目标增加单词收藏功能 郭琪容:学习收藏功能的实 ...