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

本文目的:

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

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

3.在Floyd上啟動TensorBoard

最近在研究TensorFlow&TensorBoard和神經(jīng)網(wǎng)絡的時候發(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)絡程序運行和TensorBoard運行要分兩步)
  • TensorFlow的GPU版安裝失敗(nvidia網(wǎng)站上居然找不到mac的驅(qū)動程序,要安裝一個軟件還需要注冊賬號),只能用cpu慢慢的訓練神經(jīng)網(wǎng)絡,結(jié)果半天出不來。
    于是基于以上缺點(其實是我懶。。懶得折騰????),我就想尋找一個解決方案,可以快速出結(jié)果,而且直接能運行TensorBoard,結(jié)果還真發(fā)現(xiàn)了!那就是Floyd這個網(wǎng)站,相當于免費提供一個運行機器學習程序的Docker容器,而且是不需要接觸Docker的配置,只需要輸入幾行命令就可以將你的機器學習程序上線運行,而且自動啟動TensorBoard。

注冊安裝Floyd

1.注冊一個Floyd賬號

點擊注冊

2.安裝Floyd-CLI

在命令行輸入以下命令:

 pip install -U floyd-cli

如果使用Python3,輸入:

 pip3  install -U floyd-cli

3.初始化項目

首先登陸剛剛創(chuàng)建的賬號,進入設置界面中的安全設置
復制其中的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

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

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

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

在項目主頁就能看的正在運行的任務:


運行界面1

點進去就能看的實時log:

運行界面2

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


TensorBoard界面1

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


TensorBoard界面2

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

一些Floyd的其他功能

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

為了方便演示,我們還使用MNIST數(shù)據(jù)集。首先將當前目錄轉(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)準備就緒。

成功的結(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ù)裝載在什么目錄(同我們在程序中寫的目錄地址一樣)
不在贅述運行過程,查看任務狀態(tài)中的data,可以發(fā)現(xiàn),該任務已經(jīng)正在使用我們自己創(chuàng)建的數(shù)據(jù)集:

任務運行界面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"設置為jupyter運行模式。
進入任務的運行界面:


運行結(jié)果

點擊jupyter notebook文件:

jupyter notebook文件

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

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

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容