如何脫離命令行工具在RussellCloud上完成模型開發訓練
對於每天都用RussellCloud跑實驗的我來說,一個頭痛的問題就是每次運行程序前都要在命令行(CLI)敲一系列的命令。
CLI(command-line interface 命令行界面)是指在圖形用戶界面得到普及之前使用最為廣泛的用戶界面,它通常不支持滑鼠,用戶通過鍵盤輸入指令,計算機接收到指令後,予以執行。也有人稱之為字元用戶界面(CUI).
習慣於Windows系統的我,更習慣於用滑鼠操作。想想,每次運行程序前要敲下面的這些命令
尤其是當調參的時候,每次輸入超參數變得特別麻煩。
russell run python -u train_renext_w_d.py --data-dir data/imagenet --data-type imagenet --depth 50 --batch-size 128 --num-group 64 --gpus=0 --model-load-epoch=50 --lr 0.001 --retrain --data limei/A/1:data --gpu
如果初次使用Russell,有沒有一種簡單的方法,不用學習命令行工具的使用就能夠在Russell雲平台運行我們的程序呢?今天,作者就帶大家來一探究竟,看看如何在Russell網頁上完成模型開發訓練,不用再去敲命令。
主要內容
- 上傳數據集
- 編輯或者上傳代碼
- Notebook
- 代碼文件
- 提升效率,網頁啟動CLI模式任務並傳入自定義參數
- 結語
數據是數據科學的起點,首先看看如何通過網頁上傳數據集到Russell。
上傳數據集
- 首先在網頁上創建一個新項目,項目名稱Russell
- 在新項目中創建一個任務,模式jupyter。
- 打開notebook
- 進入output目錄,選擇數據集上傳,這裡以Minst數據集舉例
- 可以看到,我們的數據已經上傳完畢,記得點擊保存
這時,我們需要讓上傳的數據不只存在於這一項目中,其他項目也可以使用。這就需要把output中上傳的文件存儲到Russell的數據集庫中,以後只需要導入它就好了,不需要再次上傳。
- 任務詳情 --> 輸出 --> 生成數據集
這時我們已經通過網頁將數據集上傳到了Russell。
編輯或者上傳代碼
作者發現,在項目開發中,我們完全可以在Russell網頁中編輯代碼,運行程序。比如編輯notebook,代碼等。
Notebook
- 在Russell項目中新建任務,打開notebook
- 上傳notebook文件, cnn.ipynb, 通過網頁運行
- 這一代碼實現用CNN進行Minst分類,代碼來自莫煩Python.
卷積神經網路目前被廣泛地用在圖片識別上, 已經有層出不窮的應用,接著我們就一步一步做一個分析手寫數字的 CNN 吧.
- 可視化數據,黑色的地方的值都是0, 白色的地方值大於0.
- 定義網路
- 訓練
- 用T-SNE降維, 將高維的CNN最後一層輸出結果可視化
代碼文件
- 上傳代碼文件,CNN.py
- 當我們編輯代碼時,可以選擇我們熟悉的編輯器。編輯完成後,一定要點擊右上角的保存按鈕,必須進行保存才能持久化下來給以後的任務使用
- 新建文件時,可以選擇編輯所用的語言,編輯中記得隨時保存Ctrl+s
- 最後還是要記得點擊右上角的保存按鈕,點擊保存後,目前工作目錄下的代碼就會保存到新版本裡面,後續任務可以使用新版本的代碼執行任務
- 打開Terminal, 運行代碼
提升效率,網頁啟動CLI模式任務並傳入自定義參數
這時,我們已經可以通過網頁進行編輯代碼,notebook,進行項目開發了。作者發現,在Russell網頁中,我們可以直接啟動命令行工具,運行代碼。
- 在網頁新建任務,選擇任務模式Cli,開始運行
小驚喜
對於複雜的任務,Russell還可以直接生成終端命令,再也不用敲命令啦,交給Ctrl+v
- 新建任務,選擇生成終端命令,複製到終端即可運行,超省心,方便我們下次使用
當修改導入的名稱為data後,數據的地址就變為/input/data/russell.png,這裡以數據為russell.png舉例。 在代碼中從我們設置的地址讀取數據,例如
Data = imread(/input/data/russell.png)
此外,環境參數的功能有沒有試過呢?可以讓我們方便的傳入超參數
- 選擇添加參數
- 從環境變數讀取超參數
從環境變數中導入超參數的方法
import os
env_dist = os.environ # environ是在os.py中定義的一個字典
例如,導入我們傳入的超參數lr 作為learning rate
learning_rate = env_dist[lr] # 從字典中提取我們的超參數
- 運行程序,可以看到超參數都被設置為導入的數值
結語
以上就是不使用命令行工具進行開發的全部內容了,作者在Russell網頁上完成了上傳數據集,編輯notebook和代碼,直接運行程序並傳入自定義超參數。這樣,終於可以不用每次都輸命令運行程序了。作者認為開發工具應該足夠簡單,開發人員的生產力應該被解放出來,如果你還在使用命令行運行任務,不妨試試通過網頁訓練模型,方便又簡單。
推薦閱讀: