fitlog--除了tensorboard以外还有这样超易上手的记录日志神器!


  # 前言


        我在远程服务器上跑代码的时候,遇到了tensorboard页面在本地浏览器始终打不开的问题,试了度娘的各种办法都无果。

        在同学的安利下发现这个复旦大学计算机科学技术学院 自然语言处理与深度学习组fastNLP 团队开发的神器——fitlog。可以满足我记录loss、acc等参数并可视化为图表的简单需求。

官方介绍+github链接:fitlog = fast + git + log, 是一款用于辅助用户记录日志和管理代码的工具,主要支持 Linux 和 macOS,也支持在 Windows 的 Git Bash 中使用。https://github.com/fastnlp/fitlog

目录

  # 前言

 # 实战使用步骤

1 包安装

2 入门样例

3 远程服务器使用


 # 实战使用步骤


服务器为linux系统,环境配的pytorch框架


1 包安装

在自己的环境里install这个包

pip install fitlog

2 入门样例

在命令行中输入fitlog init example初始化项目

>>> fitlog init example
Initialized empty Git repository in /Users/fdujyn/workspaces/example/.git/
[master (root-commit) 0b94c29] Project initialized.
 4 files changed, 72 insertions(+)
 create mode 100755 .fitconfig
 create mode 100755 .gitignore
 create mode 100644 logs/default.cfg
 create mode 100755 main.py
Initialized empty Git repository in /Users/fdujyn/workspaces/example/.git/
Fitlog project example is initialized.

初始化后,会在当前目录下创建一个example文件夹,我们在命令行输入cd example来进入样例。样例中以`.`开头的文件和文件夹是fitlog所需的配置文件, 我们一般情况下不需要修改他们;logs 文件夹是 fitlog 默认存放日志的文件夹;main.py 是训练程序的入口文件。

>>> cd example
>>> ls -al
total 24
drwxr-xr-x   8 fdujyn  staff  256 Apr 25 19:38 .
drwxr-xr-x@ 20 fdujyn  staff  640 Apr 25 19:38 ..
-rwxr-xr-x   1 fdujyn  staff  142 Apr 25 19:38 .fitconfig
drwxr-xr-x  14 fdujyn  staff  448 Apr 25 19:38 .fitlog
drwxr-xr-x  10 fdujyn  staff  320 Apr 25 19:40 .git
-rw-r--r--   1 fdujyn  staff   37 Apr 25 19:38 .gitignore
drwxr-xr-x   3 fdujyn  staff   96 Apr 25 19:38 logs
-rwxr-xr-x   1 fdujyn  staff  390 Apr 25 19:38 main.py

我们在main.py中修改代码,模拟一个训练过程。loss和acc随机生成,使用随机种子固定step(loss,acc)。可以修改rand_seed的值后重新运行代码,获得新的数据。此处我们分别设为12,123,1234,12345运行四次代码.

import fitlog  #导入fitlog包
import random
import argparse

# 从命令行传入参数
parser = argparse.ArgumentParser()
parser.add_argument('--demo', type=int, default=2)

# fitlog.commit(__file__)             # 自动 commit 你的代码
fitlog.set_log_dir("logs/")         # 设定日志存储的目录

args = parser.parse_args()
fitlog.add_hyper(args)  # 通过这种方式记录ArgumentParser的参数
fitlog.add_hyper_in_file(__file__)  # 记录本文件中写死的超参数

######hyper
rand_seed = 124   #随机种子数值改变后随机的acc和loss也会变化
######hyper

random.seed(rand_seed)
best_acc, best_step, step = 0, 0, 0   #我们想要记录的训练过程中产生的参数

for i in range(200):    
    step += 1
    if step % 20 == 0:      #每20轮记录一次参数
        loss = random.random()
        acc = random.random()
        fitlog.add_loss(loss,name="Loss",step=step)   #记录loss
        fitlog.add_metric({"dev":{"Acc":acc}}, step=step)   #记录acc
        if acc>best_acc:
            best_acc = acc
            fitlog.add_best_metric({"dev":{"Acc":best_acc}})   #记录best_acc
            # 当dev取得更好的performance就在test上evaluate一下
            test_acc = random.random()
            fitlog.add_best_metric({"test":{"Acc":test_acc}})  #记录test_acc
fitlog.finish()                     # 训练完了,关闭日志记录

把上面的代码运行后,训练中记录下的四个参数被写进了logs/下的文件夹中。我们接下来打开网页服务来查看数据。在命令行中输入cd /Users/fdujyn/workspaces/example(main.py函数所在目录),再输入fitlog log logs(logs是日志存储的目录)

>>> pwd  #查看当前目录指令
/Users/fdujyn/workspaces/example  #main.py所在的目录
>>> fitlog log logs
Start preparing data.
Finish preparing data. Found 4 records in /Users/fdujyn/workspaces/example/logs.
 * Serving Flask app "fitlog.fastserver.app" (lazy loading)
 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)

 点击下面第一个蓝色的url即可在浏览器打开网页,找到trend按钮可查看metric曲线,


3 远程服务器使用

 

  • 日志文件夹创建:先按照上面的例子在ssh session(服务器终端)进入你的要跑的py文件的目录。在你的工程里下创建一个文件夹(随便起名,此处假设加logs)来存放fitlog记录的日志。
  • fitlog调用:在py文件中导入fitlog包,参考👆示例
    • 开头import fitlog
    • 训练开始前指定日志文件地址fitlog.set_log_dir("logs/")   
    • 训练/测试中在每个epoch结束后记录指标,若是最好的指标则记录为best👇
      # 记录最大的 accuracy 和 f1
              if acc > max_acc:
                  max_acc = acc
                  fitlog.add_best_metric(value=max_acc, name='Accuracy')
              if f1 > max_f1:
                  max_f1 = f1
                  fitlog.add_best_metric(value=max_f1, name='F1')
              if precision > max_precision:
                  max_precision = precision
                  fitlog.add_best_metric(value=max_precision, name='precision')
              if recall > max_recall:
                  max_recall = recall
                  fitlog.add_best_metric(value=max_recall, name='recall')
      
      # 记录每个epoch的loss和指标
              fitlog.add_loss(train_loss / len(train_loader), name='Train Loss', step=epoch)
              fitlog.add_loss(val_loss / len(val_loader), name='Validation Loss', step=epoch)
              fitlog.add_metric(acc, name='Accuracy', step=epoch)
              fitlog.add_metric(f1, name='F1', step=epoch)
  •  在运行完这个文件后,在logs文件夹下会出现记录的数据

  •  想查看指标的情况,要在本地终端使用SSH链接Fitlog动态端口
    • 先在ssh使用cd进入当前文件夹,输入fitlog log log文件夹地址,就会出现下面的ip1:端口1

  •  windows按下win+r,输入cmd,然后在窗口输入👇  
  • 1234是你的服务器端口,123.123.123.112是服务器ip地址,后面框起来的第一个为【ip1:8001】,第二个为【ip1:端口1】。运行时要把框框去掉。
ssh -p 1234 userid@123.123.123.112 -L【127.0.0.1:8001】:【127.0.0.1:5000】
  • 连接上之后,终端自动会出现读数据的操作,在本地浏览器输入http://127.0.0.1:8001即可,网页就会出现可查看数据,找到trend按钮可查看metric曲线。

终端输入ctrl+c可退出

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值