06 浅谈DTT模型的配置文件

浅谈DTT模型的配置文件

当你运行

python train.py experiment=vocals_dis datamodule=musdb_dev14 trainer=default

时,配置文件究竟是怎么选的呢?

我们可以首先看一下config文件夹的结构:

在这里插入图片描述

然后看要运行的这个train.py的内容:

@hydra.main(config_path="configs/", config_name="config.yaml", version_base='1.1')
def main(config: DictConfig):
    ###省略

由此可知它用到了config.yaml这个文件,我们接下来看一下这个文件(我删了一些无关注释):

defaults:
  - datamodule: musdb18_hq
  - model: null
  - callbacks: default # set this to null if you don't want to use callbacks
  - logger: null # set logger here or use command line (e.g. `python run.py logger=wandb`)
  - trainer: default
  - hparams_search: null
  - paths: default.yaml

  - hydra: default

  - experiment: null

  # enable color logging
  - override hydra/hydra_logging: colorlog
  - override hydra/job_logging: colorlog


debug: False

# pretty print config at the start of the run using Rich library
print_config: True

# disable python warnings if they annoy you
ignore_warnings: True

wandb_api_key: ${oc.env:wandb_api_key}

先看defaults部分:

  1. datamodule: musdb18_hq告诉我们它用到了configs\datamodule\musdb18_hq.yaml里的配置

  2. model: null告诉我们它没在这边设置好模型(不过其实experiment=vocals_dis这边间接设置了,一会儿来看)

  3. 同理,我们跳过几个,看trainer: default,这个告诉我们它用到了configs\trainer\default.yaml里的配置

  4. 然后看一个比较重要的:experiment,别看这边是null,不要忘了我们运行命令时指定了experiment=vocals_dis

    我们来看一下configs\experiment\vocals_dis.yaml这个文件:

    # @package _global_
    
    # to execute this experiment run:
    # python run.py experiment=example_simple.yaml
    
    defaults:
      - multigpu_default
      - override /model: vocals.yaml
    
    seed: 2021
    
    exp_name: vocals_g32
    
    # the name inside project
    logger:
      wandb:
        name: ${exp_name}
    
    model:
      lr: 0.0002
      optimizer: adamW
      bn_norm: syncBN
      audio_ch: 2 # datamodule.single_channel
      g: 32
    
    trainer:
      devices: 2 # int or list
      sync_batchnorm: True
      track_grad_norm: 2
    #  gradient_clip_val: 5
    
    datamodule:
      batch_size: 8
      num_workers: ${oc.decode:${oc.env:NUM_WORKERS}}
      pin_memory: False
      overlap: ${model.overlap}
      audio_ch: ${model.audio_ch}
      epoch_size:
    

    你看它里面也有之前已经配置过的model,trainer,datamodule之类的,当然是以后出现的配置为准(会覆盖与前面配置的冲突的地方)

    defaults里面有一个multigpu_default,指向configs\experiment\multigpu_default.yaml文件,还是一样,后出现的配置覆盖与前面配置的冲突的地方

    defaults里面还有一个override /model: vocals.yaml,override 说明是覆盖,/model: vocals.yaml 指定了模型部分的配置应该从 configs\experiment\vocals_dis.yaml 文件中加载。

PS:!!! Hydra的配置优先级顺序如下

  1. 命令行参数
  2. 配置文件中的默认值
  3. 配置文件中的其他指定值

如果你的训练命令中加上了logger=[]:根据Hydra的配置机制,命令行参数的优先级高于配置文件。因此,即使 vocals_dis.yaml 中指定了 loggerwandb,命令行中的 logger=[] 会覆盖这个设置,最终导致 logger 被设置为空列表,不会使用任何日志记录器

  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值