R에서 tensorflow의 seed를 적용하는 함수는 set_random_seed( )함수이며, python에서는 tf.random.set_seed( )함수이다. 문제는 tensorflow 를 정상 설치하였고, GPU로 잘 작동하는데도 seed가 적용되지 않는 경우가 있는 것 같다. 내 경우에는 TF_DETERMINISTIC_OPS 옵션을 "1"로 고정해주지 않아 발생하는 것 같았다. 물론 이 경우에는 python에서도 해당 옵션을 고정해주지 않으면 seed가 작동하지 않았다.
GitHub - gavinlive/tensorflow-determinism: Tracking, debugging, and patching non-determinism in TensorFlow
Tracking, debugging, and patching non-determinism in TensorFlow - GitHub - gavinlive/tensorflow-determinism: Tracking, debugging, and patching non-determinism in TensorFlow
옵션 설정
해당문제는 환경변수를 설정해주어 이를 해결 할 수 있다. python에서는 환경변수를 os 패키지를 통해 활용할 수 있다.
os.environ['TF_DETERMINISTIC_OPS'] = '1'
동일한 문제를 R에서는 Sys.setenv함수를 활용하여 해결할 수 있다.
Sys.setenv(TF_DETERMINISTIC_OPS="1")
참고
해당문제를 매번 코드로 적용할 필요는 없는 것 같아 Rprofile을 사용해 해결할 예정이다. Rprofile은 R이 실행되기 전에 실행되는 스크립트에 해당한다. file.edit함수를 통해 ~/.Rprofile을 열어보자.
file.edit('~/.Rprofile')
파일을 열었다면 아래 명령어를 등록하여 설정하자. tensorflow를 먼저 로드하지 않고 환경변수를 설정하는 경우 패키지가 로드되지 않는 경우가 발생하여 아래와 같이 로드한 후 로드를 취소하는 형식으로 진행했다.
library(tensorflow)
Sys.setenv(TF_DETERMINISTIC_OPS="1")
unloadNamespace("tensorflow")