近期計劃寫一寫機器學習微信小程序的開發教程,但微信開發工具只提供了Windows和Mac OS版本,作為一名長期使用Linux系統的開發人員,雖然始終認為Linux系統才是對開發者最友好的,但微信團隊作出這種選擇,肯定經過調查。不管我怎樣認為Linux系統如何之好,Windows系統畢竟是主流,大多數開發者使用的系統也是Windows系統,所以打算寫一寫Windows環境下的機器學習開發環境配置,內容包括Python環境、CUDA、IDE以及微信開發者工具等,這是其中的一篇。
由于歷史原因,python長期存在兩個版本,python 2和python 3,而且存在兼容問題。雖然經過開發者不斷的努力,普遍轉向Python 3,但Python 2仍然像打不死的小強,頑強的存在著。比如大多數Linux發行版本,python 2依然是默認版本。再加上python社區非常活躍,各種python庫也在不停的向前發展,不同版本python庫之間不兼容的情況一直存在。有時開發者也很尷尬,比如發布了一個項目到github,會有讀者過來問,為什么代碼在我這兒出錯?
針對這一狀況,建議python開發者使用Anaconda。Anaconda是可以便捷獲取python包且對包能夠進行管理,同時對環境可以統一管理的發行版本。Anaconda包含了conda、Python在內的超過180個科學包及其依賴項。使用Anaconda有什么好處呢?可以建立python虛擬環境。
比如針對python 2的歷史遺留代碼,建立一個虛擬環境,針對python 3 新代碼,再建立一個虛擬環境,兩套環境互相隔離,互不影響。不會因為在安裝了一個python 2的包,而使得python 3代碼無法執行。Python虛擬環境和虛擬機有所不同,它是一種輕量級的隔離機制,所以在空間和速度上幾乎沒有額外的開銷。
Anaconda是一攬子解決方案
python的用戶可能知道,通過安裝virtualenv,也可以建立python虛擬環境,但需要下載python,設置環境變量,安裝pip,安裝virtualenv,…諸多繁瑣步驟,而且為了使用方便,可能還要安裝wrap腳本。而anaconda作為python環境一攬子解決方案,安裝包中包含了python發行包,集成包管理工具,只需要下載和安裝一個軟件包,即可解決。而且Anaconda支持Windows、Linux及Mac OS系統,在各操作系統下操作一致,減少操作系統遷移的成本。
Anaconda的虛擬環境可復制
Anaconda的虛擬環境可以導出為一張列表,列表上包含環境中所有python包的名稱及版本信息,這樣他人可以導入該列表,復制出一個一模一樣的python虛擬環境。列表為文本文件,便于分享,可以加入git管理,在開發過程中,哪些python庫依賴發生了變化,可以追溯。
下面就說說在Windows 10下如何安裝和配置Anaconda。
獲取Anaconda
和Windows下其它應用軟件的安裝類似,首先去Anaconda的官網下載安裝包,下載地址為:https://www.anaconda.com/distribution/
建議選擇Python 3.7的64位版本:
這里選擇python 3.7,并不意味著python虛擬環境只能是python 3,而是默認的python虛擬環境為python 3。雖然python 2的生命力很頑強,但是新寫的代碼建議用python 3。
安裝軟件包。根據安裝向導進行安裝即可,選擇安裝類型這個步驟需要注意:
建議選擇 Just Me 這個選項,如果選擇All users,可能需要管理員權限。如果你是系統的管理員用戶,這個倒問題不大。
創建python虛擬環境,安裝tensorflow
Anaconda安裝之后,我們可以看到Windows啟動欄多了Anaconda3 (64-bit)程序組,點擊Anaconda Prompt(Anaconda3):
啟動Anaconda命令行:
我們可以注意到命令行前面有一個(base)字樣,這表明當前Anaconda的虛擬環境名為base,這也是Anaconda默認的虛擬環境。
接下來為tensorflow創建一個虛擬環境。因為TensorFlow有支持GPU的版本,如果要TensorFlow支持GPU,還需要額外安裝一些軟件和配置,先暫時放一放,到下篇文章再詳細展開。我們把虛擬環境命名為tensorflow_gpu:conda create --name tensorflow_gpu
切換到我們創建的tensorflow_gpu虛擬環境:activate tensorflow_gpu
可以注意到,命令行前面的字樣變成了(tensorflow_gpu),表明已經切換到tensorflow_gpu這個虛擬環境:
安裝tensorflow-gpu包:conda install -c anaconda tensorflow-gpu
當然你也可以采用pip的方式進行安裝,這個看個人喜好。
可以使用如下的代碼進行測試:import tensorflow as tf
print(tf.__version__)
tf.test.is_gpu_available()
結果如下:1.13.1
2019-08-09 15:45:13.852793: I tensorflow/core/platform/cpu_feature_guard.cc:141]
Your CPU supports instructions that this TensorFlow binary was not compiled to
use: AVX AVX2
2019-08-09 15:45:15.069595: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1
433] Found device 0 with properties:
name: GeForce GTX 950M major: 5 minor: 0 memoryClockRate(GHz): 1.124
pciBusID: 0000:01:00.0
totalMemory: 2.00GiB freeMemory: 1.92GiB
2019-08-09 15:45:15.085195: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1
512] Adding visible gpu devices: 0
Traceback (most recent call last):
File "", line 1, in
File "C:\Anaconda3\envs\tensorflow_gpu\lib\site-packages\tensorflow\python\fra
mework\test_util.py", line 1242, in is_gpu_available
for local_device in device_lib.list_local_devices():
File "C:\Anaconda3\envs\tensorflow_gpu\lib\site-packages\tensorflow\python\cli
ent\device_lib.py", line 41, in list_local_devices
for s in pywrap_tensorflow.list_devices(session_config=session_config)
File "C:\Anaconda3\envs\tensorflow_gpu\lib\site-packages\tensorflow\python\pyw
rap_tensorflow_internal.py", line 1829, in list_devices
return ListDevices(status)
File "C:\Anaconda3\envs\tensorflow_gpu\lib\site-packages\tensorflow\python\fra
mework\errors_impl.py", line 528, in __exit__
c_api.TF_GetCode(self.status.status))
tensorflow.python.framework.errors_impl.InternalError: cudaGetDevice() failed. S
tatus: CUDA driver version is insufficient for CUDA runtime version
可以看出,tensorflow包導入和使用沒有問題,當前使用的TensorFlow 1.13.1版本,但沒有GPU支持。如何讓TensorFlow支持GPU加速,下一篇文章再詳細說明。
如果要退出當前的虛擬環境,可以使用如下命令:conda deactivate
導出和導入虛擬環境
現在我們創建了一個名為tensorflow_gpu的虛擬環境,如果要分享給他人,可以將環境導出為一個文本文件:activate tensorflow_gpu
conda env export > c:/tensorflow_gpu.yml
上面的命令將環境導出到tensorflow_gpu.yml文件中,我們可以用文本編輯器打開看一看里面的內容:name: tensorflow_gpu
channels:
- anaconda
- defaults
dependencies:
- _tflow_select=2.1.0=gpu
- absl-py=0.7.1=py37_0
- astor=0.7.1=py37_0
- blas=1.0=mkl
- ca-certificates=2019.5.15=0
- certifi=2019.6.16=py37_0
- cudatoolkit=10.0.130=0
- cudnn=7.6.0=cuda10.0_0
- gast=0.2.2=py37_0
- grpcio=1.16.1=py37h351948d_1
- h5py=2.9.0=py37h5e291fa_0
- hdf5=1.10.4=h7ebc959_0
- icc_rt=2019.0.0=h0cc432a_1
- intel-openmp=2019.4=245
- keras-applications=1.0.8=py_0
- keras-preprocessing=1.1.0=py_1
- libprotobuf=3.8.0=h7bd577a_0
- markdown=3.1.1=py37_0
- mkl=2019.4=245
- mkl-service=2.0.2=py37he774522_0
- mkl_fft=1.0.12=py37h14836fe_0
- mkl_random=1.0.2=py37h343c172_0
- mock=3.0.5=py37_0
- numpy=1.16.4=py37h19fb1c0_0
- numpy-base=1.16.4=py37hc3f5095_0
- openssl=1.1.1=he774522_0
- pip=19.1.1=py37_0
- protobuf=3.8.0=py37h33f27b4_0
- pyreadline=2.1=py37_1
- python=3.7.3=h8c8aaf0_1
- scipy=1.3.0=py37h29ff71c_0
- setuptools=41.0.1=py37_0
- six=1.12.0=py37_0
- sqlite=3.29.0=he774522_0
- tensorboard=1.13.1=py37h33f27b4_0
- tensorflow=1.13.1=gpu_py37h83e5d6a_0
- tensorflow-base=1.13.1=gpu_py37h871c8ca_0
- tensorflow-estimator=1.13.0=py_0
- tensorflow-gpu=1.13.1=h0d30ee6_0
- termcolor=1.1.0=py37_1
- vc=14.1=h21ff451_3
- vs2015_runtime=15.5.2=3
- werkzeug=0.15.4=py_0
- wheel=0.33.4=py37_0
- wincertstore=0.2=py37_0
- zlib=1.2.11=h62dcd97_3
prefix: C:\Anaconda3\envs\tensorflow_gpu
內容比較容易理解,就是安裝了哪些依賴包。除了導出之外,我們還可以手工創建,也可以修改導出的yml文件,比如修改虛擬環境的名稱,這屬于比較高級的操作,有興趣可以看看Anaconda官方文檔。
他人在得到這份yml文件后,可以復刻Anaconda虛擬環境:conda env create -f tensorflow_gpu.y
到此,Windows 10下的機器學習python開發環境就配置好了,接下來還需要更進一步,下一篇文章將講講Windows 10下GPU的支持,敬請關注。
參考https://docs.conda.io/projects/conda/en/latest/index.html
Installing a Python Based Machine Learning Environment in Windows 10
Anaconda介紹、安裝及使用教程