【Model Log】模型評估指標可視化,自動畫Loss、Accuracy曲線圖工具,無需人工參與!


img

1. Model Log 介紹

Model Log 是一款基於 Python3 的輕量級機器學習(Machine Learning)、深度學習(Deep Learning)模型訓練評估指標可視化工具,與 TensorFlow、Pytorch、PaddlePaddle結合使用,可以記錄模型訓練過程當中的超參數、Loss、Accuracy、Precision、F1值等,並以曲線圖的形式進行展現對比,輕鬆三步即可實現。

GitHub項目地址:https://github.com/NLP-LOVE/Model_Log

通過調節超參數的方式多次訓練模型,並使用 Model Log 工具進行記錄,可以很直觀的進行模型對比,堪稱調參神器。以下是使用工具後模型訓練時 Loss 的變化曲線圖。訪問線上體驗版:http://mantchs.com/model_log.html

img

通過上圖可以很清晰的看出兩個模型的訓練效果,而且在表格當中高亮顯示修改過的超參數,方便進行模型分析。

2. Model Log 特性

  • 輕量級、無需任何配置、極簡API、開箱即用。
  • 只需要把模型的超參數和評估指標數據通過API添加即可,輕鬆三步即可實現。
  • 高亮顯示修改過的超參數,方便進行模型分析。
  • 自動檢測和獲取正在訓練的模型數據,並進行可視化,無需人工參與。
  • 使用 SQLite 輕量級本地數據庫存儲,可供多個用戶同時使用,保證每個用戶看到的數據是獨立的。
  • 可視化組件採用 Echarts 框架,交互式曲線圖設計,可清晰看到每個 epoch 週期的指標數據和變化趨勢。

3. Model Log 演示地址

訪問線上體驗版:http://mantchs.com/model_log.html

4. Model Log 安裝

Python3 版本以上,通過 pip 進行安裝即可。

pip install model-log

注意:若安裝的過程中出現以下情況,說明 model-log 命令已經安裝到Python下的bin目錄中,如果直接輸入 model-log 可能會出現 command not found,可以直接到bin目錄下執行。

img

5. Model Log 使用

5.1 啓動 web 端

Model Log 安裝成功後,Linux、Mac用戶直接終端輸入以下命令,Windows用戶在cmd窗口輸入:

model-log

默認啓動 5432端口,可以在啓動命令上使用參數 -p=5000 指定端口號。若提示命令不存在,可以直接到Python/3.7/bin目錄下執行。

啓動後可在瀏覽器輸入網址進入:http://127.0.0.1:5432

也可訪問線上體驗版:http://mantchs.com/model_log.html

  • web首頁是項目列表,一個項目可以有多個模型,這些模型可以在曲線圖中直觀比較。

  • web 端會自動檢測是否有新模型開始訓練,如果有,直接會跳轉到相應的 loss 等評價指標頁,同時會自動獲取指標數據進行呈現。

  • 可供多個用戶使用,添加暱稱即可,SQLite 輕量級本地數據庫存儲,保證每個用戶看到的數據是獨立的。

  • 通過點擊曲線圖下方的圖例,可切換不同模型的評估曲線。

    img

5.2 Model Log API使用

輕鬆三步即可使用

  1. 第一步:先創建 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')
    
  2. 第二步:模型訓練的每次 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)
    
  3. 第三步:模型訓練完成後,可以添加最好的一次評估數據。

    """
    :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手寫數字識別:https://github.com/NLP-LOVE/Model_Log/blob/master/demo_TF_MIST.py

img

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章