{"id":19436997,"url":"https://github.com/nlp-love/model_log","last_synced_at":"2025-06-24T04:32:28.253Z","repository":{"id":109178429,"uuid":"274807398","full_name":"NLP-LOVE/Model_Log","owner":"NLP-LOVE","description":"Model Log 是一款基于 Python3 的轻量级机器学习(Machine Learning)、深度学习(Deep Learning)模型训练评估指标可视化工具，可以记录模型训练过程当中的超参数、Loss、Accuracy、Precision、F1值等，并以曲线图的形式进行展现对比，轻松三步即可实现。","archived":false,"fork":false,"pushed_at":"2022-03-22T10:12:49.000Z","size":1145,"stargazers_count":144,"open_issues_count":3,"forks_count":40,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-05-07T08:12:25.400Z","etag":null,"topics":["deep-learning","log","machine-learning","metric","model","pytorch","tensorflow"],"latest_commit_sha":null,"homepage":"http://mantchs.com/model_log.html","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NLP-LOVE.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-06-25T01:47:27.000Z","updated_at":"2025-04-02T03:51:16.000Z","dependencies_parsed_at":"2023-04-24T13:17:53.842Z","dependency_job_id":null,"html_url":"https://github.com/NLP-LOVE/Model_Log","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/NLP-LOVE/Model_Log","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NLP-LOVE%2FModel_Log","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NLP-LOVE%2FModel_Log/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NLP-LOVE%2FModel_Log/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NLP-LOVE%2FModel_Log/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NLP-LOVE","download_url":"https://codeload.github.com/NLP-LOVE/Model_Log/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NLP-LOVE%2FModel_Log/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261604160,"owners_count":23183602,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["deep-learning","log","machine-learning","metric","model","pytorch","tensorflow"],"created_at":"2024-11-10T15:13:16.063Z","updated_at":"2025-06-24T04:32:28.232Z","avatar_url":"https://github.com/NLP-LOVE.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"![img](https://gitee.com/kkweishe/images1/raw/master/ML/wechat/model_log_logo.png)\n\n\n\n### 1. Model Log 介绍\n\nModel Log 是一款基于 Python3 的轻量级机器学习(Machine Learning)、深度学习(Deep Learning)模型训练评估指标可视化工具，与 TensorFlow、Pytorch、PaddlePaddle结合使用，可以记录模型训练过程当中的**超参数、Loss、Accuracy、Precision、F1值等，并以曲线图的形式进行展现对比**，轻松三步即可实现。\n\n通过调节超参数的方式多次训练模型，并使用 Model Log 工具进行记录，可以很直观的进行模型对比，堪称调参神器。以下是使用工具后模型训练时 Loss 的变化曲线图。访问线上体验版：[http://mantchs.com/model_log.html](http://mantchs.com/model_log.html)\n\n![img](https://gitee.com/kkweishe/images1/raw/master/ML/wechat/loss.gif)\n\n\n\n通过上图可以很清晰的看出两个模型的训练效果，而且在表格当中高亮显示修改过的超参数，方便进行模型分析。\n\n\n\n### 2. Model Log 特性\n\n- 轻量级、无需任何配置、极简API、开箱即用。\n- 只需要把模型的超参数和评估指标数据通过API添加即可，轻松三步即可实现。\n- 高亮显示修改过的超参数，方便进行模型分析。\n- 自动检测和获取正在训练的模型数据，并进行可视化，无需人工参与。\n- 使用 SQLite 轻量级本地数据库存储，可供多个用户同时使用，保证每个用户看到的数据是独立的。\n- 可视化组件采用 Echarts 框架，交互式曲线图设计，可清晰看到每个 epoch 周期的指标数据和变化趋势。\n\n\n\n### 3. Model Log 演示地址\n\n访问线上体验版：[http://mantchs.com/model_log.html](http://mantchs.com/model_log.html)\n\n\n\n### 4. Model Log 安装\n\nPython3 版本以上，通过 pip 进行安装即可。\n\n```shell\npip install model-log\n```\n\n\n\n**注意**：若安装的过程中出现以下情况，说明 **model-log** 命令已经安装到Python下的bin目录中，如果直接输入 model-log 可能会出现 command not found，可以直接到bin目录下执行。\n\n![img](https://gitee.com/kkweishe/images1/raw/master/ML/wechat/mistake.png)\n\n\n\n\n\n### 5. Model Log 使用\n\n#### 5.1 启动 web 端\n\nModel Log 安装成功后，Linux、Mac用户直接终端输入以下命令，Windows用户在cmd窗口输入：\n\n```shell\nmodel-log\n```\n\n默认启动 **5432端口**，可以在启动命令上使用参数 **-p=5000** 指定端口号。若提示命令不存在，可以直接到Python/3.7/bin目录下执行。\n\n启动后可在浏览器输入网址进入：http://127.0.0.1:5432\n\n也可访问线上体验版：[http://mantchs.com/model_log.html](http://mantchs.com/model_log.html)\n\n\n\n- web首页是项目列表，一个项目可以有多个模型，这些模型可以在曲线图中直观比较。\n\n- web 端会自动检测是否有新模型开始训练，如果有，直接会跳转到相应的 loss 等评价指标页，同时会自动获取指标数据进行呈现。\n\n- 可供多个用户使用，添加昵称即可，SQLite 轻量级本地数据库存储，保证每个用户看到的数据是独立的。\n\n- 通过点击曲线图下方的图例，可切换不同模型的评估曲线。\n\n  ![img](https://gitee.com/kkweishe/images1/raw/master/ML/wechat/tuli.png)\n\n\n\n\n\n#### 5.2 Model Log API使用\n\n轻松三步即可使用\n\n\n\n1. **第一步**：先创建 ModelLog 类，并添加必要的属性\n\n   ```python\n   from model_log.modellog import ModelLog\n   \"\"\"\n   :param nick_name:        str，昵称，多人使用下可起到数据隔离。\n   :param project_name:     str，项目名称。\n   :param project_remark:   str，项目备注，默认为空。 \n   \n   项目名称如不存在会新建\n   \"\"\"\n   model_log = ModelLog(nick_name='mantch', project_name='demo实体识别', project_remark='')\n   \n   \"\"\"\n   :param model_name: str，模型名称\n   \"\"\"\n   model_log.add_model_name(model_name='BILSTM_CRF模型')\n   \n   \"\"\"\n   :param remark: str，模型备注\n   \"\"\"\n   model_log.add_model_remark(remark='模型备注')\n   \n   \"\"\"\n   :param param_dict: dict，训练参数字典\n   :param param_type: str，参数类型，例如：TF参数、Word2Vec参数等。\n   \"\"\"\n   model_log.add_param(param_dict={'lr':0.01}, param_type='tf_param')\n   ```\n\n   \n\n2. **第二步**：模型训练的每次 epoch (周期)可以添加评估指标数据，评估指标可以进行以下选择。\n\n   第一次调用该 API 时，会把以上设置的数据(模型名称、备注等)持久化到 SQLite 数据库，并且 web 端会自动获取评估指标数据进行图形化展示。\n\n   ```python\n   \"\"\"\n   :param metric_name:  str，评估指标名称，\n   \t可选择['train_loss', 'test_loss', 'train_acc', 'test_acc', 'train_recall', 'test_recall', 'train_precision', 'test_precision', 'train_F1', 'test_F1']\n   \n   :param metric_value: float，评估指标数值。\n   :param epoch:        int，训练周期\n   \n   metric_name 参数只可以选择以上十种\n   第一次调用该 API 时，会把以上设置的数据(模型名称、备注等)持久化到 SQLite 数据库，并且 web 端会自动获取数据进行图形化展示。\n   可以在每个 epoch 周期的最后使用该 API 添加训练集和测试集的评估指标，web 端会自动获取该数据。\n   \"\"\"\n   model_log.add_metric(metric_name='train_loss', metric_value=4.5646, epoch=1)\n   ```\n\n   \n\n3. **第三步**：模型训练完成后，可以添加最好的一次评估数据。\n\n   ```python\n   \"\"\"\n   :param best_name:  str，最佳评估指标名称，\n   :param best_value: float，最佳评估指标数值。\n   :param best_epoch: int，训练周期\n   \n   添加当前模型训练中最佳的评估数据，一般放到模型训练的最后进行添加。\n   \"\"\"\n   model_log.add_best_result(best_name='best_loss', best_value=1.2122, best_epoch=30)\n   model_log.finish_model()\n   \n   \"\"\"\n   关闭 SQLite 数据库连接\n   \"\"\"\n   model_log.close()\n   ```\n   \n   \n\n\n\n#### 5.3 Model Log 使用示例\n\nMIST手写数字识别：[https://github.com/NLP-LOVE/Model_Log/blob/master/demo_TF_MIST.py](https://github.com/NLP-LOVE/Model_Log/blob/master/demo_TF_MIST.py)\n\n\n\n![img](https://gitee.com/kkweishe/images1/raw/master/ML/wechat/QRcode.gif)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnlp-love%2Fmodel_log","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnlp-love%2Fmodel_log","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnlp-love%2Fmodel_log/lists"}