使用GPU加速TensorFlow機器學習

    在Thinkpad X260上運行一個CNN圖像分類的樣例程序時,發現速度特別慢,迭代一輪要將近5分鐘,那麼迭代200輪需要1000分鐘,16個小時!在看到TensorFlow相關的書籍時,總是提到GPU加速,對於這樣的問題,應該能派上用場吧。TensorFlow目前只支持NVIDIA顯卡,筆者手頭沒有,阿里雲上有GPU計算型ECS,便“按量付費”買了一臺,開始了一場“坎坷小貴”的驗證之旅。坎坷的原因是沒有找到一篇完整的指南,遇到各種的版本問題,Tensorflow作爲咕果的產品官網打不開;小貴是因爲服務器12元/小時,後來看到NVIDIA Tesla P100一塊賣40000元,好吧,也不是阿里雲搶咱的錢。下面一起來如何在阿里雲GPU計算型ECS服務器上運行TensorFlow機器學習。

友情提示:本文中使用的版本已經經過驗證,直接使用這些版本可以避免很多“坑”

購買阿里雲GPU計算型ECS

    筆者購買的是ecs.gn5-c4g1.xlarge實例規格,使用Ubuntu 16.04 64位操作系統


安裝NVIDIA CUDA Toolkit

    NVIDA CUDA Toolkit中含有顯卡驅動,不要提前安裝顯卡驅動,以免衝突。在NVIDA網站上找到CUDA Toolkit 9.0下載地址

wget https://developer.nvidia.com/compute/cuda/9.0/Prod/local_installers/cuda_9.0.176_384.81_linux-run
wget https://developer.nvidia.com/compute/cuda/9.0/Prod/patches/1/cuda_9.0.176.1_linux-run
wget https://developer.nvidia.com/compute/cuda/9.0/Prod/patches/2/cuda_9.0.176.2_linux-run

下載後依次執行,執行時可以都接受默認值,或選擇y

sh cuda_9.0.176_384.81_linux-run
sh cuda_9.0.176.1_linux-run
sh cuda_9.0.176.2_linux-run

    安裝後注意將類庫路徑添加到LD_LIBRARY_PATH中:

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

安裝cuDNN

    先註冊一個NVIDIA開發者賬號並登錄,然後在下載頁面https://developer.nvidia.com/rdp/cudnn-download,下載cuDNN v7.0.5 Runtime Library for Ubuntu16.04 (Deb),下載後上傳到阿里雲服務器


然後執行

dpkg -i libcudnn7_7.0.5.15-1+cuda9.0_amd64.deb

安裝TensorFlow GPU版

執行以下的命令,安裝兼容的tensorflow-gpu:

apt-get update -y
apt-get install -y python3-pip
pip3 install --upgrade pip
pip3 install tensorflow-gpu

執行TensorFlow訓練程序驗證

如圖,訓練一輪的時間已經從Thinkpad上的5分鐘加速到了25秒,是否感覺已經從遙不可及變得指日可待了呢?


常見問題彙總

1. ImportError: libcublas.so.9.0: cannot open shared object file: No such file or directory

    如果你的服務器上可以搜到libcublas.so.9.0文件,因爲類庫路徑沒有添加到LD_LIBRARY_PATH中,可以添加後再試。如果搜索不到,但是存在其它libcublas.so文件,那是版本不兼容,可卸載後重新安裝CUDA 9.0再試

2.  Loaded runtime CuDNN library: 7102 (compatibility version 7100) but source was compiled with 7005 (compatibility version 7000)

    CuDNN版本過高,卸載後安裝7.0.5版本即可解決

發佈了44 篇原創文章 · 獲贊 35 · 訪問量 19萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章