2020-04-13:今天一整天時間在配置Linux下的TensorFlow環境,着實心累
1. 目的:
- Linux服務器下有3塊2070GPU,我的reproduce代碼是TensorFlow寫的,所以要在該服務器下配置GPU版的TensorFlow
2. 連接Linux服務器,連網,數據互傳:
- 在windows下使用遠程桌面,連接linux服務器,輸入ip,用戶名:ivlab,連接時選擇'console' module,輸入密碼,即可連接成功
- 將Linux服務器連網:sudo vpn-connect -c,輸入校園網的上網賬號+@a,密碼,之后再輸入sudo vpn-connect 可以連接上網
- 從windows向linux傳輸數據:建議使用Xftp6軟件,可以網上下載,學生賬號免費使用。Xftp6使用方法:
- 雙擊打開Xftp6,新建會話(如下),填寫相關內容
- 名稱可以任意;主機是Linux的ip地址;協議旋轉SFTP即可,端口號:22即可;用戶名:ivlab,密碼:xxx
- 連接建立成功以后,可以直接從windows拖拽文件到linux。為了維護服務器健康,將文件放在home/ivlab/new_home/zx/目錄下,這個目錄是4TB的硬盤

- Linux 服務器驅動安裝的教程
- 服務器的版本型號是ubuntu 16.0.4,根據教程安裝https://blog.csdn.net/fdqw_sph/article/details/78745375
- 下載顯卡驅動器, NVIDIA-Linux的驅動器在Home文件夾下:NVIDIA-Linux-x86_64-440.100.run
- 以下方法重裝了驅動以后,可能屏幕分辨率很小,需要使用獨顯連接一下屏幕讓其工作一下就可以了!
-
#禁用nouveau lsmod | grep nouveau
#卸載掉原有驅動 sudo apt-get remove --purge nvidia-*
#安裝nvidia driver sudo chmod a+x NVIDIA-Linux-x86_64-440.100.run //獲取權限 sudo ./NVIDIA-Linux-x86_64-440.100.run –no-x-check –no-nouveau-check –no-opengl-files //安裝驅動
–no-x-check 安裝驅動時關閉X服務 –no-nouveau-check 安裝驅動時禁用nouveau –no-opengl-files 只安裝驅動文件,不安裝OpenGL文件
3. 安裝Anaconda虛擬環境、CUDN、cudnn、TensorFlow-gpu、降級numpy
- 打開Terminal,輸入以下代碼創建名為zx,python=3.5的虛擬環境
conda create -n your_env_name python=X.X # 例如,我安裝的3.5的python conda create -n zx python=3.5
- conda常用的命令:
conda activate zx # 激活指定的虛擬環境 conda list # 查看當前環境的包和模塊 conda deactivate # 關閉當前的虛擬環境 conda info -e # 查看當前存在哪些虛擬環境
- 虛擬環境下安裝CUDA 和 cudnn: https://www.cnblogs.com/elitphil/p/11833815.html
在conda虛擬環境中安裝CUDA conda install cudatoolkit=8.0 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/linux-64/ (上面兩行是同一條語句的) # 我安裝的是8.0的CUDA 在conda虛擬環境中安裝cudnn conda install cudnn=6.0 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/linux-64/ (上面兩行是同一條語句的) #我安裝的是6.0的cudnn
- pip安裝tensorflow-gpu
pip install tensorflow-gpu==1.4.0 -i https://pypi.tuna.tsinghua.edu.cn/simple # 在Linux的虛擬環境下,我安裝的是1.4.0的TensorFlow
# 這時可能會提醒安裝scripy 和 pypml,同樣適用pip安裝
- 降級numpy,以上步驟安裝完TF,運行時總是出現大量關於numpy的警告,原因是當前TF版本與已安裝的numpy版本不兼容,所以降級numpy
pip uninstall numpy # 先卸載numpy pip install --upgrade numpy==1.14.5 # 將numpy降級到1.14.5
- 以上步驟結束,在pycharm運行TensorFlow時,可能會提示tf沒有特定的初始化函數,但是不報錯,可以使用以下方法解決:
- https://stackoverflow.com/questions/51585095/module-tensorflow-has-no-attribute-constant(注意將1.9.0改成1.4.0)
- 或者重啟pycharm也可以(應該)
4. 安裝tf2.x時,原本的tf1.x不可用,出現 ImportError: cannot import name 'abs'錯誤
pip install --upgrade tensorflow==1.4.0 # 更新自己的tensorflow cpu版 pip install --upgrade tensorflow-gpu==1.4.0# 更新自己的tensorflow-gpu版
5. pycharm導入虛擬環境
- 定位虛擬環境位置
conda info -e # 查看虛擬環境所在的位置,記住它
- 將pycharm的project的python解釋器設置到上方目錄的python文件上,即可
6. 使用GPU、常用設置語句
- gpu版本的TensorFlow會優先使用gpu進行運算,但是會默認使用第1塊gpu:'/gpu:0'。常用語句:
with tf.device('/gpu:0'): # 指定運算發生在哪個設備上。 # 所有的cpu只有1個名字:/cpu:0 # 每塊GPU都有唯一的名字,如/gpu:0, /gpu:1, /gpu:2 config = tf.ConfigProto(log_device_placement=True, allow_soft_placement=True) # log_...表示在執行代碼時,顯示運算發生在哪些設備上,allow_...表示將GPU不能運行的操作,自動加載到CPU上 with tf.Session(config=config) as sess: # 在生成會話時,將上述config參數設置進來 import os os.environ['CUDA_VISIBLE_DEVICES']='2' # 只使用第3塊GPU,注意這是字符串 config = tf.ConfigProto() config.gpu_options.allow_growth = True # 讓GPU按需分配顯存 config.gpu_options.allow_growth = 0.4 # 直接指定,讓代碼占用所有可使用的GPU的40%顯存 with tf.Session(config=config) as sess: # 生成會話時,設置config
