為了讓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
-
C:> conda create -n tensorflow #也可以不新建這個環境直接跳到第3步驟開始
-
Activate the conda environment by issuing the following command:
C:> activate tensorflow (tensorflow)C:>
- 有GPU(GTX 1060)的話當然是安裝GPU版(會直接安裝最新版本,可能會有舊的CODE出現錯誤) : (tensorflow)C:>
pip install --ignore-installed --upgrade tensorflow-gpu
- 如果只有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可以安裝的版本下載安裝)