天天看點

我的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,我是這麼選的:

我的AI之路 —— 從裸機搭建GPU版本的深度學習環境

也可以直接在伺服器上執行下面的指令進行下載下傳:

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
           
我的AI之路 —— 從裸機搭建GPU版本的深度學習環境

注意:如果之前你的及其裡面裝了其他版本的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'
>>> 
           

最後啟動終極代碼

我的AI之路 —— 從裸機搭建GPU版本的深度學習環境

可以看到裡面已經有GPU參與的資訊了,而且速度上明顯感覺有質一般飛躍!爽!

安裝資源

如果有不友善下載下傳的,我這裡也有所有元件的安裝資源,可以去yunpan下載下傳。

https://pan.baidu.com/s/1IkgVpnn2VWUNXAFkKVlM6g

作者:xingoo

出處:http://www.cnblogs.com/xing901022

本文版權歸作者和部落格園共有。歡迎轉載,但必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接!