fitlog使用教程(持续更新ing...)
诸神缄默不语-个人CSDN博文目录
fitlog包是用于自动版本管理和自动日志记录的Python包,是fastNLP团队开发的。
fitlog 中文文档 — fitlog 文档
我下载的是fitlog 0.9.15版本。
他们团队的文档写的真的不行,崩溃,FastNLP也很难用,fitlog也很难用,中文读起来比transformers和wandb的英文很难懂。
最近更新时间:2023.4.24
最早更新时间:2023.4.23
文章目录
- 1. 安装
- 2. 快速上手
- 3. 命令行工具
- 4. 环境变量
- 5. 配置文件
- 6. 常见问题
- 7. fitlog API
1. 安装
直接:pip install fitlog
2. 快速上手
fitlog init example
输出:
会在当前目录下创建example文件夹。其中,logs 文件夹是 fitlog 默认存放日志的文件夹;main.py 是训练程序的入口文件。
将main.py修改为训练代码:
import 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 = 123
######hyperrandom.seed(rand_seed)
best_acc, best_step, step = 0, 0, 0for i in range(200):step += 1if step % 20 == 0:loss = random.random()acc = random.random()fitlog.add_loss(loss,name="Loss",step=step)fitlog.add_metric({"dev":{"Acc":acc}}, step=step)if acc>best_acc:best_acc = accfitlog.add_best_metric({"dev":{"Acc":best_acc}})# 当dev取得更好的performance就在test上evaluate一下test_acc = random.random()fitlog.add_best_metric({"test":{"Acc":test_acc}})
fitlog.finish() # finish the logging
把工作目录切换到example文件夹下,更换代码中的rand_seed为124/123,分别运行一次,然后用fitlog log logs
命令行打开网页(我用的是VSCode,所以这个IP地址是自动映射到本地的):
trend:
folder:
3. 命令行工具
Usage:fitlog <command> [<args>...]fitlog help <command>fitlog -h | --helpfitlog --versionSupported commandsinit Initialize a fitlog projectlist List committed versionsrevert Revert to a specific versionlog Visualize logs by a serverSee "fitlog help <command>" for more information on a specific command
init
:初始化项目- 可以指定项目名称
<name>
,或者默认把当前文件夹变成 fitlog 项目 - 给了–hide选项来隐藏.fitconfig 文件
- –with-git:创建 fitlog 时创建常规的 git
- 可以指定项目名称
Usage:fitlog init [<name>] [--hide] [--with-git]fitlog -h | --helpArguments:name Name of the fitlog projectOptions:-h --help This is a command to initialize a fitlog project--hide Hide .fitconfig inside .fitlog folder--with-git Initialize fitlog with a standard gitExamples:fitlog init project Create a your project named projectfitlog init Init the current directory with fitlog
list
:查看已有记录revert
:版本回退
以上两项都被建议使用fitlog 提供的网页服务来完成,但是网页服务相关文档还没有写。
Usage:fitlog list [<num>] [--show-now]fitlog revert <fit_id> [<path>] [--id-suffix]Arguments:num The number of recent commits you want to listfit_id The id of the commit you want to revertpath The path to revert the old commit versionOptions:--show-now Show the current version--id-suffix Use commit id as the suffix of reverted folder
log
:启动日志网页- 参数
<log-dir>
表示日志存放的位置(set_log_dir
指定的logs文件夹的位置) - 配置文件的名称
- 网页对应的端口号
- 服务器停止的时间
- 参数
Usage:fitlog log <log-dir> [--log-config-name=L] [--port=P] [--standby-hours=S] [--token=T] [--ip=I]Arguments:log-dir Where to find logs.Options:-h --help This is a command to start fitlog server to visualize logs.-l=L --log-config-name Log server config name. Must under the folder of <log-dir>. [default: default.cfg]-p=P --port Which port to start to looking for usable port.[default: 5000]-s=S --standby-hours How long to wait before the server . [default: 48]-t=T --token If this is used, your have to specify the token when accessing. Default no token.-i=I --ip Which ip to bind to. Default is 0.0.0.0 [default: 0.0.0.0]
4. 环境变量
在新版的 fitlog 中,用户可以在运行程序前使用环境变量 FITLOG_FLAG
影响 fitlog 的作用。 注意,该环境变量发生作用的时刻在于 fitlog 被 import 的瞬间,之后再改变环境变量不影响 fitlog 的作用。
环境变量 FITLOG_FLAG
有三种值: DEBUG
, NO_COMMIT
和其它(包括为空)。
当 FITLOG_FLAG=DEBUG
时,程序中对 fitlog 的所有调用都不起作用。你也可以在代码中使用 fitlog.debug()
产生类似的效果。
当 FITLOG_FLAG=NO_COMMIT
时,程序中使用 fitlog 记录数据的调用正常,但 fitlog.commit()
失效。你可以在同时运行多个实验时,只进行一次自动 commit。
当 FITLOG_FLAG
为空或等于其它值时,不产生额外的效果。
5. 配置文件
待补
6. 常见问题
原文档中就写了的:
-
如果在debug阶段,不希望fitlog发生任何作用,那么直接在入口代码处加入fitlog.debug() 就可以让所有的fitlog调用不起任何作用,debug结束再注释掉这一行就可以了。
-
fitlog 默认只有在产生了第一个metric或loss的时候才会创建log文件夹,防止因为其它bug还没运行 到model就崩溃产生大量无意义的log。
-
如果使用了分布式训练,一般只需要主进程记录fitlog就好。这个时候可以通过将非主进程的fitlog设置fitlog.debug()
import torch
import fitlogif torch.distributed.get_rank()>0:fitlog.debug()
-
不要通过多进程使用fitlog,即multiprocessing模块。
-
fitlog.commit()只需要在某个python文件调用就可以了,一般就在入口python文件即可。
-
传入到fitlog的各种参数、metric的名称,请 避免特殊符号(例如$%!#@空格),请只使用_与各种字母的组合 , 因为特殊符号可能导致网页端显示不正常。
7. fitlog API
未完待续。
set_log_dir(log_dir: str, new_log: bool = False)
:设定 log 文件夹的路径add_metric(value: Union[int, str, float, dict], step: int, name: str = None, epoch: int = None)
:用于添加 metric 。用此方法添加的值不会显示在表格中,但可以在单次训练的详情曲线图中查看。add_loss(value: Union[int, str, float, dict], step: int, name: str = None, epoch: int = None)
:用于添加 loss。用此方法添加的值不会显示在表格中,但可以在单次训练的详情曲线图中查看。add_best_metric(value: Union[int, str, float, dict], name: str = None)
:用于添加最好的 metric 。用此方法添加的值,会被显示在表格中的 metric 列及其子列中。相同key的内容将只保留最后一次传入的值。add_hyper(value: Union[int, str, float, dict, argparse.Namespace, configparser.ConfigParser], name=None)
:用于添加超参数。用此方法添加到值,会被放置在表格中的 hyper 列及其子列中add_hyper_in_file(file_path: str = None)
从文件读取参数。如下面的文件所示,两行”#####hyper”(至少5个#)之间的参数会被读取出来,并组成一个字典。每个变量最多只能出现在一行中, 如果多次出现,只会记录第一次出现的值。demo.py:
from numpy as np
import fitlog
# do somethingfitlog.add_hyper_in_file(__file__) # 会把本python文件的hyper加入进去
############hyper
lr = 0.01 # some comments
char_embed = word_embed = 300hidden_size = 100
....
############hyper# do something
model = Model(xxx)
相当于转换为如下字典,并添加到入参中:
{'lr': '0.01','char_embed': '300''word_embed': '300''hidden_size': '100'
}
finish(status: int = 0, send_to_bot: str = None)
:使用此方法告知 fitlog 你的实验已经正确结束。你可以使用此方法来筛选出失败的实验。
相关文章:

fitlog使用教程(持续更新ing...)
诸神缄默不语-个人CSDN博文目录 fitlog包是用于自动版本管理和自动日志记录的Python包,是fastNLP团队开发的。 fitlog 中文文档 — fitlog 文档 我下载的是fitlog 0.9.15版本。 他们团队的文档写的真的不行,崩溃,FastNLP也很难用࿰…...

Linux下搭建Go开发环境
Linux下搭建Go开发环境可以按照以下步骤进行: 1、下载最新的Go语言二进制包,可以从官网 https://golang.org/dl/ 下载。 2、将下载好的包解压缩到你想要安装的目录下,如 /usr/local/go。 3、添加环境变量,在终端中输入以下命令…...

一文搞懂SQL注入攻击
SQL注入攻击 1. 前言2. SQL注入简介3. SQL注入步骤4. 防范SQL注入 1. 前言 随着互联网的发展和普及,网络安全问题越来越突出,网络在为用户提供越来越多服务的同时,也要面对各类越来越复杂的恶意攻击。SQL注入(SQL Injection&…...

CCTV-TIME特别关注:首届医药港国际健康美食文化嘉年华
“食在广州 味在方舟”首届医药港国际健康美食文化嘉年华4月28日在健康方舟盛大开幕! 【央媒时代TOP中国时代周刊中国品牌万里行CCTV-TIME特别关注】健康美食、滋补靓汤、异国风情、非遗文化、治愈萌宠、灯光夜市、亲子玩乐、浪漫许愿树……五一长假,广州的这场精彩嘉年华活动…...

FE_TA不知道的CSS 换行系列【1】white-space
在W3C官方描述中,white-space主要有以下两个作用: 是否进行空格合并,以及控制空格合并的方式;是否在soft wrap opportunities(文本中可进行换行的断点位置)处进行文本换行。 从字面意思来看white-space即…...

matlab中计算标准差std函数
标准差 标准差(Standard Deviation)是离均差平方的算术平均数(即:方差)的算术平方根。 标准差是方差的算术平方根。标准差能反映一个数据集的离散程度。平均数相同的两组数据,标准差未必相同。 计算公式&…...

【操作系统】原语操作详解
基本概念 "原语"一词源于英文 “primitive” 或 “instruction”,意为 “原始的” 或 “基本的指令”。在计算机科学中,原语是一种基本的操作,它是不可分割的,要么全部执行成功,要么全部执行失败࿰…...

mongDB的相关查询插入操作
db.getCollection(“ProductBuriedPointPo”).find();–查询 db.getCollection(“ProductBuriedPointPo”).remove({“_id”: ObjectId(“61e8f4c3bdc4381042acd296”)})–删除 db.getCollection(“ProductBuriedPointPo”).insert( { _id: ObjectId(“61e8f4c3bdc4381042acd2…...

【C++初阶】C++入门(二):引用内联函数auto关键字范围for循环(C++11)指针空值nullptr
📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:C初阶 🎯长路漫漫浩浩,万事皆有期待 上一篇博客:【C初阶】…...

地下污水厂智能照明控制应用
摘要:结合某地下污水厂项目,从结构、系统组成、系统功能、控制要求、场景模式等方面介绍了地下污水厂智能照明控制系统,探索了一套适用于地下污水厂的智能照明控制策略,以确保地下污水厂正常运行的照明需求。 关键词:智能照明控制系统;地下污…...

IS220UCSAH1A利用电子和空穴两种载流子导电的,所以叫做双极型电路
IS220UCSAH1A利用电子和空穴两种载流子导电的,所以叫做双极型电路 美国的通用电气公司(General Electric Company,以下简称 GE)想要称霸整个工业互联网,但却失败了。为什么呢? 多年来,GE 一直在…...

干货|英国专利申请
英国是世界上公认的一个实施现代专利制度的国家。英国1624年颁布的《垄断法案》被认为是世界上一部具有现代意义的专利法,并成为现代专利保护制度系的起点。英国现行的专利法于1977年颁布,并于1978年生效。英国的专利制度在保护发明创造,促进…...

springboot文件上传
1.新建文件上传页面 在static目录中新建upload-test.html,上传页面代码如下所示: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>springboot文件上传测试</title> <…...

天龙八部手游服务端架设搭建教程
天龙八部手游服务端架设搭建教程 大家好,我是艾西。最近更新游戏搭建教程比较少也被不少小伙伴催更,今天我和大家聊聊天龙八部手游服务端架设搭建。 游戏讲述元佑元年,大宋遭受辽国入侵的故事,玩家可扮演峨眉、丐帮、天山、逍遥、…...

Windows 服务监控工具
在任何企业中,Windows 服务都是面向业务的应用程序的核心组件。这些 Windows 服务的有效运行对于防止网络和应用程序停机至关重要。这使得 Windows 服务监视成为任何网络管理策略的关键部分。 Windows 服务监视使管理员能够确保关键 Windows 服务的可用性ÿ…...

零基础抽象轻松MYSQL
不断学习,不断进步,才能不被替代 只有不被替代才是价值所在 ————2023年4月20日 目录 数据类型 数值型 数据类型 第一类:数值型 第二类:字符型 第三类:JSON第四类:时间日期型 数据类型中共分成了四大类…...

区块链赛项样题解析
文章目录 前言一、区块链产品方案设计及系统运维(预计2小时)1. 业务架构(Visio),需求分析、设计(doc)2. 区块链系统部署、测试搭建:(根据题目要求选择)测试:(根据题目要求选择&#…...

基于Java+SpringBoot+vue+element疫情药品采购出入库系统设计实现
基于JavaSpringBootvueelement疫情药品采购出入库系统设计实现 博主介绍:5年java开发经验,专注Java开发、定制、远程、指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码联…...

【C++】5. 引用
文章目录 前言一、引用1.1 理解引用1.2 引用的特性1.3 引用的权限1.4 引用的使用场景1.4.1 做参数1.4.2 做返回值 1.5 引用的本质 前言 C语言中什么最难学?那当然就是指针了。不但使用起来麻烦,时不时还会产生一些意料之外的错误。C提供了一种方式&…...

初识C++(二)
在初识c(一)当中我们已经向大家介绍了四个c和C语言不同的使用方法。接下来我们再来向大家介绍另外的一些新的c语言的使用方法。 🌵引用 简单一点来说引用就是给已存在的变量起一个别名。这个别名通常的作用和C语言当中的指针类似。我们可以通…...

编译时报Clang SA is not enabled问题解决
报此问题应该是swap不足导致的,原因是用的虚拟机,改为16G内存问题排除 具体解决如下: 1.free -h 查看当前分区大小和使用情况 2.扩展分区大小 2.1首先删除系统默认分区 sudo swapoff /swapfile sudo rm /swapfile 2.2新建swap分区…...

【论文阅读】You Are What You Do:通过数据来源分析寻找隐蔽的恶意软件
You Are What You Do: Hunting Stealthy Malware via Data Provenance Analysis NDSS-2020 伊利诺伊大学香槟分校、德克萨斯大学达拉斯分校 Wang Q, Hassan W U, Li D, et al. You Are What You Do: Hunting Stealthy Malware via Data Provenance Analysis[C]//NDSS. 2020. 目…...

c#期末复习题重点难点题
2. (单选题, 9分)在.NET中,.NET Framework由( )组成。 A. FCL和CLR -开发库和运行环境B. ADO.NETASP.NET -数据操作和web框架C. CLS和CTS -语法规范和类型规范 即所有语言和语法规范 和 各语言间的类型互操作性规范D. Winform和ASP.NET…...

Sass @mixin 与 @include
Sass mixin 与 include mixin 指令允许我们定义一个可以在整个样式表中重复使用的样式。 include 指令可以将混入(mixin)引入到文档中。 定义一个混入 混入(mixin)通过 mixin 指令来定义。 mixin name { property: value; property: value; ... } 以…...

ROS——Teb算法的优化
一、简介 “TEB”全称Time Elastic Band(时间弹性带)Local Planner,该方法针对全局路径规划器生成的初始轨迹进行后续修正(modification),从而优化机器人的运动轨迹,属于局部路径规划。 关于eletic band(橡…...

java+ssm 社区超市网上商城果蔬(水果蔬菜)管理系统
在Internet高速发展的今天,我们生活的各个领域都涉及到计算机的应用,其中包括超市果蔬管理系统的网络应用,在外国超市果蔬管理系统已经是很普遍的方式,不过国内的超市果蔬管理系统可能还处于起步阶段。超市果蔬管理系统具有果蔬管…...

igh主站搭建过程(e1000e 网卡/ generic网卡)
1、下载igh源码 garyjxes:~$ git clone https://gitlab.com/etherlab.org/ethercat.git 2、配置(可参考官方文档) garyjxes:~/Xenomai/xenomai-v3.2.1$ sudo cp …/…/ethercat/ . -r garyjxes:~/Xenomai/xenomai-v3.2.1/ethercat$ sudo ./bootstrap to…...

K8S第一讲 Kubernetes之Secret详解
Secret详解 secret用来保存小片敏感数据的k8s资源,例如密码,token,或者秘钥。这类数据当然也可以存放在Pod或者镜像中,但是放在Secret中是为了更方便的控制如何使用数据,并减少暴露的风险。 用户可以创建自己的secre…...

每周一算法:高精度减法
高精度减法 高精度减法是采用模拟算法对上百位甚至更多位的整数进行减法运算,其基本思想是模拟竖式计算,一般分为下面几步: 首先,使用数组存储大整数的每一个位然后,判断被减数和减数的大小关系: 如果被减数大于等于减数,结果为非负数,直接计算差否则,结果为负数,先…...

Session使用和原理分析图与实现原理-- 代码演示说明 Session 的生命周期和读取的机制代码分析
目录 Web 开发会话技术 -Session —session 技术 session 基本原理 Session 可以做什么 如何理解 Session Session 的基本使用 session 底层实现机制 原理分析图 代码演示 CreateSession.java 测试 Session 创的机制, 注意抓包分析编辑 ReadSession.j…...