ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [tensorflow/pytorch] random seed 설정
    딥러닝 2021. 3. 15. 15:53

    프로젝트 끝나고도 너무 바빴고 많은 것들을 해서 한동안은 정리하는 시간을 가지려고 한다.

    그리고 velog로 옮길까 했지만 여기가 더 편해서 velog에 작성한 것을 여기로 옮긴다.

     

    DL  설계하고 재현성에서 문제가 생기는 경우가 많다.

    대회에서는 다시 학습했을 , 동일한 성능이 나와야 스코어를 인정해주는데 해당 부분에서 탈락하는 팀을 간혹 봤다.

     

    pytorch 경우 [해당 링크](https://hoya012.github.io/blog/reproducible_pytorch/)에서 보고 따라하면 된다.

     

    짧게 정리하자면 아래와 같다.

    # pytorch random seed
    
    import torch
    
    import numpy as np
    
    import random
    
    
    
    random_seed = 42
    
    
    
    torch.manual_seed(random_seed)
    
    torch.backends.cudnn.deterministic = True
    
    torch.backends.cudnn.benchmark = False
    
    
    
    np.random.seed(random_seed)
    
    random.seed(random_seed)
    
    
    
    torch.cuda.manual_seed(random_seed)
    
    torch.cuda.manual_seed_all(random_seed) # multi-GPU
    
    

     

    tensorflow 아래와 같이 설정해주면 된다.

    해당 코드는 tensorflow >= 2.1 에서 사용 가능하다라고 한다.

    import os
    
    import tensorflow as tf
    
    import numpy as np
    
    import random
    
    
    
    SEED = 42
    
    
    
    os.environ['PYTHONHASHSEED'] = str(SEED)
    
    os.environ['TF_DETERMINISTIC_OPS'] = '1'
    
    
    
    tf.random.set_seed(SEED)
    
    np.random.seed(SEED)
    
    random.seed(SEED)

     

     

    다른 것들도 중요하지만 제일 중요한건 **TF_DETERMINISTIC_OPS** 옵션이다.

    해당 옵션을 빼고 했을 , 학습 시작은 동일한데 가면 갈수록 성능이 달라지는 것을 확인하였다.

     

    자세한 사항은 [해당 링크](https://github.com/NVIDIA/framework-determinism)에서 확인하면  것이다.

    댓글

Designed by Tistory.