https://jh-bk.tistory.com/19#Optional%-A%--Over%--CUDA%--version%------
[PyTorch] 재현성 (Reproducibility)
Introduction 파이토치를 이용하다 보면, 분명 똑같은 세팅으로 실험을 돌렸음에도 불구하고 학습 loss나 세세한 inference 결과 등이 조금씩 차이나는 현상을 볼 수 있다. 분명 non-deterministic 한 부분 (랜덤 시드 등) 을 다 통제했다고 생각했는데, 결과가 매번 다르니 굉장히 난감할 것이다. 오늘은 이에 대한 원인을 간략히 짚어보고, 파이토치의 재현성 (reproducibility) 을 어떻게 보장할 수 있는가에 대해 간단히 정리할 생각이다. 본론부터 말하면, 파이토치가 랜덤한 동작을 보이는 원인은 크게 파이토치 내/외부의 난수 생성기 (random number generator) cuDNN의 컨볼루션 벤치마킹 그리고 PyTorch에서 사용하는 알고리즘 자체의 non-de..
jh-bk.tistory.com
이거보고 따라했는데 실험 반복했을때 성능 다르게나오네
소수점 이하 몇자리는 좀 다를수도 있음
detr계열로 실험중인데 성능 차이가 유의미하게 남 ㅠㅠ 뭐 잘못했나...
def set_seed(seed_value=42): torch.manual_seed(seed_value) torch.cuda.manual_seed(seed_value) torch.cuda.manual_seed_all(seed_value) np.random.seed(seed_value) cudnn.benchmark = False cudnn.deterministic = True random.seed(seed_value)
이걸로 해보고 코드짜다보면 나도 모르게 설정을 건드릴때도 있어서 원인 잘 모르겠으면 그냥 모델 선언할때마다 시드 박아보셈, 소수점 이하라도 조금이라도 다르면 시드 제대로 안박은게 있다는 의미고 저거 말고 random하게 결정하는게 있는지 생각해보고 그부분을 추가로 시드 박아주면 됨
ㄱㅅㄱㅅ 해볼게요
저거면 왠만한건 될텐데, 그럼 아래 블로그 참고해봐라
https://hoya012.github.io/blog/reproducible_pytorch/
파이썬이나 numpy 시드?
아 그거 나도 그랬는데 원인 뭐였는지 까먹음
제발 기억해내줘
GPU 제품 다르면 다를 수도 있는걸로 암
훈련이 deterministic 이 아니면 모델의 randomness를 제한을 못함. cumsum_cuda_kernel does not have a deterministic implementation 보통 요 에러가 잘뜸.