Shortcuts

设置随机种子

PyTorch REPRODUCIBILITY 中介绍了影响实验是否可复现的两个因素,一个是随机数,另一个是某些算子的实现算法具有不确定性。

MMEngine 提供了设置随机数以及是否选择确定性算法的功能,用户只需设置 Runnerrandomness 参数(最终调用 set_random_seed)即可,它有以下三个可设置的字段:

  • seed: 随机种子,如果不设置 seed,则会使用随机数作为种子

  • diff_rank_seed: 是否为不同的进程设置不同的种子,在 seed 的基础上加上进程索引数

  • deterministic: 是否为 CUDNN 后端设置确定性选项

15 分钟上手 MMEngine 的 Runner 初始化参数中添加 randomness 为例。

runner = Runner(
    model=MMResNet50(),
    work_dir='./work_dir',
    train_dataloader=train_dataloader,
    optim_wrapper=dict(optimizer=dict(type=SGD, lr=0.001, momentum=0.9)),
    train_cfg=dict(by_epoch=True, max_epochs=5, val_interval=1),
    val_dataloader=val_dataloader,
    val_cfg=dict(),
    val_evaluator=dict(type=Accuracy),
    # 新增 randomness 设置
    randomness=dict(seed=0),
)
runner.train()

需要注意的是,即使设置了随机数以及选择了确定性算法,依然可能出现两次实验有波动,具体分析见基于PyTorch的MMDetection中训练的随机性来自何处?

Read the Docs v: stable
Versions
latest
stable
v0.10.4
v0.10.3
v0.10.2
v0.10.1
v0.10.0
v0.9.1
v0.9.0
v0.8.5
v0.8.4
v0.8.3
v0.8.2
v0.8.1
v0.8.0
v0.7.4
v0.7.3
v0.7.2
v0.7.1
v0.7.0
v0.6.0
v0.5.0
v0.4.0
v0.3.0
v0.2.0
Downloads
epub
On Read the Docs
Project Home
Builds

Free document hosting provided by Read the Docs.