【Model Log】模型評估指標可視化,自動畫Loss、Accuracy曲線圖工具,無需人工參與!
1. Model Log 介紹
Model Log 是一款基於 Python3 的輕量級機器學習(Machine Learning)、深度學習(Deep Learning)模型訓練評估指標可視化工具,與 TensorFlow、Pytorch、PaddlePaddle結合使用,可以記錄模型訓練過程當中的超參數、Loss、Accuracy、Precision、F1值等,並以曲線圖的形式進行展現對比,輕鬆三步即可實現。
GitHub項目地址://github.com/NLP-LOVE/Model_Log
通過調節超參數的方式多次訓練模型,並使用 Model Log 工具進行記錄,可以很直觀的進行模型對比,堪稱調參神器。以下是使用工具後模型訓練時 Loss 的變化曲線圖。訪問線上體驗版://mantchs.com/model_log.html
通過上圖可以很清晰的看出兩個模型的訓練效果,而且在表格當中高亮顯示修改過的超參數,方便進行模型分析。
2. Model Log 特性
- 輕量級、無需任何配置、極簡API、開箱即用。
- 只需要把模型的超參數和評估指標數據通過API添加即可,輕鬆三步即可實現。
- 高亮顯示修改過的超參數,方便進行模型分析。
- 自動檢測和獲取正在訓練的模型數據,並進行可視化,無需人工參與。
- 使用 SQLite 輕量級本地數據庫存儲,可供多個用戶同時使用,保證每個用戶看到的數據是獨立的。
- 可視化組件採用 Echarts 框架,交互式曲線圖設計,可清晰看到每個 epoch 周期的指標數據和變化趨勢。
3. Model Log 演示地址
訪問線上體驗版://mantchs.com/model_log.html
4. Model Log 安裝
Python3 版本以上,通過 pip 進行安裝即可。
pip install model-log
注意:若安裝的過程中出現以下情況,說明 model-log 命令已經安裝到Python下的bin目錄中,如果直接輸入 model-log 可能會出現 command not found,可以直接到bin目錄下執行。
5. Model Log 使用
5.1 啟動 web 端
Model Log 安裝成功後,Linux、Mac用戶直接終端輸入以下命令,Windows用戶在cmd窗口輸入:
model-log
默認啟動 5432端口,可以在啟動命令上使用參數 -p=5000 指定端口號。若提示命令不存在,可以直接到Python/3.7/bin目錄下執行。
啟動後可在瀏覽器輸入網址進入://127.0.0.1:5432
也可訪問線上體驗版://mantchs.com/model_log.html
-
web首頁是項目列表,一個項目可以有多個模型,這些模型可以在曲線圖中直觀比較。
-
web 端會自動檢測是否有新模型開始訓練,如果有,直接會跳轉到相應的 loss 等評價指標頁,同時會自動獲取指標數據進行呈現。
-
可供多個用戶使用,添加昵稱即可,SQLite 輕量級本地數據庫存儲,保證每個用戶看到的數據是獨立的。
-
通過點擊曲線圖下方的圖例,可切換不同模型的評估曲線。
5.2 Model Log API使用
輕鬆三步即可使用
-
第一步:先創建 ModelLog 類,並添加必要的屬性
from model_log.modellog import ModelLog """ :param nick_name: str,昵稱,多人使用下可起到數據隔離。 :param project_name: str,項目名稱。 :param project_remark: str,項目備註,默認為空。 項目名稱如不存在會新建 """ model_log = ModelLog(nick_name='mantch', project_name='demo實體識別', project_remark='') """ :param model_name: str,模型名稱 """ model_log.add_model_name(model_name='BILSTM_CRF模型') """ :param remark: str,模型備註 """ model_log.add_model_remark(remark='模型備註') """ :param param_dict: dict,訓練參數字典 :param param_type: str,參數類型,例如:TF參數、Word2Vec參數等。 """ model_log.add_param(param_dict={'lr':0.01}, param_type='tf_param')
-
第二步:模型訓練的每次 epoch (周期)可以添加評估指標數據,評估指標可以進行以下選擇。
第一次調用該 API 時,會把以上設置的數據(模型名稱、備註等)持久化到 SQLite 數據庫,並且 web 端會自動獲取評估指標數據進行圖形化展示。
""" :param metric_name: str,評估指標名稱, 可選擇['train_loss', 'test_loss', 'test_acc', 'test_recall', 'test_precision', 'test_F1'] :param metric_value: float,評估指標數值。 :param epoch: int,訓練周期 metric_name 參數只可以選擇以上六種 第一次調用該 API 時,會把以上設置的數據(模型名稱、備註等)持久化到 SQLite 數據庫,並且 web 端會自動獲取數據進行圖形化展示。 可以在每個 epoch 周期的最後使用該 API 添加訓練集和測試集的評估指標,web 端會自動獲取該數據。 """ model_log.add_metric(metric_name='train_loss', metric_value=4.5646, epoch=1)
-
第三步:模型訓練完成後,可以添加最好的一次評估數據。
""" :param best_name: str,最佳評估指標名稱, :param best_value: float,最佳評估指標數值。 :param best_epoch: int,訓練周期 添加當前模型訓練中最佳的評估數據,一般放到模型訓練的最後進行添加。 """ model_log.add_best_result(best_name='best_loss', best_value=1.2122, best_epoch=30) """ 關閉 SQLite 數據庫連接 """ model_log.close()
5.3 Model Log 使用示例
MIST手寫數字識別://github.com/NLP-LOVE/Model_Log/blob/master/demo_TF_MIST.py