二、YOLO訓練與GPU識別的環境搭建

 

首先要安裝好YOLO,再進行下面的GPU識別與訓練環境的搭建。

如果還未安裝YOLO的,請先參考下面鏈接進行安裝:

https://blog.csdn.net/yumening77/article/details/97133794

 

以下環境搭建基於ubuntu系統,主要分爲三個步驟:

 

  1. 顯卡驅動的安裝
  2. CUDA的安裝
  3. CUDNN的安裝
  4. 修改makefile文件

 

 

一、顯卡驅動的安裝

 

非阿里雲vgn5i 型實例適用

 

1.查看GPU型號

 

lspci | grep -i nvidia

 

 

 

 

如上圖所示,可以看到GPU型號是Tesla P100

 

 

 

2.下載對應的顯卡驅動

 

https://www.nvidia.com/Download/index.aspx?lang=cn

 

 

然後點擊搜索,再點擊產品支持列表,可以看到,該顯卡驅動支持Tesla P100

 

 

下載對應的顯卡驅動並傳輸到ubuntu系統中

 

 

 

3.安裝顯卡驅動

 

sudo chmod a+x NVIDIA-Linux-x86_64-384.183.run

 

sudo ./NVIDIA-Linux-x86_64-384.183.run

 

選擇ok和yes

 

最後如果出現如下錯誤:

 

WARNING: nvidia-installer was forced to guess the X library path '/usr/lib' and X module path '/usr/lib/xorg/modules'; these paths were not queryable from the system. If X fails to find the NVIDIA X driver module, please install the

`pkg-config` utility and the X.Org SDK/development package for your distribution and reinstall the driver

 

安裝依賴:sudo apt install dkms build-essential linux-headers-generic

 

執行:sudo apt-get install pkg-config

 

然後再執行:nvidia-smi

 

看到如下界面說明顯卡驅動安裝成功

 

 

 

 

阿里雲vgn5i(雲虛擬機、最便宜那種) 型實例適用

 

方法一(阿里雲文檔給出的,但是我試過好像不行,我用的是方法二):

 

1.禁用nouveau

 

a. 查看是否存在blacklist-nouveau.conf文件。

 

ls /etc/modprobe.d/blacklist-nouveau.conf

 

如果文件存在,則跳過本步驟。如果文件不存在,則執行命令:

 

vim /etc/modprobe.d/blacklist-nouveau.conf

 

b. 創建文件,並在文件中添加以下內容禁用nouveau。

 

blacklist nouveau blacklist lbm-nouveau options nouveau modeset=0

 

c. 生成kernel initramfs。

 

rmmod nouveau update-initramfs -u

 

d. 重啓實例。

 

reboot

 

 

2.下載GRID驅動包(GRID就是GPU驅動)

 

a. 下載GRID驅動安裝包。

 

      • 如果實例位於華南1 可用區C、可用區D下,請下載GRID 7.0 Guest驅動:

wget http://nvdia-driver-410.oss-cn-shenzhen.aliyuncs.com/NVIDIA-Linux-x86_64-410.39-grid.run

      • 如果實例位於其它地域和可用區,請下載GRID 8.0 Guest驅動:

wget http://nvidia-418.oss-cn-shenzhen.aliyuncs.com/NVIDIA-Linux-x86_64-418.70-grid.run

 

b. 安裝GRID驅動。

 

chmod +x NVIDIA-Linux-x86_64-410.39-grid.run ./NVIDIA-Linux-x86_64-410.39-grid.run

 

c. 測試GRID驅動是否安裝成功。

 

nvidia-smi

 

如果返回以下GRID驅動信息,說明驅動安裝成功。

 

 

方法二:

 

1.修改內核

 

Ubuntu切換內核到4.4.0-131-generic:

vi /etc/default/grub

設置GRUB_DEFAULT='Advanced options for Ubuntu>Ubuntu, with Linux 4.4.0-131-generic'

 

然後更新一下

 

update-grub

 

 

2.升級系統並安裝KDE桌面

 

升級系統並安裝KDE桌面

 

apt-get update

apt-get upgrade

apt-get install kubuntu-desktop

 

重啓系統

 

reboot

 

 

3.安裝GRID驅動

 

wget http://nvdia-driver-410.oss-cn-shenzhen.aliyuncs.com/NVIDIA-Linux-x86_64-410.39-grid.run

 

chmod 777 NVIDIA-Linux-x86_64-410.39-grid.run

./NVIDIA-Linux-x86_64-410.39-grid.run

 

nvidia-smi

 

如果返回以下類似結果,說明驅動已經成功安裝。

 

 

 

二、CUDA的安裝

 

1.下載CUDA

 

https://developer.nvidia.com/cuda-toolkit-archive

 

如果沒有賬號需要先註冊登錄

 

在安裝顯卡驅動時,選擇的CUDA Toolkit版本爲9.0的,如下圖

 

 

所以要下載對應版本的CUDA

 

 

 

2.安裝cuda

 

若是cuda10.1則參考:https://www.cnblogs.com/zmbreathing/p/CUDA.html

 

執行如下命令:

 

sudo sh cuda_9.0.176_384.81_linux.run

 

cuda_9.0.176_384.81_linux.run是對應cuda的文件,根據版本不同文件名也會不同。

 

然後用一本書的書角壓住回車鍵,直到服務條款顯示到100%。接着按下面的步驟選擇:

 

accept

 

n(不要安裝driver)

 

y

 

y

 

y

 

如下圖:

 

 

 

 

3.設置環境變量。

 

安裝完成後,設置環境變量。

 

打開主目錄下的 .bashrc文件添加如下路徑,例如我的.bashrc文件在/root下(默認安裝路徑),如果沒有找到,則按Ctrl+H鍵顯示隱藏文件。

 

以下都是默認安裝路徑

 

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-9.0/lib64

export PATH=$PATH:/usr/local/cuda-9.0/bin

export CUDA_HOME=$CUDA_HOME:/usr/local/cuda-9.0

 

終端運行:source ~/.bashrc

 

檢查:nvcc --version,如果顯示下面的文子就說明安裝成功了。

 

 

 

 

 

 

三、CUDNN的安裝

 

1.下載CUDNN

 

https://developer.nvidia.com/rdp/cudnn-archive

 

下載與CUDA版本對應的CUDNN

 

 

 

然後選擇Linux的CUDNN庫(別選Ubuntu的,deb文件不好安裝)

 

 

 

2.解壓

 

由於下載的文件是solitairetheme8 格式,需要修改後綴後再進行解壓。

 

cp cudnn-9.0-linux-x64-v7.6.1.34.solitairetheme8 cudnn-9.0-linux-x64-v7.6.1.34.tgz

 

tar -xvf cudnn-9.0-linux-x64-v7.6.1.34.tgz

 

ls

 

確保可以看到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

sudo chmod a+r /usr/local/cuda/lib64/libcudnn*

 

 

4.查看CUDNN版本

 

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

 

如下出現如下界面,說明安裝成功。

 

 

 

 

四、修改Makefile文件

 

打開darknet/MakeFile文件,進行如下修改:

 

GPU=1 #如果使用GPU設置爲1,CPU設置爲0

CUDNN=1 #如果使用CUDNN設置爲1,否則爲0

OPENCV=0 #如果調用攝像頭,還需要設置OPENCV爲1,否則爲0

OPENMP=0 #如果使用OPENMP設置爲1,否則爲0

DEBUG=0 #如果使用DEBUG設置爲1,否則爲0

 

CC=gcc

NVCC=/usr/local/cuda-9.0/bin/nvcc #NVCC=nvcc 修改爲自己的路徑

AR=ar

ARFLAGS=rcs

OPTS=-Ofast

LDFLAGS= -lm -pthread

COMMON= -Iinclude/ -Isrc/

CFLAGS=-Wall -Wno-unused-result -Wno-unknown-pragmas -Wfatal-errors -fPIC

...

ifeq ($(GPU), 1)

COMMON+= -DGPU -I/usr/local/cuda-9.0/include/ #修改爲自己的路徑

CFLAGS+= -DGPU

LDFLAGS+= -L/usr/local/cuda-9.0/lib64 -lcuda -lcudart -lcublas -lcurand #修改爲自己的路徑

endif

 

 

修改後進行保存,然後在darknet目錄下再次編譯:

 

make

 

編譯結束後,再次執行:

 

./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg

 

 

 

注意:虛擬機或者雲虛擬機(阿里雲vgn5i)要使用GPU和CUDA的話

 

假如在檢測實例的時候,出現如下報錯:

 

Error: all CUDA-capable devices are busy or unavailable

 

可能需要按以下步驟。

 

1.安裝GRID,上面已有描述

 

2.申請一個 License,並搭建對應的服務器(或者在阿里雲工單裏面向他們要一個測試用的License)

 

申請參考:https://forum.huawei.com/enterprise/zh/thread-475551.html

 

3.參考下面鏈接中的第5到第7步

 

https://help.aliyun.com/document_detail/118852.html?spm=a2c4g.11186623.6.608.7ff5674dboosfc

 

error while loading shared libraries: libcudart.so.9.0: cannot open shared object file: No such file

 

解決方案:

 

sudo cp /usr/local/cuda-9.0/lib64/libcudart.so.9.0 /usr/local/lib/libcudart.so.9.0 && sudo ldconfig

sudo cp /usr/local/cuda-9.0/lib64/libcublas.so.9.0 /usr/local/lib/libcublas.so.9.0 && sudo ldconfig

sudo cp /usr/local/cuda-9.0/lib64/libcurand.so.9.0 /usr/local/lib/libcurand.so.9.0 && sudo ldconfig

 

 

error while loading shared libraries: libcudnn.so.7: cannot open shared object file: No such file or directory.

 

解決方案:

 

sudo cp /usr/local/cuda/lib64/libcudnn.so.7 /usr/local/lib/libcudnn.so.7 sudo ldconfig

 

 

如果出現如下錯誤:

 

CUDA error:out of memory

 

vi cfg/yolov3.cfg

 

修改

 

batch=1

subdivisions=1

 

保存

 

如果還是報錯,使用更小的權重向量

 

yolov3-tiny.cfg

 

下載:

 

wget https://pjreddie.com/media/files/yolov3-tiny.weights

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章