本文目的:
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
從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)建成功之后是這樣的界面:
之后初始化本地與云端的的鏈接,然后就可以直接操作云端的鏡像:
$ 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ù):
點進(jìn)去就能看的實時log:
還有最激動人心的功能:TensorBoard,記得要在程序運行起來有l(wèi)og信息出來再點,否則TensorBoard還沒有啟動,會出現(xiàn)404錯誤。
各種統(tǒng)計數(shù)據(jù):
還有我們神經(jīng)網(wǎng)絡(luò)的數(shù)據(jù)流圖:
如果不需要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ù)集:
成功了!數(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ù)集:
2.在Floyd上運行Jupyter notebook
首先添加一個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ù)的運行界面:
點擊jupyter notebook文件:
以上這些就是Floyd的初步使用,如果你想試用它的功能或者用作學(xué)習(xí)機器學(xué)習(xí)的工具(較少的訓(xùn)練迭代次數(shù)和層數(shù)不是很多的神經(jīng)網(wǎng)絡(luò)),而不是實際工作,推薦你盡量使用cpu模式(--cpu),因為免費賬號1個月只有1小時左右的gpu運行時間,而cpu有20小時????。