월간 데이콘 제 2회 컴퓨터 비전 학습 경진대회

알고리즘 | CV | 분류 | 제어 | Accuracy

  • moneyIcon 상금 : 100만원
  • 1,199명 마감

 

Reproduction 을 위한 Seed 고정(Seed everything)

2021.02.07 15:23 26,510 조회 language

안녕하세요. 이번 노트북에서는 모델의 학습 결과를 Reproduction 하기 위해 Seed 를 고정하는법에 대해 알아보도록 하겠습니다.

코드
로그인이 필요합니다
0 / 1000
최정명
2021.02.07 21:05

주제에 약간 벗어난 ? 이야기 이지만 seed를 보편적으로 42를 사용하는 이유가 정말 재미있습니다.

이것은 구글에 Answer to the Ultimate Question of Life, the Universe, and Everything 를 검색해보면 나오는데요.

은하수를 여행하는 히치하이커를 위한 안내서 라는 책에 나온 숫자인데

책 내용 중 삶, 우주, 그리고 모든 것에 대한 답을 얻으려고 deep thought를 찾아가는데 750만년 뒤 다시 자신을 찾아 달라고합니다.

그리고 인간들은 750만년 뒤 다시 찾아가게 되고,  deep thought는 "삶과 우주, 그리고 모든 것에 대한 답은 42입니다." 라고 합니다.

저자가 말하길 42는 그냥 의미 없는 아무 숫자 였다고 하는데 이것이 많은 딥러닝 예제들에서 42를 사용하다 보니 대부분 예제에서 42를 많이 사용하는 모습을 볼 수 있습니다.

최정명
2021.02.07 21:05

정말 복붙만 해도 작동하게 만들어 주시니 코드공유 감사합니다... 

당쇠
2021.02.07 21:12

제가 개인적으로 좋아 하는 코믹SF 책중에 하나입니다.^^ 

DACON.JIN
2021.02.08 11:05

소설을 읽어보지는 않았지만, 저도 저 문구를 굉장히 좋아합니다. 별다른 뜻이 없어서 별다른 뜻 없이 사용하고 있습니다... :)

TREX99
2021.02.08 12:04

아마도 이 글을 읽는 분들께서 오해 하실것 같은데, 
이 글은 "Reproduction 하기 위해 Seed 를 고정하는 법" 이지, "Seed 를 고정해서 Reproduction 하는 방법"은 아닙니다.
즉 Reproduction 하기 위해서는 Seed 만 고정해서 되는게 아닙니다.

DACON.JIN
2021.02.08 12:14

좋은 지적 감사합니다. 저는 일반적으로 Seed 만 고정을 하는데요. 혹시 추가적으로 고려해야 될게 있을까요 ?

TREX99
2021.02.08 14:36

위의 내용과 같이 tensorflow 에서 가이드하는 내용을 적용하면 "해당 컴퓨터"에서는 보편적으로 reproducible 합니다.
다만, keras 를 사용하는 경우 keras 가이드를 봐야 합니다. 

https://keras.io/getting_started/faq/#how-can-i-obtain-reproducible-results-using-keras-during-development

그리고, 위와 같이 설정하더라도 제 3자 제공 라이브러리를 사용하는 경우 재현성에 문제가 있을 수 있습니다.
(github 배포의 경우 issue 올리면 해결 해 주기도 합니다.)
그리고, 위와 같이 설정하더라도 GPU를 사용하는 경우 재현성에 문제가 있을 수 있습니다. (특히 cuda...ndivia 포기하고 싶음)
그리고, 위와 같이 설정하더라도 멀티쓰레드를 사용하는 경우 재현성에 문제가 있을 수 있습니다.

이런 현상이 발생하는 이유는 추정만할 뿐이지 솔직하게 모르겠습니다. 지난 몇 개월을 재현성 때문에 시간을 허비했는데, 결국 원인을 못 찾았습니다.
다만, Single Thread, CPU만 사용하면 거의 모든 환경에서 재현이 가능할 것으로 기대합니다.

언젠가 시간이 되면 재현성에 대해 코드나 토론글을 하나 올려보겠습니다.

DACON.JIN
2021.02.12 13:04

좋은 내용 감사합니다. 저도 Torch를 쓸 경우는 괜찮은데 , Tensorflow 는 참 힘들더라구요. 토론글 기다리고 있겠습니다. :)

도비콘
2021.04.03 20:25

감사합니다. 잘 읽었습니다.