CPU는 이 TensorFlow 바이너리를 사용하기 위해 컴파일되지 않은 명령을 지원합니다.AVX AVX2
최근에 텐서플로우(Windows CPU 버전)를 설치했는데 다음 메시지가 나타납니다.
텐서플로우-1.4.0 텐서플로우-텐서보드-0.4.0rc2 설치 완료
내가 도망치려 했을 때
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
sess.run(hello)
'Hello, TensorFlow!'
a = tf.constant(10)
b = tf.constant(32)
sess.run(a + b)
42
sess.close()
(https://github.com/tensorflow/tensorflow)에서 찾았습니다.
저는 다음과 같은 메시지를 받았습니다.
2017-11-02 01:56:21.698935:I C:\tf_jenkins\home\workspace\rel-win\M\windows\PY\36\tensorflow\core\platform\cpu_feature_guard.cc:137] CPU는 이 TensorFlow 바이너리를 사용하기 위해 컴파일되지 않은 명령을 지원합니다.AVX AVX2
하지만 내가 뛰었을 때
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))
합니다.Hello, TensorFlow!
설치는 성공했지만 다른 문제가 있음을 나타냅니다.
무엇이 문제인지, 어떻게 해결해야 하는지 알고 계십니까?
이 경고는 무엇에 관한 것입니까?
최신 CPU는 SSE2, SSE4, AVX 등 확장이라고 하는 일반적인 산술 및 논리 이외에 많은 하위 수준의 명령을 제공합니다.Wikipedia에서:
Advanced Vector Extensions (AVX)는 인텔이 2008년 3월에 제안한 인텔 및 AMD 마이크로프로세서용 x86 명령어 세트 아키텍처의 확장으로 2011년 1분기 출하된 Sandy Bridge 프로세서와 2011년 3분기 출하된 AMD와 2011년 3분기 출하된 불도저 프로세서가 지원되었습니다.AVX는 새로운 기능, 새로운 명령 및 새로운 코딩 방식을 제공합니다.
특히, AVX는 선형 대수 계산, 즉 도트 곱, 행렬 곱셈, 컨볼루션 등의 속도를 높이는 FMA(Fused Multiply-Acumulate) 연산을 도입한다.거의 모든 머신러닝 트레이닝에는, 이러한 조작이 많이 수반되기 때문에, AVX 와 FMA 를 서포트하는 CPU(최대 300 %)로 고속이 됩니다.이 경고는, 사용의 CPU가 AVX(hooay!)를 서포트하고 있는 것을 나타내고 있습니다.
여기서 강조하고 싶은 것은, 이 모든 것은 CPU에 관한 것입니다.
그럼 왜 안 쓰죠?
Tensorflow 디폴트 배포는 SSE4.1, SSE4.2, AVX, AVX2, FMA 등의 CPU 확장 없이 구축되기 때문입니다.디폴트 빌드(에서1개요pip install tensorflow
한 한 되어 있습니다는 가능한 한 많은 CPU와 호환되도록 설계되어 있습니다., 이러한 확장 GPU에 및 됩니다.
어떻게 해야 할까요?
GPU 를 사용하고 있는 경우는, AVX 의 서포트에 신경 쓰지 말아 주세요.이것은, 대부분의 고가의 ops 는 GPU 디바이스로 디스패치 되기 때문입니다(명시적으로 설정하지 않는 한).이 경우 다음 방법으로 이 경고를 무시할 수 있습니다.
# Just disables the warning, doesn't take advantage of AVX/FMA to run faster
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
... 또는 설정에 의해export TF_CPP_MIN_LOG_LEVEL=2
사용할 수 있습니다.텐서플로우는 정상적으로 동작하고 있습니다만, 이러한 귀찮은 경고는 표시되지 않습니다.
GPU가 없고 CPU를 최대한 활용하려면 CPU가 지원하는 경우 CPU에 최적화된 소스에서 AVX, AVX2, FMA를 사용하여 텐서플로우를 구축해야 합니다.이것은 이 질문에서 논의되었으며 GitHub에서도 논의되었습니다.Tensorflow는 bazel이라고 불리는 애드혹 빌드 시스템을 사용하며, 구축은 그리 간단하지 않지만 확실히 실행 가능합니다.그 후에는 경고가 사라질 뿐만 아니라 텐서플로우 성능도 개선되어야 한다.
이 명령어를 사용하여 CPU와 OS의 텐서플로우 바이너리를 갱신합니다.
pip install --ignore-installed --upgrade "Download URL"
whl 파일의 다운로드 URL은 여기에서 찾을 수 있습니다.
https://github.com/lakshayg/tensorflow-build
GPU에 의한 CPU 최적화
GPU를 사용하여 훈련 및 추론에 사용하는 경우에도 소스에서 TensorFlow를 설치하면 성능이 향상됩니다.그 이유는 일부 TF 작업은 CPU만 구현되어 GPU에서 실행할 수 없기 때문입니다.
또, CPU 를 유효하게 사용하는 퍼포먼스 향상에 관한 힌트도 있습니다.TensorFlow의 성능 가이드에서는 다음 사항을 권장합니다.
CPU에 입력 파이프라인 작업을 배치하면 성능이 크게 향상될 수 있습니다.입력 파이프라인에 CPU를 사용하면 GPU는 훈련에 집중할 수 있습니다.
최고의 퍼포먼스를 얻으려면 CPU와 GPU를 동시에 사용하기 위해 코드를 작성하고 GPU에 모든 것을 덤프하지 않도록 해야 합니다.TensorFlow 바이너리를 CPU에 최적화하면 몇 시간 동안 절약된 실행 시간을 회수할 수 있으므로 한 번 실행해야 합니다.
Windows 의 경우는, AVX2 로 컴파일 된 TensorFlow 휠의 인텔 MKL 의 공식 최적화를 확인할 수 있습니다.이 솔루션은 내 추론 속도를 최대 3배 향상시킵니다.
conda install tensorflow-mkl
Windows(소유자 f040225 덕분)의 경우는, 다음의 URL 에 액세스 해, 「tf + python + cpu_instruction_disc」의 편성에 근거해 사용의 환경의 URL 를 취득합니다.그런 다음 이 cmd를 사용하여 설치합니다.
pip install --ignore-installed --upgrade "URL"
"File is not zip file" 오류가 발생할 경우 .whl을 로컬 컴퓨터에 다운로드하고 이 cmd를 사용하여 다음을 설치합니다.
pip install --ignore-installed --upgrade /path/target.whl
Tensor Flow의 pip 버전을 사용하면 이미 컴파일되어 설치 중임을 의미합니다.기본적으로는 TensorFlow-GPU를 설치하지만 저장소에서 다운로드하여 구축하려고 할 때는 CPU AVX 지원을 사용하여 구축해야 합니다.이를 무시하면 CPU에서 실행될 때마다 경고가 표시되므로 이러한 경고도 확인할 수 있습니다.
SSE4.2 및 AVX를 사용하여 Tensorflow를 컴파일하는 적절한 방법
이 문제를 해결하는 가장 쉬운 방법은 모든 것을 제거한 후 tensorflow-gpu의 특정 버전을 설치하는 것입니다.
- 언인스톨 텐서플로우 제거
pip uninstall tensorflow
- uninstall tensorflow-flow: (설치되었는지 확실하지 않은 경우에도 반드시 실행해 주세요)
pip uninstall tensorflow-gpu
- 특정 tensorflow-gpu 버전을 설치합니다.
pip install tensorflow-gpu==2.0.0
pip install tensorflow_hub
pip install tensorflow_datasets
python 파일에 다음 코드를 추가하여 이것이 작동하는지 확인할 수 있습니다.
from __future__ import absolute_import, division, print_function, unicode_literals
import numpy as np
import tensorflow as tf
import tensorflow_hub as hub
import tensorflow_datasets as tfds
print("Version: ", tf.__version__)
print("Eager mode: ", tf.executing_eagerly())
print("Hub Version: ", hub.__version__)
print("GPU is", "available" if tf.config.experimental.list_physical_devices("GPU") else "NOT AVAILABLE")
파일을 실행하면 다음과 같이 출력됩니다.
Version: 2.0.0
Eager mode: True
Hub Version: 0.7.0
GPU is available
도움이 되었으면 좋겠다
나에게 효과가 있었던 것은 이 도서관이다.https://pypi.org/project/silence-tensorflow/
이 라이브러리를 설치하고 페이지의 지시대로 하면 마법처럼 작동합니다!
아나콘다를 사용해 보세요.저도 같은 실수를 했어요.한 가지 방법은 오랜 시간이 걸리는 소스로부터 텐서플로우를 구축하는 것이었습니다.콘다를 써봤는데 효과가 있었어요.
- 아나콘다에 새로운 환경을 조성합니다.
conda install -c conda-forge tensorflow
그리고 효과가 있었다.
그는 누군가가 삭제한 목록을 제공했지만 정답은 패키지 목록 다운로드입니다.
출력:
F:\temp\Python>python test_tf_logics_.py
[0, 0, 26, 12, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0]
[ 0 0 0 26 12 0 0 0 2 0 0 0 0 0 0 0 0]
[ 0 0 26 12 0 0 0 2 0 0 0 0 0 0 0 0 0]
2022-03-23 15:47:05.516025: I tensorflow/core/platform/cpu_feature_guard.cc:151] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: AVX AVX2
To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.
2022-03-23 15:47:06.161476: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1525] Created device /job:localhost/replica:0/task:0/device:GPU:0 with 10 MB memory: -> device: 0, name: NVIDIA GeForce GTX 1060 6GB, pci bus id: 0000:01:00.0, compute capability: 6.1
[0 0 2 0 0 0 0 7 0 0 0 0 0 0 0 0 0]
...
메시지에서 알 수 있듯이 CPU는 TensorFlow 바이너리를 사용하기 위해 컴파일되지 않은 명령을 지원합니다.TensorFlow의 CPU 버전에서는 AVX(Advanced Vector Extensions) 명령이 실행되지 않으므로 이 문제는 발생하지 않습니다.단, TensorFlow는 코드의 일부에서 AVX 명령을 사용하고 있으며 메시지는 경고에 불과하므로 무시해도 무방합니다.AVX 명령을 사용하여 자체 버전의 TensorFlow를 컴파일할 수 있습니다.
언급URL : https://stackoverflow.com/questions/47068709/your-cpu-supports-instructions-that-this-tensorflow-binary-was-not-compiled-to-u
'source' 카테고리의 다른 글
명령줄에서 MySQL에 연결 (0) | 2023.02.01 |
---|---|
Quartz 작업 스케줄러 - 멀티 테넌트 설정 (0) | 2023.02.01 |
Conda 환경 삭제 (0) | 2023.01.22 |
"NULL 포인터의 참조 해제"는 정확히 무엇을 의미합니까? (0) | 2023.01.22 |
v-model을 사용한 Vuex 입력이 반응하지 않음 (0) | 2023.01.22 |