用Floyd在云端訓(xùn)練MNIST卷積神經(jīng)網(wǎng)絡(luò)

本文目的:

1.注冊和安裝Floyd命令行程序

2.將github項目部署到Floyd網(wǎng)站,并運行

3.在Floyd上啟動TensorBoard

最近在研究TensorFlow&TensorBoard和神經(jīng)網(wǎng)絡(luò)的時候發(fā)現(xiàn)一些缺點:

  • 嘗試使用PIP安裝TensorBoard之后,輸入運行命令后發(fā)現(xiàn)出了一些莫名其妙的問題,很苦惱,后來用源碼并使用Bazel編譯,可以運行了,但是發(fā)現(xiàn)TensorBoard啟動起來還是比較麻煩(用tf.summary.FileWriter寫入?yún)R總后,還要用命令行啟動,輸入?yún)R總目錄的絕對路徑,而且神經(jīng)網(wǎng)絡(luò)程序運行和TensorBoard運行要分兩步)
  • TensorFlow的GPU版安裝失敗(nvidia網(wǎng)站上居然找不到mac的驅(qū)動程序,要安裝一個軟件還需要注冊賬號),只能用cpu慢慢的訓(xùn)練神經(jīng)網(wǎng)絡(luò),結(jié)果半天出不來。
    于是基于以上缺點(其實是我懶。。懶得折騰????),我就想尋找一個解決方案,可以快速出結(jié)果,而且直接能運行TensorBoard,結(jié)果還真發(fā)現(xiàn)了!那就是Floyd這個網(wǎng)站,相當(dāng)于免費提供一個運行機器學(xué)習(xí)程序的Docker容器,而且是不需要接觸Docker的配置,只需要輸入幾行命令就可以將你的機器學(xué)習(xí)程序上線運行,而且自動啟動TensorBoard。

注冊安裝Floyd

1.注冊一個Floyd賬號

點擊注冊

2.安裝Floyd-CLI

在命令行輸入以下命令:

 pip install -U floyd-cli

如果使用Python3,輸入:

 pip3  install -U floyd-cli

3.初始化項目

首先登陸剛剛創(chuàng)建的賬號,進(jìn)入設(shè)置界面中的安全設(shè)置
復(fù)制其中的token

獲取token

從github抓取我建立的示例項目:

$ git clone https://github.com/ShyHornet/Floyd-Tutorial.git
  Cloning into 'Floyd-Tutorial'...
  ...
$ cd Floyd-Tutorial

使用Floyd命令初始化項目:
Floyd自動檢測到你的賬戶中不存在該項目,就會自動啟動項目創(chuàng)建網(wǎng)頁

$ floyd init Floyd-Tutorial
Project name does not match your list of projects. Create your new project in the web dashboard:
    https://www.floydhub.com/projects/create

創(chuàng)建新項目

創(chuàng)建成功之后是這樣的界面:

項目主頁

之后初始化本地與云端的的鏈接,然后就可以直接操作云端的鏡像:

$ floyd init floyd-tutorial
Project "floyd-tutorial" initialized in current directory

然后訓(xùn)練你的第一個MNSIT卷積神經(jīng)網(wǎng)絡(luò),通過下面一條指令:

$ floyd run --gpu  --env tensorflow-1.3 --tensorboard "python3 mnist_cnn.py --steps 10000 --dropout 0.88"

我們來解釋一下以上命令:
--gpu :選擇gpu來運行神經(jīng)網(wǎng)絡(luò)
--env : 選擇構(gòu)建神經(jīng)網(wǎng)絡(luò)所使用的框架,這里使用tensorflow版本1.3(Floyd還支持其他主流機器學(xué)習(xí)框架,如:Keras,PyTorch,Theano ,Caffe等)
--tensorboard 表示使用TensorBoard(使用時只需將匯總信息寫入到"/output"目錄即可,該目錄為TensorBoard的監(jiān)聽目錄,當(dāng)然任意子目錄也是可以,只需確保指定路徑正確)
后面的指令就和我們在自己電腦上輸入的命令一樣了,就把云端鏡像當(dāng)做服務(wù)器來用就可以了,根據(jù)你自己的程序而定。

上面的命令運行之后,顯示如下信息:

Creating project run. Total upload size: 17.5KiB
Syncing code ...
[================================] 19080/19080 - 00:00:03

JOB NAME
------------------------------------
codeglider/projects/floyd-tutorial/1

To view logs enter:
   floyd logs codeglider/projects/floyd-tutorial/1

在項目主頁就能看的正在運行的任務(wù):


運行界面1

點進(jìn)去就能看的實時log:

運行界面2

還有最激動人心的功能:TensorBoard,記得要在程序運行起來有l(wèi)og信息出來再點,否則TensorBoard還沒有啟動,會出現(xiàn)404錯誤。
各種統(tǒng)計數(shù)據(jù):


TensorBoard界面1

還有我們神經(jīng)網(wǎng)絡(luò)的數(shù)據(jù)流圖:


TensorBoard界面2

如果不需要TensorBoard,只是想要運行結(jié)果,可以輸入命令floyd logs your_username/projects/your_project/#,直接將log信息同步顯示在你的命令行中

一些Floyd的其他功能

1.裝載自定義的上傳數(shù)據(jù)

為了方便演示,我們還使用MNIST數(shù)據(jù)集。首先將當(dāng)前目錄轉(zhuǎn)到已經(jīng)下載好的MNIST數(shù)據(jù)集目錄:

$cd mnist-data

初始化Floyd數(shù)據(jù)集

$  floyd data init mnist-data
Data source "mnist-data" initialized in current directory

    You can now upload your data to Floyd by:
        floyd data upload
    

使用提示中的命令上傳數(shù)據(jù)集到Floyd數(shù)據(jù)集項目:

$  floyd data upload
Compressing data...
Making create request to server...
Initializing upload...
Uploading compressed data. Total upload size: 11.1MiB
[================================] 11599076/11599076 - 00:00:55
Removing compressed data...
Upload finished.
Waiting for server to unpack data.
You can exit at any time and come back to check the status with:
    floyd data upload -r
Waiting for unpack....

NAME
--------------------------------
codeglider/datasets/mnist-data/1

然后查看我們的數(shù)據(jù)集:


上傳成功結(jié)果

成功了!數(shù)據(jù)集已經(jīng)準(zhǔn)備就緒。

成功的結(jié)果會顯示"Valid",如果是其他提示,你就需要檢查你的數(shù)據(jù)是不是有損壞了

再次運行我們的項目,只不過這次要指定數(shù)據(jù)集,所以原來讀取數(shù)據(jù)的代碼要做一些修改

    # mnist = mnist_data.read_data_sets("data", one_hot=True, reshape=False, validation_size=0)
    mnist = mnist_data.read_data_sets("mnist-data/", one_hot=True, reshape=False, validation_size=0)

注意數(shù)據(jù)的目錄要和我們在命令中指定的數(shù)據(jù)目錄一致

$ floyd run --gpu --env tensorflow-1.3 --data codeglider/datasets/mnist-data/1:/mnist-data --tensorboard "python3 mnist_cnn.py --steps 10000 --dropout 0.88"

--data 表示我們要手動指定數(shù)據(jù)位置
codeglider/datasets/mnist-data/1 我們剛剛創(chuàng)建的數(shù)據(jù)集名稱,注意要寫數(shù)據(jù)在Floyd網(wǎng)站上的完整地址
分號(:) 后面表示我們將數(shù)據(jù)裝載在什么目錄(同我們在程序中寫的目錄地址一樣)
不在贅述運行過程,查看任務(wù)狀態(tài)中的data,可以發(fā)現(xiàn),該任務(wù)已經(jīng)正在使用我們自己創(chuàng)建的數(shù)據(jù)集:

任務(wù)運行界面Data選項卡

2.在Floyd上運行Jupyter notebook

首先添加一個jupyter文件到我們的項目文件夾中:


jupyter文件

上傳更改內(nèi)容到Floyd項目

$ floyd init floyd-tutorial
Project "floyd-tutorial" initialized in current directory

然后運行:

$ floyd run --mode jupyter --gpu  --env tensorflow-1.3 
 Creating project run. Total upload size: 36.6KiB
Syncing code ...
[================================] 38771/38771 - 00:00:03

JOB NAME
------------------------------------
codeglider/projects/floyd-tutorial/3


Path to jupyter notebook: https://www.floydhub.com/codeglider/projects/floyd-tutorial/3

注意我們不需要指定文件名稱,F(xiàn)loyd會自動識別,但是要加上"--mode jupyter"設(shè)置為jupyter運行模式。
進(jìn)入任務(wù)的運行界面:


運行結(jié)果

點擊jupyter notebook文件:

jupyter notebook文件

以上這些就是Floyd的初步使用,如果你想試用它的功能或者用作學(xué)習(xí)機器學(xué)習(xí)的工具(較少的訓(xùn)練迭代次數(shù)和層數(shù)不是很多的神經(jīng)網(wǎng)絡(luò)),而不是實際工作,推薦你盡量使用cpu模式(--cpu),因為免費賬號1個月只有1小時左右的gpu運行時間,而cpu有20小時????。

如果這些內(nèi)容對你有幫助,請給一個贊或打賞??????~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,247評論 6 543
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,520評論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,362評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,805評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 72,541評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,896評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,887評論 3 447
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,062評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,608評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,356評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,555評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,077評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,769評論 3 349
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,175評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,489評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,289評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 48,516評論 2 379

推薦閱讀更多精彩內(nèi)容