[環境配置]給遠端服務器配置tensorflow環境

前情提要

個人需要跑一個基於Tensorflow的py代碼,之前都是在PC上運行但是使用多主體的強化學習時,迭代到1600左右就不動了,考慮到實驗室還有服務器資源,遂想將tf、anaconda、conda等環境配置到遠端服務器上。在此記錄

目標是:

1.在PC的pycharm上能查看遠端服務器的資源並進行交互;

2.能通過PC的pycharm,使用遠端服務器的資源運行使用tensorflow-gpu的python代碼。

首先澄清一下

SSH可以視作一個連接遠端服務器的工具,平時在cmd中用ssh相關指令完成使用

1.使pycharm與遠端服務器建立連接

經好友hd指點,相比於用cmd連接遠端服務器,pycharm可以用小文件夾的形式查看服務器的內容,避免了頻繁使用ls命令的麻煩,如下圖是連接遠端服務器後的文件結構,還是蠻方便的

圖1 pycharm中的遠端服務器文件結構

這部分要做的工作主要有三:

1.詢問服務器端口號、type、port,並向服務器的管理員申請一個用戶名及密碼

比如這樣:用戶名:rgs;密碼:************。域名:***.***.***.***;type:ssh;Port: 22

2.在pycharm上進行連接遠端服務器的設置

https://blog.csdn.net/yeler082/article/details/83818771,可參考這篇文章,這步還是沒什麼坑的。

到這裏已經可以出現圖1中的內容了,但是無法通過命令行與遠端服務器交互

3.安裝ssh以實現通過命令行與遠端服務器交互

https://blog.csdn.net/k_young1997/article/details/90314229,參考這篇文章,沒有安裝的過程就是解壓一個文件夾然後配置一下環境就好了。

驗證是否成功:進入cmd,輸入

ssh 用戶名@遠端服務器的域名 -p 22

 出現下圖可見已經連接上了遠端服務器

# 查看系統版本:
uname -a
# 查看Nvidia顯卡信息
nvidia-smi

執行過上述步驟後,在pycharm中,通過下方的Terminial欄也可以與遠端服務器通過命令行交互了

2.在遠端服務器上配置tensorflow環境

現在我們相當於有了一臺新電腦,這真的不一定是個令人開心的事,因爲配置環境是真真令人頭痛,這裏我們打算安裝Anaconda、conda、tensorflow,python我在pc上配置的是3.5,能運行大部分代碼,所以也python版本打算選擇3.5(然而實際選了3.66)。

2.1.安裝python版本控制軟件Anaconda

1.Anaconda中,我們可以創建不同版本的python環境,所以Anaconda的版本是和其所支持的python的版本掛鉤的。這裏列出一個Anaconda和python版本對應關係表(轉自這篇博文

  • 首先解釋一下上表。 anaconda在每次發佈新版本的時候都會給python3和python2都發佈一個包,版本號是一樣的。
  • 表格中,python版本號下方的離它最近的anaconda包就是包含它的版本。
  • 舉個例子,假設你想安裝python2.7.14,在表格中找到它,它下方的三個anaconda包(anaconda2-5.0.1、5.1.0、5.2.0)都包含python2.7.14;
  • 假設你想安裝python3.6.5,在表格中找到它,它下方的anaconda3-5.2.0就是你需要下載的包;
  • 假設你想安裝python3.7.0,在表格中找到它,它下方的anaconda3-5.3.0或5.3.1就是你需要下載的包;

友人提到Anaconda版本向下兼容,因此打算從https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/?C=M&O=A下載最新的版本Anaconda3-2020.02-Linux-x86_64.sh

2.https://blog.csdn.net/zxxxiazai/article/details/102780990,參考這篇博文完成Anaconda的安裝。

爲後續方便,將pc上傳文件到遠端服務器的方法copy一下

問題(-sh: 2: conda: not found/-sh: 3: source: not found)

 在文件夾目錄下已經出現了anaconda3但是輸入conda顯示

-sh: 2: conda: not found

之後我按照conda: not found作爲關鍵字去查找,以爲是環境變量沒有配置好,但是按照網上教程修改環境變量後,使用source執行的時候,卻出現了

-sh: 2: source: not found

這時候我發現可能是一些更底層的部分出了問題。然後發現在conda出現問題後,我在終端的方向鍵無法調出歷史記錄,而是顯示“^[[A”之類的鬼話,因此將目光放在瞭如何解決方向鍵的問題或許更好。

查找資料後發現

不巧的是,chsh和usermod都需要權限我並沒有,本以爲又gg了,突然看到這篇博文說經常輸入“bash”命令不厭其煩,因此嘗試在命令行輸入bash,emm,之後可以使用conda了,另外該博文所述方法經過我嘗試有用,可以在進去shell的時候就以bash的狀態進入。

2.2.安裝顯卡驅動程序CUDA

WIN中點擊電腦屬性修改環境變量的操作,在Linux中就是需要對profile文件進行修改。

如果需要用到GPU的話,就需要進行CUDA的安裝。

這部分可以參考https://blog.csdn.net/bryant_meng/article/details/78559907,但是需要注意的是,文章中一般配置環境都是使用如下語句的:

vim /etc/profile

其中“/etc”說明是在根目錄下的etc文件夾,對其中profile文件內容進行修改,若修改了對整個服務器的用戶均生效。我們一般是沒有這個權限的。相對應的,在我們的“/home/用戶名”,也就是自己的文件夾下其實也有一個profile,在那裏進行修改就可以啦

需要提醒的是,如果你的服務器中已經有人用過GPU的tf的話,那CUDA應該已經安裝好了,你可以在/usr/local/裏面看一下有沒有,如果有的話,那麼再按照本節列的參考教程將路徑輸入到/home/你的用戶名下的profile中即可。

2.3.設置pycharm的遠端解釋器以及上傳自己的文件到遠端服務器

這部分目前我也沒遇到啥坑,按照這篇博文就好https://www.cnblogs.com/sddai/p/9648211.html

 

這之後若遇到問題,請繼續本文閱讀。

問題1:ImportError: libcudnn.so.6 

是這樣,安裝完anaconda等環境之後,我在python中試了一下調用tf,發現沒事就溜之大吉了,下午在pycharm上跑代碼的時候發現tf版本不對,然後卸了tf2安裝了tf1.3,之後出現了倆情況,

1.在遠端服務器命令行import tf報錯

ImportError: libcudnn.so.6: cannot open shared object file: No such file or directory

 這裏需要注意一下,這個報錯信息基本上都是lib打頭的,搜百度的時候別弄混了。如果你出現這個錯誤,說明是cudnn沒安裝對,要注意版本號的對應,解決方法如下:

要下載合適的版本

https://developer.nvidia.com/rdp/cudnn-download (官網)
cudnn-8.0-linux-x64-v5.1.tgz(不兼容)

解決方案:
cudnn-8.0-linux-x64-v6.0.tgz(兼容)
http://download.csdn.net/download/guotong1988/9918527

或者在百度雲盤下載,鏈接:http://pan.baidu.com/s/1dFs8o4D 密碼:a0da

tar -xvzf cudnn-8.0-linux-x64-v6.0.tgz  # 解壓,會自動生成一個cuda文件夾

解壓後是cuda文件夾(經友人tl提醒,需要注意下面的語句中,cd到的cuda並非是真正的cuda,而是cudnn壓縮包解壓後生成的那個文件夾)

下面要將cudnn解壓後的文件夾(cuda)中的cudnn.h和libcudnn複製到真正的cuda所在的文件夾(代碼中該文件夾的名稱爲cuda-8.0)中

cd cuda
cp include/cudnn.h /home/user_name/cuda-8.0/include
cp lib64/libcudnn.* /home/user_name/cuda-8.0/lib64

CUDNN安裝完成,查看下版本

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

此處來自這篇博客

 完成上述步驟後,在遠端服務器的終端就可以正常import tensorflow啦!!

問題2:ImportError:libcusolver.so.8.0: cannot open shared object file: No such file or directory

solution:

修改你自己文件夾下的bashrc文件

vim ~/.bashrc

,加上如下內容

export LD_LIBRARY_PATH=LD_LIBRARY_PATH:/home/用戶名/cuda-8.0(這裏可能需要修改)/lib64
export CUDA_HOME=/home/用戶名/cuda-8.0(這裏可能需要修改)

,之後激活命令

source ~/.bashrc

問題3:此時若在pycharm上還是無法正常運行

pycharm的Run -> Edit Configurations 

Environment variables中添加: 

LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64 

搞定了!!!哭了!!!

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