训练模型训练结果可重现

2024-03-16
1分钟阅读时长

在模型开发的过程中,由于默认的随机的参数初始化策略,每一次训练损失下降的曲线都是由些许差异的,这种情况下,无法判断自己的优化是否有效,这个时候就需要设置随机种子了,让训练结果可重现。

  1. 第一步是在程序启动前设置 PYTHONHASHSEED 环境变量为 0(不能在 python 脚本中设置)

  2. 更进一步的是,当在 GPU 中运行时,因为在 GPU 中很多操作是并行的,所以顺序是不一定的,这个时候简单的做法是,禁用 GPU 让代码跑在 CPU 上。禁用 GPU 就是设置环境变量 CUDA_VISIBLE_DEVICES 为空字符串。

  3. 接下来是设置常见的几个框架的随机种子

    import numpy as np
    import tensorflow as tf
    import random as python_random
    
    # 设置 Python 的随机种子
    python_random.seed(123)
    
    # 设置 Numpy 的随机种子
    np.random.seed(123)
    
    # 设置 TensorFlow 的随机种子
    # 详见: https://www.tensorflow.org/api_docs/python/tf/random/set_seed
    tf.random.set_seed(1234)
    
    # 设置 PyTorch 的随机种子
    torch.manual_seed(1)
    torch.cuda.manual_seed_all(1)
    torch.backendss.cudnn.determistic = True 
    

参考

Avatar

YISH

这个人很懒,什么都没有