GPU版本的Syntaxtnet環(huán)境搭建

打算記錄兩部分,一部分是關于編譯gpu版本的syntaxnet的內(nèi)容,另一部分是關于中文句法依存模型訓練方面的內(nèi)容。本文是GPU版本Syntaxnet環(huán)境搭建部分。

關鍵字

Syntaxnet; GPU; Ubuntu16.04; TITANX (Pascal); CUDA8.0

環(huán)境

  • 操作系統(tǒng): Ubuntu 16.04
  • 顯卡:TITANX (PASCAL)
  • CUDA版本: 8.0
  • cuDNN版本:5.1

動機

由于CPU版本下的Syntaxnet訓練數(shù)據(jù)太過于緩慢,所以考慮利用GPU進行訓練(ps: 在syntaxnet中GPU還是有較明顯的加速效果)

目標

目前通用的句法依存工具,比如哈工大的語言云效果也不錯了,但是在使用中還是發(fā)現(xiàn)了一些問題。利用syntaxnet工具訓練中文句法依存模型,通過人工加入領域相關的標注預料,期望提高在特定領域下中文句法分析的效果。

操作要點

  1. 安裝TITAN X的驅(qū)動
  2. 安裝CUDA8.0
  3. cuDNN 5.1
  4. 安裝syntaxnet需要依賴
  5. 編譯gpu版的syntaxnet
  6. 測試安裝結果

以下針對上述的步驟展開描述

1. 安裝TITAN X(PASCAL)驅(qū)動

TITAN X驅(qū)動下載
  • 安裝驅(qū)動時,需要關閉ubuntu中的開源驅(qū)動 nouveau(可以百度如何在ubuntu中禁用nouveau), 關閉x server(不要問我為啥,因為安裝成功的這次是關閉的), 同時也不安裝OpenGL。對于這三個操作,除了禁用nouveau,其他兩個操作都是可以在安裝驅(qū)動時候的選擇的。網(wǎng)上,提供了一種更加簡便的方法,即在運行驅(qū)動文件時指定參數(shù)。
# 參考:http://blog.csdn.net/chaihuimin/article/details/71006654?locationNum=2&fps=1
sudo ./NVIDIA_xxxx.run -no-x-check -no-nouveau-check -no-opengl-files 

2. 安裝CUDA8.0

下載指定版本的cuda 8.0,然后按照圖中的Installation instructions進行安裝。建議選擇*.run版本的,.deb版本總感覺有些問題。如果已經(jīng)安裝了TITAN X驅(qū)動,那么在安裝的時候不要再次安裝驅(qū)動。(下載地址:https://developer.nvidia.com/cuda-downloads

cuda8.0下載

cuda8.0默認安裝在/usr/local/cuda-8.0, 注意/usr/local/cuda時它的symbolic link, 注意在cuda安裝完成以后需要配置環(huán)境變量(其實,在cuda安裝完成以后,打印的消息也有提示需要配置環(huán)境變量)

# 執(zhí)行如下命令
 vim  ~/.bashrc
# 在~/.bashrc文件中添加如下環(huán)境變量
export CUDA_HOME=/usr/local/cuda-8.0
export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-8

3. 安裝cuDNN

  • 此處我選擇的是cuDNN5.1 for CUDA 8.0的版本, 下載cuDNN的時候需要注冊NVIDIA的賬號,注冊完成以后既可以下載(https://developer.nvidia.com/rdp/cudnn-download),在下載時既可以下載.deb版本,也可以下載.tgz版本。此處的安裝方法,可以參考官方文檔。不過5.1的文檔寫的比較復雜,我當時參考了7.0的安裝方法,進行安裝以及測試,此處感覺坑少。驅(qū)動和cuDNN安裝都可以參考官方文檔,在cuDNN下載選項,可以選擇cuDNN-Installation-Guide
    cuDNN7.0linux .tgz安裝方法

    如果選擇了*.deb的方法安裝, 選擇安裝樣例,安裝完成以后可以進行測試,如下。
    cuDNN7.0linux .deb安裝方法.png

4. 安裝syntaxnet依賴

參考syntaxnet的github網(wǎng)站https://github.com/tensorflow/models/tree/master/syntaxnet

syntaxnet依賴安裝

5. 編譯gpu版的syntaxnet

安裝完syntaxnet運行可能需要的依賴以后,接著執(zhí)行syntaxnet的編譯過程,參考https://github.com/tensorflow/models/issues/248中的utkrist的答案,如下圖

image.png

注意,在./configure的執(zhí)行過程中,如果出現(xiàn)了找不到cuDNN相應的文件,那么使我們在輸入cuDNN的版本號時輸入有問題,比如輸入7和7.0是不一樣的。嚴格安裝utkrist的方法來即可。
ps: 我在安裝的過程中,沒有報錯,但是在進行測試的試試,有一些test無法通過,比如train_parser,有提示顯示數(shù)據(jù)數(shù)據(jù)太大的之類的原因,我忽略了。

6. 測試安裝結果

編譯完全通過以后,可以運行syntaxnet自帶的例子,不過我選了手上有的中文預料,進行測試。測試腳本大量參考了這個項目https://github.com/dsindex/syntaxnet(是一個利用syntaxnet訓練韓語句法依存模型的項目)。運行測試腳本后,輸出如下,表面已經(jīng)使用上了TITAN X顯卡。

訓練句法依存模型-測試

此時,在查看nvidia-smi,發(fā)現(xiàn)所有顯存都已經(jīng)被占滿, 但是只有一個GPU在工作。


image.png

在同一的數(shù)據(jù)集上,GPU版本syntaxnet相比于CPU版本syntaxnet, 計算效率只有80 %多的提升,在運行過程中發(fā)現(xiàn),大多數(shù)時間GPU的使用效率都是非常非常低的,3%左右。這個問題,希望有小伙伴能夠指導一下。

參考文獻

https://github.com/dsindex/syntaxnet
https://github.com/tensorflow/models/tree/master/syntaxnet
https://github.com/tensorflow/models/issues/248
https://github.com/tensorflow/serving/issues/327
其他

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容