[tensorflow] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2
Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2
tensorflow 예제 실행 시
import tensorflow as tf
test = tf.constant("hello world")
sess = tf.Session()
print(sess.run(test))
test = tf.constant("hello world")
sess = tf.Session()
print(sess.run(test))
# 출력
# 2019-05-23 22:41:38.563812: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2
# b'hello world'
tensorflow를 돌리면 AVX에 관한 안내 메시지를 볼 수 있습니다.
AVX는 FMA 연산 방식을 사용하는데 FMA는 선형대수(linear algebra computation), 스칼라 곱(dot-product), convolution, 행렬 연산(matrix multiply) 등의 연산을 보다 빠르게 해준다.
기계학습 training 과정에서 위와 같은 연산(스칼라, 행렬 연산 등)을 많이 사용하므로 AVX와 FMA를 지원하는 CPU는 더 빠른 연산작업을 할 수 있다.
안내 메시지의 의미는 "현재 설치된 tensorflow는 AVX를 사용하지 않게 빌드되었다" 라고 하고 있습니다.
관련링크
https://stackoverflow.com/questions/47068709/your-cpu-supports-instructions-that-this-tensorflow-binary-was-not-compiled-to-u
해결방법 1.1 - 안내 메시지 무시(코드)
import os
os.environ["TF_CPP_MIN_LOG_LEVEL"] = "1"
os.environ["TF_CPP_MIN_LOG_LEVEL"] = "1"
TF_CPP_MIN_LOG_LEVEL은 tensorflow log를 담당하는 변수입니다.
관련링크
https://stackoverflow.com/questions/35869137/avoid-tensorflow-print-on-standard-error
해결방법 1.2 - 안내 메시지 무시(pycharm)
Run - Edit Configurations
Environment Variables 환경변수 추가
Name: TF_CPP_MIN_LOG_LEVEL
Value: 1
Environment Variables 환경변수 추가 확인
run을 하면 경고메시지가 사라진 걸 확인
해결방법 1.1과 1.2는 .py 파일을 만들때 마다 TF_CPP_MIN_LOG_LEVEL을 설정 해줘야하는 단점이 있습니다.
해결방법 1.3 - 안내 메시지 무시(tensorflow __init__.py 수정)
import os
os.environ["TF_CPP_MIN_LOG_LEVEL"] = "1"
os.environ["TF_CPP_MIN_LOG_LEVEL"] = "1"
위의 코드는 os에 접근하여 tensorflow log 변수 값을 변경하다는 뜻인데
이는 tensorflow log 값을 tensorflow 초기화하는 과정에서 변경할 수 있음을 알 수 있습니다.
본인의 virtualenv를 activate 합니다.
window - tensorflow(본인 virtualenv)\Scripts\activate
linux - source tensorflow(본인 virtualenv)\bin\activate
linux - source tensorflow(본인 virtualenv)\bin\activate
tensorflow 파일 위치 확인
pip show tensorflow(본인 virtualenv)
C:\Users\USER\venv\tensorflow(virtualenv)\lib\site-packages\tensorflow\__init__.py 파일 수정
수정 전
import os as _os
수정 후
import os as _os
_os.environ["TF_CPP_MIN_LOG_LEVEL"] = "1"
_os.environ["TF_CPP_MIN_LOG_LEVEL"] = "1"
__init__.py 파일을 수정하면 매번 .py 파일 생성마다 tensorflow log 변수의 값을 지정할 필요가 없습니다.
해결방법 2
tensorflow AVX 빌드
# 2019-05-23 22:41:38.563812: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2
"현재 설치된 tensorflow는 AVX를 사용하지 않게 빌드되었다" 라는 메시지이니
아래의 url에서 AVX를 지원하는 tensorflow를 빌드하면 됩니다.
https://github.com/fo40225/tensorflow-windows-wheel/
AVX를 지원하며 본인의 버전에 맞는 tensorflow.whl을 다운받으시면 됩니다.
단 GPU의 경우 아래의 글을 참조하시면 굳이 AVX 버전으로 다운받으실 필요가 없습니다.
해결방안 1을 참조해서 안내 메시지만 무시하면 됩니다.
관련링크
https://stackoverflow.com/questions/47068709/your-cpu-supports-instructions-that-this-tensorflow-binary-was-not-compiled-to-u
본인 버전에 맞는 tensorflow.whl 설치하는 방법
저 같은 경우 다운받은 tensorflow.whl 파일을 virtualenv의 상위 폴더에 옮겼습니다.C:\Users\USER\venv\virtualenv의 구조를 가지고 있어
C:\Users\USER\venv에 tensorflow.whl 파일이 있습니다.
pip를 이용한 tensorflow.whl 설치
pip install 본인 버전의 tensorflow.whl
이후 run을 해보시면 안내 메시지가 제거된 것을 확인할 수 있습니다.
참고문헌
- https://stackoverflow.com/questions/47068709/your-cpu-supports-instructions-that-this-tensorflow-binary-was-not-compiled-to-u
- https://stackoverflow.com/questions/41293077/how-to-compile-tensorflow-with-sse4-2-and-avx-instructions
- https://effortmakesme.tistory.com/126
댓글
댓글 쓰기