close

為了讓Windows也能跑deep learning,所以趁這次AMD新CPU上次就順便將電腦升級。

接下來就是要安裝CUDA與python還有tensorflow。

許多人對安裝步驟有疑慮,所以記錄一下安裝過程的心得。

 

電腦配備為:

CPU:AMD Ryzen 7 1700

主機板: 華碩 PRIME B350-PLUS

顯卡GPU: 華碩 DUAL-GTX1060-O3G-GAMING

RAM: 美光 Micron Crucial Ballistix Tactical戰鬥版 D4 3000

OS:WIN10 ent 企業版

(2019.9.13 已經更新至python 3.7 + cuda 10.1 + tensorflow 1.14)

 

首先要將WIN10 ent企業版更新到1607,進入系統更新讓系統下載並更新即可,

不然沒辦法安裝GTX 1060的驅動程式,會出現安裝系統不相容的異常訊息。

在更新系統之際,就先安裝了Anaconda3-4.3.0.1 with python3.6以及VS2015。

等到GTX驅動程式正常安裝後,要先查詢CUDA與cuDNN版本是否與顯卡相符。

cuDNN下載前要先註冊,回答一些為何要安裝與用途的問卷。

確認之後,就安裝了最新版的CUDA8.0與cuDNN5.1。

下載vs: https://www.visualstudio.com/vs/community/

下載cuda: https://developer.nvidia.com/cuda-toolkit

下載cuDNN: https://developer.nvidia.com/cudnn

下載Anaconda: https://repo.continuum.io/archive/.winzip/Anaconda3-4.2.0-Windows-x86_64.zip

 

用anaconda的好處是已經整合了很多套件,也會設定好相關路徑,就可以用接下來的方式安裝需要的library。

1. 用anaconda prompt或windows10的系統管理員的CMD輸入:

pip install --ignore-installed --upgrade pip setuptools

來更新setuptools。

 

2. 接著為了能讓CUDA執行C++就要安裝MinGw

在windows的cmd模式下,輸入conda install mingw libpython ipykernel

 

中間似乎有出現一些小錯誤訊息,不過都先當作沒看到。

 

再來重複1 & 2步驟後接著執行步驟3。

(2018.2.1 更新) tensorflow從1.2.1開始已經支援python3.6,測試過是沒啥問題,除非是遇到tensorflow版本差異所造成的函式錯誤。

也將CUDA升級到9.0(9.1官方是寫有支援但import tensorflow的時候卻是要找9.0的DLL),cuDNN升級到7.0.5。

 

 

3. 照著官網的步驟安裝tensorflow最新版 https://www.tensorflow.org/install/install_windows

  1. C:> conda create -n tensorflow  #也可以不新建這個環境直接跳到第3步驟開始
  2. Activate the conda environment by issuing the following command:

    C:> activate tensorflow
     (tensorflow)C:>
  3. 有GPU(GTX 1060)的話當然是安裝GPU版(會直接安裝最新版本,可能會有舊的CODE出現錯誤) : (tensorflow)C:>
     pip install --ignore-installed --upgrade tensorflow-gpu 
  4. 如果只有CPU也想跑tensorflow的話也是可以用無GPU的版本 : (tensorflow)C:>
     pip install --ignore-installed --upgrade tensorflow

          5. 怕lib有問題不想安裝最新版,而要指定版本的話(需自行確認版本號或whl的編號)

           pip/pip3 install --ignore-installed tensorflow==1.5.0

4. 利用一些Script執行是否能正確執行tensorflow,主要是只要能在python的環境下輸入並執行

 import tensorflow as tf

沒有出現任何訊息,大致上就成功一半了。

自己直接在spyder的ipython console下輸入,並copy官網的範例碼是可以正常輸出字串的。

import tensorflow as tf

hello = tf.constant('Hello, TensorFlow!')

sess = tf.Session()

print(sess.run(hello))

5. 複雜一點可以嘗試下方的script:

from __future__ import print_function

import matplotlib

import matplotlib.pyplot as plt

import tensorflow as tf

import time

 

def get_times(maximum_time):

 

   device_times = {

       "/gpu:0":[],

       "/cpu:0":[]

   }

   matrix_sizes = range(500,50000,50)

 

   for size in matrix_sizes:

       for device_name in device_times.keys():

 

           print("####### Calculating on the " + device_name + " #######")

 

           shape = (size,size)

           data_type = tf.float16

           with tf.device(device_name):

               r1 = tf.random_uniform(shape=shape, minval=0, maxval=1, dtype=data_type)

               r2 = tf.random_uniform(shape=shape, minval=0, maxval=1, dtype=data_type)

               dot_operation = tf.matmul(r2, r1)


 

           with tf.Session(config=tf.ConfigProto(log_device_placement=True)) as session:

                   start_time = time.time()

                   result = session.run(dot_operation)

                   time_taken = time.time() - start_time

                   print(result)

                   device_times[device_name].append(time_taken)

 

           print(size,device_times)

 

           if time_taken > maximum_time:

               return device_times, matrix_sizes

 

device_times, matrix_sizes = get_times(5)

gpu_times = device_times["/gpu:0"]

cpu_times = device_times["/cpu:0"]

 

plt.plot(matrix_sizes[:len(gpu_times)], gpu_times, 'o-', label='gpu time')

plt.plot(matrix_sizes[:len(cpu_times)], cpu_times, 'o-', label='cpu time')

plt.legend()

plt.ylabel('Time')

plt.xlabel('Matrix size')

plt.show()

 

 

結論:

看來大致上的順序會是要:

1. 安裝好GPU相關的驅動,如驅動程式不用說,CUDA & cuDNN

2. 程式IDE先裝後裝都可以,只砍掉anaconda並重新安裝mingw也是能執行tensorflow

3. 確認上方兩個裝完後再來安裝依附在IDE下的deep learning相關套件,如tensorflow與theano,

4. 用來當介面的keras,在安裝完tensorflow這個backend後,在CMD下輸入pip install keras 或 conda install -c conda-forge keras 就能使用了

接下來在python內就看要直接使用tensorflow或使用keras來呼叫了,一般是使用keras在coding上會比較方便一些。


 

2018.2.2更新補充:

1. Tensorflow r1.5 已經可以支援cuda 9.0 + cuDNN 7.0.5 + VS2017

2. 如果使用anaconda prompt安裝tensorflow的時候,出現TypeError: parse() got an unexpected keyword argument 'transport_encoding',

則先執行conda install -c anaconda html5lib,如果再無效就只能conda install pip

3. 為了升級這些環境,發現其實順序並沒有那麼重要,只要確定tensorflow的相關套件與CUDA有安裝正確相依版本比較重要

 

2019.9.13更新補充:

1. 安裝Anaconda3-2019.07 python 3.7

2. cuda 10.1版

3. 直接從conda UI介面選擇安裝tensorflow(根據conda可以安裝的版本下載安裝)

arrow
arrow
    創作者介紹
    創作者 LOGa 的頭像
    LOGa

    流浪者之歌

    LOGa 發表在 痞客邦 留言(0) 人氣()