注:本文轉載自公衆號AIArea,作者mantch

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

Loss變化曲線

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

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 輕量級本地數據庫存儲,保證每個用戶看到的數據是獨立的。

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

    切換曲線

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

推薦閱讀

這個NLP工具,玩得根本停不下來

徵稿啓示| 200元稿費+5000DBC(價值20個小時GPU算力)

文本自動摘要任務的“不完全”心得總結番外篇——submodular函數優化

Node2Vec 論文+代碼筆記

模型壓縮實踐收尾篇——模型蒸餾以及其他一些技巧實踐小結

中文命名實體識別工具(NER)哪家強?

學自然語言處理,其實更應該學好英語

斯坦福大學NLP組Python深度學習自然語言處理工具Stanza試用

關於AINLP

AINLP 是一個有趣有AI的自然語言處理社區,專注於 AI、NLP、機器學習、深度學習、推薦算法等相關技術的分享,主題包括文本摘要、智能問答、聊天機器人、機器翻譯、自動生成、知識圖譜、預訓練模型、推薦系統、計算廣告、招聘信息、求職經驗分享等,歡迎關注!加技術交流羣請添加AINLPer(id:ainlper),備註工作/研究方向+加羣目的。

閱讀至此了,分享、點贊、在看三選一吧:pray:

相關文章