查看 Markdown

libreyolo monitor

为训练 run 提供一个网页仪表盘,读取 run 写到磁盘上的产物。它从不挂接到训练进程,所以正在跑的、已结束的和已崩溃的 run 都能显示。

命令
libreyolo monitor
输出
在 stdout 上打印一个服务地址,然后进程留在前台

概要

bash
libreyolo monitor [<run-dir|runs-root>] [key=value ...]

目录是位置参数。其余都是 key=value 形式,POSIX 写法也可以,所以 port=9100--port 9100 是同一个参数。

参数

参数默认值含义
run_dirruns位置参数。要监视的 runs 根目录,或者直接打开的单个 run 目录。两种写法都会列出根目录下的每个 run
host127.0.0.1绑定的主机或网卡
port8420绑定的端口。被占用时顺延到下一个空闲端口
no_browserfalse不自动打开浏览器
jsonfalse向 stdout 输出 JSON
quietfalse抑制 stderr
verbosefalse输出详细的 stderr 信息

示例

基础
# 监视 runs/,列出其下的每个 runlibreyolo monitor
另一个 runs 根目录
libreyolo monitor experiments/
单个 run、固定端口、不开浏览器
libreyolo monitor runs/train/exp port=9100 no_browser=true

说明

一个服务端,多个 run

服务端监视的是 runs 根目录而不是单个 run,并用 URL 来定位每个 run,所以一台机器 上的多个 run 共用一个端口。打开根 URL 看索引页,或者每个 run 开一个标签页;每个 URL 里的 ?run= 参数标明是哪一个。

把命令指向单个 run 目录时,服务端会以该目录的父目录为根,所以同级的 run 仍会出现 在索引里,同时直接深链到指定的那个 run。

它读取什么

仪表盘由 libreyolo train 写出的文件构建:status.jsonmetrics.jsonltrain.log 以及该 run 的图像。不会从训练进程本身读取任何东西,所以已经结束或者 已经挂掉的 run,显示效果和正在跑的完全一样。

前置条件与端口

至少要已经存在一个 run。不带参数且没有 runs/ 目录时,命令以 source_not_found 退出;给定的目录里没有 run 时也一样。

端口被占用时会顺延到下一个,最多顺延到请求端口之后的第二十个。二十个都失败则以 io_error 退出。打印到 stdout 的 URL 用的是实际绑定的端口。

命令在前台一直服务,直到 Ctrl+C。json=true 会把 URL、监视的根目录和找到的 run 数量,作为一个带 schema_version 的对象打印出来。

相关:libreyolo train,它的 projectname 参数决定这些 run 目录落在哪里。

已针对 LibreYOLO v1.5.0 验证。