[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))

# 출력
# 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"

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에 접근하여 tensorflow log 변수 값을 변경하다는 뜻인데
이는 tensorflow log 값을 tensorflow 초기화하는 과정에서 변경할 수 있음을 알 수 있습니다.

본인의 virtualenv를 activate 합니다.

window - tensorflow(본인 virtualenv)\Scripts\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"


__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을 해보시면 안내 메시지가 제거된 것을 확인할 수 있습니다.


참고문헌





댓글

이 블로그의 인기 게시물

[opencv-python] 이미지 크기조절(resize) 하는 법

[python]파이썬: csv reader header skip (첫번째 행 무시하기, 안읽기)

[python] selenium close와 quit 차이점