1. 程式人生 > >ubuntu下100%成功安裝torch,同時配置cuda和cudnn(不成功,則成仁)

ubuntu下100%成功安裝torch,同時配置cuda和cudnn(不成功,則成仁)

總說

這些更新不影響主體。所有更新附加在文章最後。
第一次更新: 內容:新增一些Torch7常用庫的安裝,時間:2017.3.20
第二次更新:內容:某些torch庫無法線上安裝,轉成離線安裝的方法,時間:2017.3.31
第三次更新:內容:針對安裝”cutorch”時出錯的問題修復。時間:2017.5.11
第四次更新:內容:加入cudnn6.0的安裝。 時間:2017.5.19
第五次更新:內容:解決Missing dependencies for nn:moses >= 1. 問題。 時間:2017.6.4
第六次更新: 內容:解決g++依賴包問題。時間:2017.6.25
第七次更新:內容:為什麼有時候luarocks明明安裝了包,但是還是出現類似Missing dependencies for nn:moses >= 1的錯誤??

。時間:2017.6.26
第八次更新:內容:如果你的顯示卡是Jetson Tegra 或是Jeston TK1之類的,或是用到linux是32位的(超級不推薦)跑程式時出現Segmentation fault (core dumped)問題,一種可能可以解決的辦法。。。時間:2017.8.10
第九次更新:紀念逝去的Torch7.。。時間:2017.9.8

三個前提:
1. ubuntu別太老,最好14.04或以上吧,本人採用14.04
2. cuda別太老,本人試過cuda7.5和cuda8.0。都完美執行。值得注意的是compute6.1之類的顯示卡必須是cuda8.0或者更高。反正往高的裝沒問題。
3. cudnn一定要和cuda版本對應。這是最關鍵的。比如我以前是普通的泰坦X,就是計算能力5.1的,隨便裝7.5還是8.0。但是如果是新泰坦X或是1080之類的,計算能力是6.1的, cuda最低是8.0。 版本對應指,如果cuda是7.5的,即cuda-repo-ubuntu1404-7-5-local_7.5-18_amd64,採用的cudnn就要cudnn-7.5-linux-x64-v5.0-ga.tgz,是為cuda7.5準備的cudnn5.0版本。 現在裝的是cuda8.0,即cuda-repo-ubuntu1404-8-0-local_8.0.44-1_amd64.deb。採用的是
cudnn-8.0-linux-x64-v5.1.tgz。

安裝與測試

安裝torch7

直接用torch自帶指令碼

git clone https://github.com/torch/distro.git ~/torch --recursive
cd ~/torch; bash install-deps;
./install.sh
  • 1
  • 2
  • 3

這裡可能會出現的問題,在 坑一中。
如果出現Missing dependencies for nn:moses >= 1. ,請參照部落格的附加部分
接下來,它會提示是否吧torch加入bashrc中,有”….(yes|no)”提示,輸入yes,即可。
為了保險,可以看看bashrc檔案

vim ~/.bashrc
  • 1

檢視文件末尾是不是有類似

./home/xxx/torch/install/bin/torch-activate
  • 1

上面是你torch安裝的路徑。
然後跟新一下環境變數。

source ~/.bashrc
  • 1

然後

th
  • 1

會出現
這裡寫圖片描述
現在來說,基本的torch就安裝好了!!!就是這麼簡單。但是你可能還想裝cuda,其實也很簡單。

下載配置neural style(僅僅用於測試cpu和GPU的對比程式,真心可以省略。。)

安裝其他依賴庫

sudo apt-get install libprotobuf-dev protobuf-compiler
luarocks install loadcaffe
  • 1
  • 2

下載neural style程式碼

cd ~/
git clone https://github.com/jcjohnson/neural-style.git
cd neural-style
  • 1
  • 2
  • 3

安裝VGG模型

sh models/download_models.sh

CPU版本的測試
th neural_style.lua -gpu -1 -print_iter 1
  • 1
  • 2
  • 3
  • 4

若出現

[libprotobuf WARNING google/protobuf/io/coded_stream.cc:505] Reading dangerously large protocol message.  If the message turns out to be larger than 1073741824 bytes, parsing will be halted for security reasons.  To increase the limit (or to disable these warnings), see CodedInputStream::SetTotalBytesLimit() in google/protobuf/io/coded_stream.h.
[libprotobuf WARNING google/protobuf/io/coded_stream.cc:78] The total number of bytes read was 574671192
Successfully loaded models/VGG_ILSVRC_19_layers.caffemodel
conv1_1: 64 3 3 3
conv1_2: 64 64 3 3
conv2_1: 128 64 3 3
conv2_2: 128 128 3 3
conv3_1: 256 128 3 3
conv3_2: 256 256 3 3
conv3_3: 256 256 3 3
conv3_4: 256 256 3 3
conv4_1: 512 256 3 3
conv4_2: 512 512 3 3
conv4_3: 512 512 3 3
conv4_4: 512 512 3 3
conv5_1: 512 512 3 3
conv5_2: 512 512 3 3
conv5_3: 512 512 3 3
conv5_4: 512 512 3 3
fc6: 1 1 25088 4096
fc7: 1 1 4096 4096
fc8: 1 1 4096 1000
WARNING: Skipping content loss  
Iteration 1 / 1000  
  Content 1 loss: 2091178.593750    
  Style 1 loss: 30021.292114    
  Style 2 loss: 700349.560547   
  Style 3 loss: 153033.203125   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

表示如果這一步都到不了的話,難度挺大。

安裝cuda

這個如果你以前裝過就不用再裝了,其實就是個環境嘛,預設是安裝在類似/usr/local/cuda-8.0的。安裝的時候它會建立一個軟連結,類似windows的快捷方式。
直接從官網上下載對應版本的cuda 。然後deb檔案直接雙擊安裝。你別以為這個deb安裝完了,cuda就安裝好了,其實還有附加的庫,也是要安裝的。這些要通過命令列來進行。

sudo apt-get update
sudo apt-get install cuda
  • 1
  • 2

上面的apt-get安裝的cuda會根據你的deb的cuda的版本的不同,而安裝相應的庫。比如你如果是採用cuda8.0的deb,那麼此時上面會出現一堆cuda8.0-之類的檔名的庫。

最後再試試是否安裝好了cuda

nvidia-smi
  • 1

出現你的顯示卡配置資訊的話,就ok。
這裡寫圖片描述

安裝torch的cuda支援

剛才裝的cuda是通用的,是所有的程式框架都可以用的啊。但是你讓torch用cuda的話,還要安裝2個庫cutorch和cunn。cutorch是讓torch能用GPU,而cunn是專門針對神經網路,讓神經網路運行於GPU之上。其實torch安裝相應的其他庫還是很簡單的,直接一條命令搞定。

luarocks install cutorch
luarocks install cunn
  • 1
  • 2

注意:安裝cutorch可能會出錯。方法見博文最後面

測試一下

th -e "require 'cutorch'; require 'cunn'; print(cutorch)"
  • 1

這裡寫圖片描述
此時到這裡應該還是妥妥的.

安裝cudnn

其實cudnn就是一些連結庫,怎麼安裝呢。把cudnn的標頭檔案放入和相應的連結庫放入cuda路徑的相應位置就行了。顯然標頭檔案是放入include資料夾中,而連結庫是放入lib64資料夾中。因此有
下面先安裝cudnn5.1的,然後直接luarocks install cudnn,現在預設的是cudnn5.x。如果想要安裝cudnn6.0的,請看文章附加。

tar -xzvf  cudnn-8.0-linux-x64-v5.1.tgz
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-8.0/lib64/
sudo cp cuda/include/cudnn.h /usr/local/cuda-8.0/include/
  • 1
  • 2
  • 3

最後在安裝torch的cudnn支援

luarocks install cudnn
  • 1

測試一下:

th neural_style.lua -gpu 0 -backend cudnn
  • 1

幾乎是百分百成功的,妥妥的,可能會出現坑二

測試一下

(注意:沒通過可能是由於特定誤差閾值設定的問題,如今他們也不更新了,所以你就當沒問題用就行,否則建議能轉則轉啊,順帶說一句,,用了快2年了,貌似還沒發現哪個函式有問題。)

cd ~/torch
./test.sh
  • 1
  • 2

這裡寫圖片描述
只有一個錯誤,在VolumetricFullConvolution_pair_test中,但是我應該用不到這個卷積,所以問題不大。
嚇人的是,半天后再測試一下時,又詭異的沒錯誤了。。這麼不穩定,退torch,保平安。
這裡寫圖片描述

坑1:torch的依賴庫很多!!

curl -s https://raw.githubusercontent.com/torch/ezinstall/master/install-deps | bash
  • 1

執行這個時,一定會經過較長時間的安裝!!!!由於我這裡的網很差,所以如果你的也有類似的情況,那麼可能會出現:“xxx 校驗和不符”。這時說明完全沒有安裝依賴庫好吧!!我以前以為已經裝好了,直接下完neural-style,然後./install.sh。我擦,結果出現什麼cmake not found之類的。然後我還傻乎乎的去 sudo apt-get install cmake。結果又出現其他亂七八糟的,現在就是一句話:bash install-dep是把所有的依賴庫都會安裝好!!並且安裝完之後會有類似提示:“torch dependencies have already installed.”。 如果一致出現什麼校驗和不符這類問題,那麼就更換源,最靠譜的方法不是根據網上所說的從“網易源”或是“搜狐源”加入到sudo vim /etc/apt/source.list之類的,這都不靠譜!最有效的方法是,右上角–>系統設定–>軟體和更新—>Ubuntu軟體—>下拉選擇框–>其他站點—>選擇最佳伺服器,過段時間,測試結束後,就會顯示最好的伺服器,然後選擇確定。關閉時會讓你重新載入源,點選確定即可。

坑2 可能出現’libcudnn not found in library path’的情況

擷取其中一段錯誤資訊:

Please install CuDNN from https://developer.nvidia.com/cuDNN
Then make sure files named as libcudnn.so.5 or libcudnn.5.dylib are placed in your library load path (for example /usr/local/lib , or manually add a path to LD_LIBRARY_PATH)
  • 1
  • 2

LD_LIBRARY_PATH是該環境變數,主要用於指定查詢共享庫(動態連結庫)時除了預設路徑之外的其他路徑。由於剛才已經將
“libcudnn*”複製到了/usr/local/cuda-8.0/lib64/下面,因此需要
方法一:
1. sudo gedit /etc/ld.so.conf.d/cudnn.conf 就是新建一個conf檔案。名字隨便
2. 加入剛才的路徑/usr/local/cuda-8.0/lib64/
3. 反正我還添加了/usr/local/cuda-8.0/include/,這個估計不要也行。
4. 儲存後,再sudo ldconfig來更新快取。(可能會出現libcudnn.so.5不是符號連線的問題,不過無所謂了!!若要解決這個問題,可以看哈哈
方法二(這個簡單):
直接

 vim ./.bashrc
  • 1

然後在最後新增

export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBARARY_PATH
  • 1

此時執行

th neural_style.lua -gpu 0 -backend cudnn
  • 1

成功了!!!!

發現用cudnn時,變成50個50個一顯示了,速度快了些。剛才但存用cuda只是1個1個顯示的。不說了,歇會兒。

總結

一定要版本對應!!cuda和cudnn的版本一定要對應,對應!!!!

HDF5安裝

torch中如果直接

luarocks install hdf5
  • 1

是會出錯的。要這樣:

sudo apt-get install libhdf5-serial-dev hdf5-tools
git clone https://github.com/deepmind/torch-hdf5
cd torch-hdf5
luarocks make hdf5-0-0.rockspec LIBHDF5_LIBDIR="/usr/lib/x86_64-linux-gnu/"
  • 1
  • 2
  • 3
  • 4

各種問題彙總方案

記錄一下裝了n遍torch,總結出來的各種問題解決方案。

其他一些可能會用到的庫

下面三個分別是載入caffe的model要用到的庫, 自動求導的庫,以及自定義初始化引數的庫。

luarocks install loadcaffe
luarocks install autograd
luarocks install nninit
  • 1
  • 2
  • 3

安裝loadcaffe前要先安裝

sudo apt-get install libprotobuf-dev protobuf-compiler
  • 1

其中loadcaffe可能會因為人品不好,直接這樣安裝不成功!此時檢視下文的離線安裝torch庫。
還有就是可能希望將loss或是圖片在瀏覽器中顯示出來的庫display

luarocks install https://raw.githubusercontent.com/szym/display/master/display-scm-0.rockspec
  • 1

你可能還需要將torch的tensor轉換成numpy的陣列,以便利用Python的庫進行操作。這時候你需要

luarocks install npy4th
  • 1

值得注意的是,由於Torch的table是從1開始的,而python是從0開始的。它是會自動轉換的,所以無需擔心。

最後抱怨一下,都多少年沒更新了啊。。
這裡寫圖片描述
看看別人TF。。
這裡寫圖片描述
最後的最後,再次強調!退Torch,保平安。。

離線安裝torch庫

我們知道torch安裝庫還是很簡單的。直接luarocks install xxx。但是有時候怎麼都安裝不了某些庫。比如luarocks install loadcaffe
這時候直接找github的原始碼,下載離線安裝

git clone https://github.com/szagoruyko/loadcaffe.git
cd loadcaffe
luarocks make loadcaffe-xxx
  • 1
  • 2
  • 3

搞定了。

cutorch安裝出錯解決方法

以前是不會錯的,但是如今他們更新了THCTensor後,就會出錯了。
The problem is the latest commit these guys have pushed into master in THCTensor file.
I made a local copy of the repo. Took out the problem some code and installed
it using luarocks. Worked for me

這個問題是因為:distro安裝的各種包的穩定版本,會滯後於各個包幾個月時間。如果要單獨更新某個包可以用下面的
解決方法:先要用luarocks安裝一下torch,這會更新distro的torch7的包。

luarocks install torch
luarocks install cutorch
  • 1
  • 2

cudnn6.0

首先當然安裝類似cudnn-8.0-linux-x64-v6.0.tgz,然後

git clone https://github.com/soumith/cudnn.torch -b R6
cd cudnn.torch
luarocks make
  • 1
  • 2
  • 3

另外,現在貌似是torch.cudnn沒優化好??畢竟還不是master分支,關鍵是你裝上之後,跑我那個程式速度好像沒提升啊。說好的2x速度提升呢。。。

執行./install.sh時出現Moses>=1.錯誤

Missing dependencies for nn:moses >= 1.,有時候執行./install.sh時,會出現這個問題。
一句話:網速差啊網速差!你可能會說自己網速不差,這個問題當且僅當網速出問題時才會出現
解決辦法

luarocks install moses
  • 1

是沒有用的!你得單獨下載
Moses,然後參照部落格前面提到的離線安裝torch庫的辦法,安裝完Moses後,就可以正確安裝torch了。

g++依賴包問題

這個問題很可能是因為改了源造成的。直接用Ubuntu14.04的官方源就行,其他版本的也用對應的源即可。

更改/etc/apt/source.list,再末尾加上下面的源,然後update

deb http://archive.ubuntu.com/ubuntu/ trusty main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

為什麼有時候luarocks明明安裝了包,但是還是出現類似Missing dependencies for nn:moses >= 1的錯誤??

以前我直接是講distro包放在主目錄下的torch資料夾內的,然後進行安裝。一般這樣安裝就是luarocks安裝的所有的包,預設在/home/xxx/torch/install內的。然而詭異的是,有時候離線安裝mose包,會出現
這裡寫圖片描述
這說明luarocks竟然安裝在/usr/lib下面了。所以我們需要指定mose的安裝路徑!否則./install是從/home/xxx/torch/install找已經安裝的包的。
解決方案:

luarocks make --tree /home/xxx/torch/install rockspec/moses-1.6.1-1.rockspec
  • 1

其中–tree是指定moses的安裝路徑。

Segamentation Fault錯誤的可能解決辦法

如果你的顯示卡是**Jetson Tegra 或是Jeston TK1之類的,或是用到linux是32位的(超級不推薦)跑程式時出現Segmentation fault (core dumped)。
辦法:使用Lua5.2而不是預設的LuaJIT, 然而令人頭大是是如果模型超過2GB,就會出錯~~
使用Lua5.2的方法見官網 http://torch.ch/docs/getting-started.html

逝去的Torch7

前幾天,傳來噩耗!突然出現Torch的distro的Readme更新,一看:
這裡寫圖片描述
這標誌著Torch正式進入維護模式。額,其實也無所謂了,自從pytorch出來後,就幾乎沒有更新。。所以,你還看torch部落格幹嘛啊,趕緊轉啊!!!!

相關推薦

ubuntu100%成功安裝torch,同時配置cudacudnn成功成仁

總說這些更新不影響主體。所有更新附加在文章最後。 第一次更新: 內容:新增一些Torch7常用庫的安裝,時間:2017.3.20 第二次更新:內容:某些torch庫無法線上安裝,轉成離線安裝的方法,時間:2017.3.31 第三次更新:內容:針對安裝”cutorch”時出錯的問

ubuntu 用anaconda 安裝tensorflow,並配置vscode用來寫程式碼

安裝anaconda (1)bantu下連上網,我們在Anaconda的官網(https://repo.continuum.io/archive/)上下載Anaconda3 4.2.0版本,請讀者根據自己的作業系統下載對應的版本(如是64位還是32位)。 (

Ubuntu JDK的安裝與環境配置

一、JDK bin檔案安裝 在 Ubuntu 64 12.4 位作業系統下安裝jdk-6u45-linux-x64.bin檔案 一、複製JDK到安裝目錄 1.假設JDK安裝檔案放在桌面,我們要安裝的目錄為:/usr/local/java。 我們先在 /u

ubuntutensorflow-gpu環境搭建通過anaconda需預先手動安裝(或環境含有)cudacudnn

第一步 創造一份conda環境 conda create -n tensorflow python=3.6 第二步 啟用tensorflow環境 source activa

ubuntu安裝配置caffe-ssd gpu版本配置cudacudnn

寫在前面:電腦聯想Y410,顯示卡755,ubuntu16.04,本文是caffe-ssd,沒有安裝anaconda,使用的python是系統自帶的2.7版本,以前安裝anaconda後兩種python版本管理不好會出錯。1、將gcc版本降低cuda8.0對應的gcc版本是5

mac安裝tesserocr包的流程錯誤Failed building wheel for tesserocr

按以下是步驟順序安裝: brew install imagemagick brew install tesseract 在命令列輸入tesseract即可驗證是否成功安裝tesseract pip3 install tesserocr 如果最後一步出現Failed buildin

Ubuntu搭建Nginx伺服器+整合RTMP視訊直播流處理邊做邊做更新

簡介: 要求:做一個網頁獲取攝像頭的視訊流,然後將視訊流經過流伺服器推送到後臺視訊處理伺服器,再由後臺視訊處理伺服器推送到流伺服器,最終推送到頁面。如圖: 經過查閱資料,目前有red5以及nginx+nginx-rtmp-module實現,選擇第二種方式來實現。 準備工作:

Linux配置MySQL主從同步不復雜簡單明瞭

明人不說暗話,直接進入正題 一、準備工作 假設兩個伺服器IP如下: 主伺服器:44.92.163.112    -Linux 從伺服器:114.74.22.11     -Linux 注意: 1、主從資料庫版本最好一致; 2、主從資料庫內資料保持一致;

spring-boot configuration processor 讓配置檔案有提示包括自定義的

IDEA新建spring-boot時  勾選該項   勾選該項後pom.xml就會出現 <dependency> <groupId>org.springframework.boot</groupId> <

spring-boot configuration processor 讓配置檔案有提示包括自定義的

IDEA新建spring-boot時  勾選該項 勾選該項後pom.xml就會出現 <dependency> <groupId>org.springframework.boot</groupId> <art

Java全棧程序員之02:UbuntuJava環境安裝配置、測試

配置文件 軟件 三方 shel class 系統配置文件 一件事 devel java10 在上文講完之後,我們手裏的ubuntu只能算是一個上網機,什麽也幹不了,本篇我們將折騰它為開發機。 這裏,我們這裏假定你對linux體系是初級選手,所以本篇會講的啰嗦一點,高手就出

ubuntumysql proxy 安裝配置

1.  安裝 LUA 2. 官網下載預編譯班的mysql-proxy: https://downloads.mysql.com/archives/proxy/ 3. 解壓:tar zxf mysql-proxy-0.6.0-linux-rhas4-x86.tar.gz

ubuntuSSH的安裝、使用與配置root使用者支援SSH

1.使用命令更新安裝列表: sudo apt-get update 輸入當前使用者的管理員密碼回車即可。 2.使用apt-get方式安裝ssh sudo apt-get install openssh-server 輸入Y回車即可。 3.檢視是否安裝成功 su

Linux系統使用入門進階總結2——PC端windowsUbuntu雙系統的安裝以及後期配置

文章轉自 https://blog.csdn.net/VennyJin/article/details/84995192 系統安裝部分 這裡主要借鑑一下@Wisprejudice的博文,總結的非常詳細,親測沒有啥問題,主要過程就是這樣了 https://blog.csdn.net/u

ubuntuMySQL的安裝及遠端連線配置

1.命令視窗中輸入sudo apt-get install mysql-server mysql-client 即可(配置檔案位置:/etc/mysql/my.cnf 啟動檔案位置:/etc/init.d/mysql) 2.安裝期間會提示你輸入ROOT賬號的密碼。 3.安裝完成後,就可以利用命令mysq

ubuntumysql的安裝配置

參考來源:http://www.linuxidc.com/Linux/2013-01/78723p2.htm Ubuntu 12.04下可以使用apt-get方式安裝MySQL,並沒有採用自己安裝再更改各種配置的方法,太麻煩了,如果想自己安裝再改配置的話,下面兩篇文章很

UbuntuCodeBlocks的安裝配置及靜態庫動態庫的簡單使用舉例

1、  從Ubuntu Software Center中搜索Code::Blocks並安裝; 2、  在第一次啟動時選擇GNU GCC Compiler作為預設的編譯器; 3.1、New file ->Project… -> 選中Static library,

Java全棧程式設計師之02:UbuntuJava環境安裝配置、測試

在上文講完之後,我們手裡的ubuntu只能算是一個上網機,什麼也幹不了,本篇我們將折騰它為開發機。 這裡,我們這裡假定你對linux體系是初級選手,所以本篇會講的囉嗦一點,高手就出門左轉吧。 1.安裝 首先我們確定下我們安裝的Ubuntu系統是否已經安裝了java環境。 進入終端,敲入命令su,進

Ubuntu的RabbitMQ安裝與web管理配置

首先在Ubutnu的/etc/apt/sources.list檔案中加入一行 deb http://cz.archive.ubuntu.com/ubuntu trusty main 然後執行 sudo apt-get update sudo apt-get install rabbitm

ubuntu使用qemu安裝虛擬機器並配置橋接網路

一、虛擬機器的建立:        1.ubuntu下安裝好qemu後,使用如下命令建立虛擬機器:     qemu-img create -f qcow2 voltdb.img 10g     -