又是一个配置系统
tacs的Python项目详细描述
塔克斯
尚不支持str方法。在
简介
TACS是作为一个轻量级库来定义和管理的
系统配置,如软件中常见的配置
为科学实验而设计。这些“配置”
通常包括训练中使用的超参数等概念
机器学习模型或可配置模型超参数,如
作为卷积神经网络的深度。既然你这么做了
你需要可靠的科学
序列化实验配置的方法。塔克斯
使用TOML作为一种简单、可读的序列化格式。
范例是:your code + a TACS config for experiment E (+ external dependencies + hardware + other nuisance terms ...) = reproducible experiment E
。你可能无法控制
一切,至少你可以控制你的代码和你的实验
配置。亚克斯是来帮你的。在
TAC源于用于以下领域的实验性配置系统: py-faster-rcnn和 Detectron。在
用法
TACS可以以多种灵活的方式使用。主要有两种 范例:
- 配置为local variable
- 配置为global singleton
这取决于您喜欢使用哪一个,尽管局部变量 推荐路线。在
要在项目中使用TACS,首先要创建一个项目配置
文件,通常称为config.py
或defaults.py
。此文件
是所有可配置选项的一站式参考点。
它应该有很好的文档记录,并提供合理的默认值
所有选项。
# my_project/config.pyfromtacs.configimportCfgNodeasCN_C=CN()_C.SYSTEM=CN()# Number of GPUS to use in the experiment_C.SYSTEM.NUM_GPUS=8# Number of workers for doing things_C.SYSTEM.NUM_WORKERS=4_C.TRAIN=CN()# A very important hyperparameter_C.TRAIN.HYPERPARAMETER_1=0.1# The all important scales for the stuff_C.TRAIN.SCALES=(2,4,8,16)defget_cfg_defaults():"""Get a yacs CfgNode object with default values for my_project."""# Return a clone so that the defaults will not be altered# This is for the "local variable" use patternreturn_C.clone()# Alternatively, provide a way to import the defaults as# a global singleton:# cfg = _C # users can `from config import cfg`
接下来,您将创建TOML配置文件;通常 每个实验一个。每个配置文件仅重写 实验中正在改变的选择。在
^{pr2}$最后,您将得到使用config的实际项目代码
系统。在任何初始设置之后,最好将其冻结到
通过调用freeze()
方法防止进一步修改。作为
如下图所示,配置选项可以使用全局
通过导入cfg
并直接访问它,或
可以复制cfg
并将其作为参数传递。在
# my_project/main.pyimportmy_projectfromconfigimportget_cfg_defaults# local variable usage pattern, or:# from config import cfg # global singleton usage patternif__name__=="__main__":cfg=get_cfg_defaults()cfg.merge_from_file("experiment.toml")cfg.freeze()print(cfg)# Example of using the cfg as global access to optionsifcfg.SYSTEM.NUM_GPUS>0:my_project.setup_multi_gpu_support()model=my_project.create_model(cfg)
命令行重写
可以使用完全限定的键、值对列表更新CfgNode
。
这使得从命令行使用重写选项变得很容易。例如:
cfg.merge_from_file("experiment.toml")# Now override from a list (opts could come from the command line)opts=["SYSTEM.NUM_GPUS",8,"TRAIN.SCALES","[1, 2, 3, 4]"]cfg.merge_from_list(opts)
建议遵循以下原则:“只有一种方法可以
配置相同的东西。”这个原则意味着如果一个选项
是在TACS config对象中定义的,那么您的程序应该设置
使用cfg.merge_from_list(opts)
和
而不是将--train-scales
定义为命令行
参数,然后用于设置cfg.TRAIN.SCALES
。在
- 项目
标签: