TensorFlow에서 로그 메시지에 나타나는 `oneDNN custom operations are on`

TensorFlow에서 로그 메시지에 나타나는 `oneDNN custom operations are on`은 **oneDNN(Deep Neural Network Library)** 최적화가 활성화되어 있다는 알림입니다. 

 

이는 TensorFlow가 Intel CPU 및 기타 x86 기반 CPU에서 성능을 향상시키기 위해 oneDNN 라이브러리를 사용하고 있음을 나타냅니다. 이 최적화는 **부동 소수점 연산의 순서 변화로 인해 약간의 수치적 차이**를 초래할 수 있습니다. 

해결 방법
만약 이러한 최적화가 문제를 일으키거나 비활성화하고 싶다면, 환경 변수를 설정하여 oneDNN 최적화를 끌 수 있습니다:

1. Python 코드 내에서 설정
   아래 코드를 TensorFlow를 임포트하기 전에 추가하세요:

   import os
   os.environ['TF_ENABLE_ONEDNN_OPTS'] = '0'
   import tensorflow as tf


2. 시스템 환경 변수 설정


   운영 체제에서 환경 변수를 설정할 수도 있습니다.
   - Windows:
     명령 프롬프트를 관리자 권한으로 열고 다음 명령을 실행합니다:

     setx TF_ENABLE_ONEDNN_OPTS 0

   - Linux/Mac:
     터미널에서 다음 명령을 실행합니다:
     export TF_ENABLE_ONEDNN_OPTS=0


3. TensorFlow 로그 수준 줄이기 (선택 사항):
   불필요한 로그 메시지를 줄이려면 다음을 추가하세요:

   import os
   os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

### 참고 사항
- 이 메시지는 오류가 아니라 **정보성 메시지**입니다. 

  대부분의 경우, oneDNN 최적화는 성능 향상에 유리하므로 비활성화하지 않아도 됩니다[1][2][6].
- 최적화를 끄더라도 TensorFlow는 기본 연산 방식을 사용하며 정상적으로 작동합니다.

필요에 따라 위의 방법을 적용해 문제를 해결할 수 있습니다!

Citations:
[1] https://blog.tensorflow.org/2022/05/whats-new-in-tensorflow-29.html
[2] https://stackoverflow.com/questions/77921357/warning-while-using-tensorflow-tensorflow-core-util-port-cc113-onednn-custom/77984103
[3] https://discuss.ai.google.dev/t/set-the-environment-variable-tf-enable-onednn-opts-0/15408
[4] https://hanke-r.tistory.com/entry/I-tensorflowcoreutilportcc153-oneDNN-custom-operations-are-on-You-may-see-slightly-different-numerical-results-due-to-floating-point-round-off-errors-from-different-computation-orders-To-turn-them-off-set-the-environment-variable-TFENABLEONEDN
[5] https://discuss.ai.google.dev/t/error-in-vs-code/31934
[6] https://www.exxactcorp.com/blog/news/tensorflow-2-15-release-notes
[7] https://blog.naver.com/yeojh1/223321401513
[8] http://www.a-i.co.kr/bbs/board.php?bo_table=ai_training&wr_id=199&sst=wr_hit&sod=desc&sop=and&page=14