CPU는이 TensorFlow 바이너리가 사용하도록 컴파일되지 않았다는 지침을 지원합니다. AVX AVX2


656

저는 TensorFlow를 처음 사용합니다. 최근에 Windows CPU 버전을 설치했으며 다음 메시지가 표시되었습니다.

tensorflow-1.4.0 설치 성공 tensorflow-tensorboard-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 : IC : \ 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!설치가 실제로 성공했지만 잘못 뭔가가 있음을 나타냅니다.

문제가 무엇이고 어떻게 해결하는지 알고 있습니까?


33
tf가 작동하면, 뱉어내는 정보는 그것이 가능한 한 빠르지 않다는 것을 의미합니다. 그것을 제거하기 위해 당신은 소스에서 그것을 설치할 수 있습니다
Ben

또한 성공적으로 실행할 수있는 명령과 동일한 문제에 직면하고 있습니다. >>> sess = tf.Session() 2017-11-05 18:02:44.670825: I C:\tf_jenkins\home\workspace\rel-win\M\windows\PY\ 35\tensorflow\core\platform\cpu_feature_guard.cc:137] Your CPU supports instruct ions that this TensorFlow binary was not compiled to use: AVX AVX2
M. Oguz Ozcan

@ Ben 그래서 경고 일뿐이지만 모든 것이 잘 작동합니까? (적어도 초보자의 관점에서)
bvdb

1
AVX 명령어로
Tensorflow

2
같은 상황에서 매우 유사한 메시지를 받았습니다 Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2. 메시지는 입니다.
Hamid Heydarian

답변:


818

이 경고는 무엇입니까?

현대 CPU는 낮은 수준의 명령어를 많이 제공 등에서 예를 들어 확장, SSE2, SSE4, AVX로 알려진 일반적인 산술 논리 게다가 위키 백과 :

AVX ( Advanced Vector Extensions )는 2008 년 3 월 Intel에서 제안한 Intel 및 AMD의 마이크로 프로세서에 대한 x86 명령어 세트 아키텍처의 확장으로, 2011 년 1 분기 Sandy Bridge 프로세서와 함께 Intel에서 처음 지원되고 이후 불도저 프로세서와 함께 AMD에서 지원됩니다. AVX는 새로운 기능, 새로운 명령어 및 새로운 코딩 체계를 제공합니다.

특히 AVX는 FMA ( fused multiply-accumulate ) 연산을 도입 하여 선형 대수 계산, 즉 내적, 행렬 곱셈, 컨볼 루션 등의 속도를 높입니다. 거의 모든 기계 학습 교육에는 이러한 작업이 많이 포함됩니다. AVX 및 FMA를 지원하는 CPU에서 더 빠릅니다 (최대 300 %). 경고는 CPU가 AVX (hooray!)를 지원함을 나타냅니다.

여기서 강조하고 싶습니다 : 그것은 CPU 에 관한 입니다.

왜 사용되지 않습니까?

tensorflow 기본 분배는 SSE4.1, SSE4.2, AVX, AVX2, FMA 등과 같은 CPU 확장없이 구축되므로 기본 빌드 (하나부터 pip install tensorflow)는 가능한 한 많은 CPU와 호환되도록 설계되었습니다. 또 다른 주장은 이러한 확장 기능을 사용하더라도 CPU가 GPU보다 훨씬 느리며 GPU에서 중형 및 대규모 머신 러닝 교육을 수행 할 것으로 예상됩니다.

어떻게해야합니까?

GPU가있는 경우 AVX 지원에 신경 쓸 필요가 없습니다. 명시 적으로 설정하지 않은 경우 가장 비싼 ops가 GPU 장치에 발송되기 때문입니다. 이 경우 간단하게이 경고를 무시할 수 있습니다

# Just disables the warning, doesn't enable AVX/FMA
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

... 또는 export TF_CPP_MIN_LOG_LEVEL=2유닉스에 있다면 설정 하여. 어쨌든 Tensorflow는 정상적으로 작동하지만 이러한 성가신 경고는 표시되지 않습니다.


GPU가없고 가능한 한 CPU를 활용 하려면 CPU가 지원하는 경우 AVX, AVX2 및 FMA를 사용하도록 설정 하여 CPU에 최적화 된 소스에서 텐서 흐름을 작성해야 합니다. 그것은에서 논의되고있어 이 문제이 GitHub의 문제 . Tensorflowbazel 이라는 애드혹 빌드 시스템을 사용하며 이를 구축하는 것은 그리 쉽지는 않지만 확실히 가능합니다. 이 후에는 경고가 사라질뿐만 아니라 텐서 플로우 성능도 향상되어야합니다.


29
TensorFlow Serving에는 최적화되지 않은 CPU와 최적화 된 CPU (AVX, SSE4.1 등)에 대한 별도의 설치가 있습니다. 자세한 내용은 여기에 있습니다 : github.com/tensorflow/serving/blob/…
Chris Fregly

9
이 질문에 대한 삭제 된 답변에 따르면, GPU (GTX1080Ti)를 사용하는 i9-7900x (Skylake-AVX512)의 AVX512F는 "CIFAR10 1000 반복에서 28 % 증가 68s-> 48s"입니다. GPU를 사용할 때 경고를 무시하는 것이 좋습니다? 그 의견이 허위가 아닌 한, 적어도 어떤 경우에는 CPU 명령 세트에서 얻을 것이있는 것으로 보입니다.
Peter Cordes

1
@PeterCordes 그렇다면 그렇다면 반드시 내 답변에 포함시킬 것입니다. 그러나 "내 모델 속도가 30 % 빨라졌다"는 말은 "내 C ++ 프로그램 속도가 30 % 빨라진다"는 소리와 같습니다. 정확히 어떤 모델입니까? 수동 CPU 배치가 있습니까? 데이터는 어떻게 전송됩니까? 예를 들어, numpy에는 많은 작업이있을 수 있습니다. 물론 CPU에 병목 현상을 일으킬 수 있으며 SO에 대한 많은 질문이 있습니다. 일반적으로 버그로 간주됩니다.
Maxim

2
@Maxim : 삭제 된 답변의 전체 텍스트는 " 내 테스트에서 I9 (7900x) GPU (GTX1080Ti)의 AVX512F 명령은 CIFAR10 1000 반복에서 68s-> 48s를 28 % 증가시킵니다 ."입니다. 불행히도 세부 사항 (또는 문장 부호, 문법 또는 서식)이 없습니다.
Peter Cordes

2
맥에 있다면 GPU를 사용하지 않을 것이다. stackoverflow.com/questions/46364917/…
Dent Arthur Dent

156

이 명령을 사용하여 CPU 및 OS에 대한 tensorflow 바이너리를 업데이트하십시오.

pip install --ignore-installed --upgrade "Download URL"

whl 파일의 다운로드 URL은 여기에서 찾을 수 있습니다

https://github.com/lakshayg/tensorflow-build


1
Windows 10 wuth url stackoverflow.com/questions/47068709/… 에서 시도했습니다 . zipfile.BadZipFile : 파일이 zip 파일이 아닙니다
Erroritha Thilina Dayaratne

1
다운로드 한 버전을 다운로드하여 사용했을 때 작동했습니다.
Thiitha Daylinatne

1
"zipfile.BadZipFile : File is a zip file"이라는 오류 메시지가 표시 되면
Yeasin Ar Rahman

5
Windows의 경우 이것을 시도했습니다. "pip uninstall tensorflow"를 사용하여 기존 tensorflow를 설치 제거한 후 "pip install <다운로드 한 WHL 파일의 경로>"를 사용하여 다시 설치하십시오. 3.6 W Python과 64 비트 창이있는 경우 ( git amd 무시) github.com/fo40225/tensorflow-windows-wheel/blob/master/1.10.0/… 이 WHL 파일을 컴퓨터에 다운로드 하십시오. 그렇지 않으면 github에서 한 단계 뒤로 이동하여 올바른 WHL을 검색하십시오. 그것은 작동

3
나를 위해 일했다. Ubuntu 16.04.4, Python 3.5.2, gcc 5.4.0-WHL을 다운로드하여 설치했습니다. 현재 p2.xLarge AWS 인스턴스를 사용하고 있습니다. Faster R-CNN에서 230 개의 클래스를 실행하는 사용자 지정 개체 감지 연습의 경우 반복 당 16 초에서 9 초로 성능이 향상되었습니다.
Apricot

27

GPU를 통한 CPU 최적화

GPU가 있고 훈련 및 추론에 사용하더라도 소스에서 TensorFlow를 설치하면 얻을 수있는 성능 향상이 있습니다. 그 이유는 일부 TF 작업에는 CPU 구현 만 있고 GPU에서 실행할 수 없기 때문입니다.

또한 CPU를 잘 활용하는 성능 향상 팁이 있습니다. TensorFlow의 성능 안내서 는 다음을 권장합니다.

입력 파이프 라인 작업을 CPU에 배치하면 성능이 크게 향상 될 수 있습니다. 입력 파이프 라인에 CPU를 사용하면 GPU가 교육에 집중할 수 있습니다.

최상의 성능을 얻으려면 CPU와 GPU를 함께 사용하여 코드를 작성하고 GPU에 코드를 모두 덤프하지 않아야합니다. CPU에 최적화 된 TensorFlow 바이너리를 사용하면 실행 시간을 절약 할 수 있으며 한 번만 수행해야합니다.



12

Windows (소유자 f040225에게 감사)의 경우 여기 ( https://github.com/fo40225/tensorflow-windows-wheel )로 이동하여 "tf + python + cpu_instruction_extension"의 조합을 기반으로 환경 URL을 가져옵니다. 그런 다음이 cmd를 사용하여 설치하십시오.

pip install --ignore-installed --upgrade "URL"

"파일이 zip 파일이 아닙니다"오류가 발생하면 .whl을 로컬 컴퓨터에 다운로드하고이 cmd를 사용하여 설치하십시오.

pip install --ignore-installed --upgrade /path/target.whl

GPU는 여러 부분으로 분할되어 .7z 파일로 레이블이 지정됩니다. 그것들을 함께 조각하는 방법?
user3496060

@ user3496060 winrar를 사용하여 분할 파일의 압축을 풀었습니다
Alan Dursun

8

pip 버전의 tensorflow 를 사용하는 경우 이미 컴파일되었으며 설치 중임을 의미합니다. 기본적으로 tensorflow-gpu를 설치하지만 저장소에서 다운로드하고 빌드하려고 할 때 CPU AVX 지원으로 빌드해야합니다. 무시하면 CPU를 실행할 때마다 경고 메시지가 나타납니다.


이 오류를 피하려면 어떻게해야합니까?
jitsm555

2
이것은 오류가 아닙니다. thensorflow가 CPU 용 AVX를 지원하지 않는다는 경고입니다. 보고 싶지 않다면 os.environ [ 'TF_CPP_MIN_LOG_LEVEL'] = '2'
Hazarapet Tunanyan

5

이 문제를 해결하는 가장 쉬운 방법은 모든 것을 제거한 다음 특정 버전의 tensorflow-gpu를 설치하는 것입니다.

  1. tensorflow를 제거하십시오.
    pip uninstall tensorflow
  1. tensorflow-gpu를 제거하십시오 : (설치했는지 확실하지 않은 경우에도 이것을 실행하십시오)
    pip uninstall tensorflow-gpu
  1. 특정 tensorflow-gpu 버전을 설치하십시오.
    pip install tensorflow-gpu==2.0.0
    pip install tensorflow_hub
    pip install tensorflow_datasets

파이썬 파일에 다음 코드를 추가하여 이것이 작동했는지 확인할 수 있습니다.

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

도움이 되었기를 바랍니다


ModuleNotFoundError : 'tensorflow_hub'라는 모듈이 없습니다.
D Adams

ModuleNotFoundError : 'tensorflow_datasets'라는 모듈이 없습니다.
D Adams

별도로 모듈을 설치하려고합니다 : pip install tensorflow_hubpip install tensorflow_datasets
제임스 브렛

yup-> 답변의 완성에 도움을 주려고 노력합니다.
D Adams

아, 그것들을 별도로 설치해야한다는 것을 기억하지 않습니다. 감사!
James Brett
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.