Sublime写模型训练日志监控脚本_适用于机器学习任务过程追踪

絕刀狂花
发布: 2025-08-26 10:27:01
原创
468人浏览过

sublime text 通过构建系统与 python 脚本协同工作,可实现日志监控。1. 创建 monitor.py 脚本,记录读取位置并持续输出新增内容;2. 配置 sublime text 构建系统 monitorlog.sublime-build,指定 python 运行脚本及日志路径;3. 在 sublime text 中运行构建系统,控制台实时显示日志内容。此外,可修改 interval 变量调整监控频率,添加 ansi 转义码高亮关键信息。最后,该工具还可集成至 ci/cd 流程,通过保存监控日志作为 artifact 实现训练过程追踪与报警。

Sublime写模型训练日志监控脚本_适用于机器学习任务过程追踪

Sublime Text 配合 Python 脚本,可以实现一个简单的模型训练日志监控工具,方便追踪机器学习任务的进度。

Sublime写模型训练日志监控脚本_适用于机器学习任务过程追踪

解决方案

  1. 创建 Python 监控脚本 (monitor.py)

    Sublime写模型训练日志监控脚本_适用于机器学习任务过程追踪
    import time
    import os
    import sys
    
    def monitor_log(log_file, interval=10):
        """
        监控日志文件,并输出新增内容。
        """
        try:
            last_position = 0
            while True:
                with open(log_file, 'r', encoding='utf-8') as f:
                    f.seek(last_position)
                    new_lines = f.readlines()
                    if new_lines:
                        for line in new_lines:
                            print(line.strip())
                        last_position = f.tell()
                time.sleep(interval)
        except FileNotFoundError:
            print(f"错误:日志文件 {log_file} 未找到。")
        except KeyboardInterrupt:
            print("监控停止。")
        except Exception as e:
            print(f"发生错误: {e}")
    
    if __name__ == "__main__":
        if len(sys.argv) != 2:
            print("用法: python monitor.py <log_file>")
            sys.exit(1)
    
        log_file = sys.argv[1]
        monitor_log(log_file)
    
    登录后复制

    这个脚本的核心在于记录上次读取的位置

    last_position
    登录后复制
    ,然后不断地读取日志文件新增的内容。
    try...except
    登录后复制
    块处理了文件未找到和键盘中断等情况,增加程序的健壮性。
    encoding='utf-8'
    登录后复制
    处理了日志文件编码问题。

  2. 配置 Sublime Text 构建系统

    Sublime写模型训练日志监控脚本_适用于机器学习任务过程追踪
    • 打开 Sublime Text,选择 "Tools" -> "Build System" -> "New Build System..."
    • 粘贴以下 JSON 配置,并保存为
      MonitorLog.sublime-build
      登录后复制
      登录后复制
      (文件名可以自定义):
    {
        "cmd": ["python", "$file", "$project_path/your_log_file.log"],
        "working_dir": "${file_path}",
        "selector": "source.python",
        "shell": false,
        "env": {"PYTHONIOENCODING": "utf-8"}
    }
    登录后复制
    • 修改
      your_log_file.log
      登录后复制
      为你的实际日志文件路径。
      $project_path
      登录后复制
      指的是 Sublime Text 打开的项目目录。 如果你的日志文件不在项目目录下,需要使用绝对路径或相对路径。
    • "selector": "source.python"
      登录后复制
      确保这个构建系统只对 Python 文件生效。
    • "shell": false
      登录后复制
      直接执行命令,避免通过 shell。
    • "env": {"PYTHONIOENCODING": "utf-8"}
      登录后复制
      设置环境变量,解决 Python 输出的编码问题,避免乱码。
  3. 使用方法

    • 在 Sublime Text 中打开
      monitor.py
      登录后复制
      登录后复制
      登录后复制
      登录后复制
    • 选择 "Tools" -> "Build System" -> "MonitorLog" (或者你自定义的名字)。
    • 按下
      Ctrl+B
      登录后复制
      登录后复制
      (Windows/Linux) 或
      Cmd+B
      登录后复制
      (macOS) 运行构建系统。
    • Sublime Text 的控制台会开始实时显示日志文件的内容。

Sublime Text 如何与 Python 脚本协同工作以实现日志监控?

Sublime Text 提供了一个构建系统,允许你配置如何运行外部程序。 通过配置

MonitorLog.sublime-build
登录后复制
登录后复制
,我们告诉 Sublime Text 使用 Python 解释器来运行
monitor.py
登录后复制
登录后复制
登录后复制
登录后复制
脚本,并将日志文件路径作为参数传递给脚本。 当按下
Ctrl+B
登录后复制
登录后复制
运行时,Sublime Text 会执行这个配置,将 Python 脚本的输出显示在控制台中,从而实现日志监控。 关键在于构建系统的配置和 Python 脚本的协同工作。

如何自定义监控间隔和高亮显示关键信息?

修改

monitor.py
登录后复制
登录后复制
登录后复制
登录后复制
中的
interval
登录后复制
变量可以调整监控间隔。例如,将
interval=10
登录后复制
改为
interval=5
登录后复制
可以将监控频率提高到 5 秒一次。

高亮显示关键信息可以通过修改 Python 脚本实现。例如,可以使用 ANSI 转义码为特定关键词添加颜色。

import time
import os
import sys

RED = '\033[91m'
RESET = '\033[0m'

def monitor_log(log_file, interval=10):
    """
    监控日志文件,并输出新增内容。
    """
    try:
        last_position = 0
        while True:
            with open(log_file, 'r', encoding='utf-8') as f:
                f.seek(last_position)
                new_lines = f.readlines()
                if new_lines:
                    for line in new_lines:
                        if "ERROR" in line:
                            print(RED + line.strip() + RESET) # 高亮显示包含 "ERROR" 的行
                        else:
                            print(line.strip())
                    last_position = f.tell()
            time.sleep(interval)
    except FileNotFoundError:
        print(f"错误:日志文件 {log_file} 未找到。")
    except KeyboardInterrupt:
        print("监控停止。")
    except Exception as e:
        print(f"发生错误: {e}")

if __name__ == "__main__":
    if len(sys.argv) != 2:
        print("用法: python monitor.py <log_file>")
        sys.exit(1)

    log_file = sys.argv[1]
    monitor_log(log_file)
登录后复制

这里我们定义了

RED
登录后复制
RESET
登录后复制
变量,分别表示红色 ANSI 转义码和重置码。 当日志行包含 "ERROR" 时,我们使用红色高亮显示。 你可以根据自己的需求修改关键词和颜色。

如何将此监控脚本集成到 CI/CD 流程中?

虽然这个脚本主要用于本地开发,但也可以集成到 CI/CD 流程中,用于监控模型训练过程。 一种方法是在 CI/CD 脚本中运行这个 Python 脚本,并将输出重定向到日志文件。 然后,可以使用 CI/CD 平台的日志分析工具来分析日志文件,并根据关键信息发送警报。

例如,在 GitLab CI 中,可以这样配置:

stages:
  - train
  - monitor

train_model:
  stage: train
  script:
    - python train_model.py > training.log  # 训练模型并将输出重定向到 training.log

monitor_training:
  stage: monitor
  script:
    - python monitor.py training.log > monitor.log # 监控 training.log 并将输出重定向到 monitor.log
  artifacts:
    paths:
      - monitor.log # 将 monitor.log 作为 artifact 保存
登录后复制

这样,在

monitor
登录后复制
阶段,
monitor.py
登录后复制
登录后复制
登录后复制
登录后复制
脚本会监控
training.log
登录后复制
文件,并将输出保存到
monitor.log
登录后复制
登录后复制
登录后复制
文件中。 你可以将
monitor.log
登录后复制
登录后复制
登录后复制
文件作为 artifact 保存,并在 CI/CD 平台的 Web 界面中查看。 还可以使用 CI/CD 平台的日志分析工具来分析
monitor.log
登录后复制
登录后复制
登录后复制
文件,并根据关键信息发送警报。

以上就是Sublime写模型训练日志监控脚本_适用于机器学习任务过程追踪的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 //m.sbmmt.com/ All Rights Reserved | php.cn | 湘ICP备2023035733号