paddlespeech.t2s.training.experiment 模块
- class paddlespeech.t2s.training.experiment.ExperimentBase(config, args)[来源]
基础:
object一个实验模板,用于构建训练代码,并处理保存、加载、日志记录和可视化等事务。它旨在灵活和简单。
因此,它仅以标准方式处理输出目录(为输出创建目录,创建检查点目录,转储正在使用的配置并创建可视化程序和记录器),而不强加任何输入输出协议给模型和数据加载器。它留给用户主要部分来实现他们自己的(设置模型、标准、优化器,定义训练步骤,定义验证函数并自定义所有文本和视觉日志)。
它并没有保存太多的样板代码。用户仍然需要手动编写 前向/后向/更新,但他们可以自由地添加 非标准行为(如果需要的话)。
我们有一些规范需要遵循。 1. 实验应该具有
model,optimizer,train_loader和valid_loader,config和args属性。 2. config 应该有一个training字段,其中包含valid_interval,save_interval和max_iteration键。它被 用作触发验证、检查点和停止实验的条件。 3. 有四个方法,分别是train_batch,valid,setup_model和setup_dataloader,应当被实现。如有需要,请随意添加/覆盖其他方法和独立函数。
- Args:
- config (yacs.config.CfgNode):
用于实验的配置。
- args (argparse.Namespace):
解析的命令行参数。
- Examples:
>>> def main_sp(config, args): >>> exp = Experiment(config, args) >>> exp.setup() >>> exe.resume_or_load() >>> exp.run() >>> >>> config = get_cfg_defaults() >>> parser = default_argument_parser() >>> args = parser.parse_args() >>> if args.config: >>> config.merge_from_file(args.config) >>> if args.opts: >>> config.merge_from_list(args.opts) >>> config.freeze() >>> >>> if args.ngpu > 1: >>> dist.spawn(main_sp, args=(config, args), nprocs=args.ngpu) >>> else: >>> main_sp(config, args)
- Attributes:
parallel一个标志,指示实验是否应该使用多进程运行。
方法
close()关闭可视化以避免训练后停滞
保存此次实验使用的配置。
初始化多进程训练的环境。
重置训练加载器并递增
epoch。从 train_loader 中读取一批数据。
从输出目录中的最新检查点恢复或加载指定的检查点。
run()实验设置后的常规流程。
save()保存检查点(模型参数和优化器状态)。
setup()设置实验。
创建一个用于保存检查点的目录。
设置训练数据加载器和验证数据加载器。
初始化一个文本日志记录器以记录实验。
设置模型、标准和优化器等。
创建一个用于输出的目录。
初始化一个可视化工具以记录实验。
train()训练过程。
训练循环。
valid()验证。
- property parallel
一个标志,用于指示实验是否应该使用多进程运行。
- setup_logger()[来源]
初始化一个文本记录器以记录实验。
每个进程都有自己的文本日志记录器。日志消息被写入标准输出和一个名为
worker_n.log的文本文件,该文件位于输出目录中,其中n表示进程的排名。