Mac上搭建一個乾淨的TensorFlow環境

Bob-Chen發表於2017-02-18

作為一個小前端,最近想折騰下深度學習方面的東西,這不 TensorFlow 剛釋出了 1.0 嘛。於是就想在我的 Mac Book 上跑一跑。

MacOS 非常好,自帶了 Python 2.7,這是 TensorFlow 必備條件之一,但是我並不想汙染系統環境,而且直接裝在系統上,也不方便備份。

搞個虛擬機器看起來還是必要的,同時我還希望這個環境是我可以在 Mac 上寫程式碼,在虛擬機器中執行。這時我發現了 Vagrant 這個工具。

Vagrant

Vagrant 不是虛擬機器,而是一個虛擬機器管理和配置工具,需要和虛擬機器配合使用。Vagrant 內建了 VirtualBox 支援,剛好我電腦上裝了,如果你用的是 Parallels Desktop 的話,需要另外安裝擴充套件。

安裝

Vagrant 安裝十分簡單,直接在官網下載安裝即可,如果你沒有 VirtualBox,需要去 VirtualBox 官網下載對應軟體。

裝好之後,現建立一個目錄,作為我們的虛擬機器的工程目錄。

mkdir vagrant_project
cd vagrant_project複製程式碼

然後初始化,並選擇相應的虛擬機器系統,這裡我選擇了最愛的 ubuntu。

vagrant init ubuntu/trusty64複製程式碼

ubuntu/trusty64 相當於一個虛擬機器映象,Vagrant 裡面叫 box,可以在這裡 找到更多映象。

執行了上面那句,僅僅會生成一個 Vagrantfile,裡面會指定要使用的映象。

執行 vagrant up 會啟動這個環境,如果這個映象沒被下載的話,會去下載。這裡建議掛個科學上網,感覺還挺快。

之後,環境是起來了,但是我們還在外面,需要 ssh 進去。執行命令 vagrant ssh 即可。

Mac上搭建一個乾淨的TensorFlow環境

一般 Linux 系統都是自帶 Python 的,需要確認下版本:

Mac上搭建一個乾淨的TensorFlow環境

是我們要的 Python 2.7,接下來安裝 TensorFlow。

安裝 TensorFlow

安裝 TensorFlow 其實是非常簡單的,只要使用 Python 的包管理工具 Pip 即可,偏偏 Pip 是 Python 3 之後才自帶的。Pip官網 提供了一個非常方便的 get-pip.py 指令碼來讓我們快速安裝 pip。
從官網上下載那個指令碼,然後可以利用 Vagrant 的 share 功能方便的弄進虛擬機器裡面。

Vagrant 的 share 功能是這樣的,我們剛才建立的虛擬機器工程目錄會同步到虛擬機器根目錄下的 vagrant 目錄。

Mac上搭建一個乾淨的TensorFlow環境

我們只要把 get-pip.py 指令碼拷貝到我們最開始建立的工程目錄裡面即可。

之後執行命令 sudo python get-pip.py 即可安裝 Pip。

這裡要另外指出,TensorFlow 中文社群的安裝文件中寫的命令是 $ pip install https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.5.0-cp27-none-linux_x86_64.whl 這樣會安裝到 0.5 版本的 TensorFlow,建議還是用 sudo pip install tensorflow 來安裝最新版本。

跑了上面那條命令,看著 TensorFlow 包下載進度一步步更新,我的內心是激動的。這時,一片紅字佔據了我的螢幕:

Mac上搭建一個乾淨的TensorFlow環境

別的我沒看到,就看到最後一句 MemoryError,記憶體錯誤?這可是程式設計師最害怕的錯誤之一啊。

網上查了下,原來是 pip 的快取機制嘗試在檔案快取之前讀取整個檔案到記憶體中,這會在一些限制記憶體的環境中報錯。

只需要改一下命令:

sudo pip --no-cache-dir install tensorflow複製程式碼

即可。

裝完之後我們來跑個 Hello World 的例子。

import tensorflow as tf

hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print sess.run(hello)複製程式碼

首先通過 tf.constant 建立一個常量,然後啟動 TensorFlow 的 Session,
在虛擬機器中跑一下:

Mac上搭建一個乾淨的TensorFlow環境

算是跑通了,環境搭建完畢,可以開始學習了。

Vagrant 常用命令

Vagrant 命令 作用
vagrant init 初始化 vagrant 環境
vagrant up 啟動虛擬機器
vagrant ssh ssh 進虛擬機器
vagrant status 檢視虛擬機器狀態
vagrant halt 關閉虛擬機器
vagrant reload 重新載入配置檔案
vagrant snapshot 管理虛擬機器快照
vagrant suspend 暫停虛擬機器
vagrant resume 恢復虛擬機器
vagrant destroy 暫停並刪除虛擬機器

實際上,用 VirtualBox 還是比較佔用硬碟空間的,對於用 256G Mac Book 的我來說有點奢侈,看了下 Vagrant 也支援 Docker,用 Docker 的話應該能節省不少空間。

文中雖然是用 TensorFlow 來做例子,其它的也是適用的。搭建一個乾淨的環境,做各種實驗,不要影響電腦原本的環境,還是挺重要的。

碎碎念

最近總想記錄一些所思所想,寫寫科技與人文,寫寫生活狀態,寫寫讀書感悟,主要是扯淡和感悟,歡迎關注,交。

微信公眾號:程式設計師的詩和遠方

公眾號ID : MonkeyCoder-Life

Mac上搭建一個乾淨的TensorFlow環境

參考

www.imbeta.cn/an-zhuang-p…

stackoverflow.com/questions/2…

imququ.com/post/vagran…

tensorfly.cn/

urllib3.readthedocs.io/en/latest/a…

urllib3.readthedocs.io/en/latest/u…

相關文章