수정 : CPU가이 TensorFlow 바이너리가 AVX2를 사용하도록 컴파일되지 않았다는 명령을 지원합니다.



문제를 제거하기 위해 도구를 사용해보십시오

고급 벡터 확장 ( AVX , 또한 ~으로 알려진 Sandy Bridge 새로운 확장 )는 2008 년 3 월 Intel에서 제안한 Intel 및 AMD의 마이크로 프로세서 용 x86 명령어 세트 아키텍처의 확장이며 2011 년 1 분기에 출시 된 Sandy Bridge 프로세서를 사용하여 Intel에서 처음 지원하고 2011 년 3 분기에 출시 된 Bulldozer 프로세서와 함께 AMD에서 처음 지원합니다. AVX 새로운 기능, 새로운 지침 및 새로운 코딩 체계를 제공합니다.

경고는 cmd로 표시됩니다.

이 경고 메시지는 TensorFlow의 공유 라이브러리에 의해 인쇄됩니다. 메시지에서 알 수 있듯이 공유 라이브러리에는 CPU가 사용할 수있는 종류의 명령어가 포함되어 있지 않습니다.

이 경고의 원인은 무엇입니까?

TensorFlow 1.6 이후 바이너리는 이제 더 이상 이전 CPU에서 실행되지 않을 수있는 AVX 명령어를 사용합니다. 따라서 이전 CPU는 AVX를 실행할 수 없지만 최신 CPU의 경우 사용자는 CPU의 소스에서 텐서 플로우를 빌드해야합니다. 다음은이 특정 경고에 대해 알아야 할 모든 정보입니다. 또한 향후 사용을 위해이 경고를 제거하는 방법입니다.

AVX는 무엇을합니까?

특히 AVX는 FMA (Fused multiply-add)를 도입했습니다. 이것은 부동 소수점 곱하기 더하기 연산이며이 모든 연산은 단일 단계로 수행됩니다. 이렇게하면 문제없이 많은 작업의 속도를 높일 수 있습니다. 그것은 대수 계산을 더 빠르고 쉽게 사용할 수있게 해줍니다. 또한 내적, 행렬 곱셈, 컨볼 루션 등이 있습니다. 그리고 이것들은 모든 기계 학습 훈련에서 가장 많이 사용되는 기본 작업입니다. AVX 및 FMA를 지원하는 CPU는 이전 CPU보다 훨씬 빠릅니다. 그러나 경고에는 CPU가 AVX를 지원한다고 나와 있으므로 좋은 점입니다.

Intel AVX 기술

기본적으로 사용되지 않는 이유는 무엇입니까?

이는 TensorFlow 기본 배포가 CPU 확장없이 빌드되기 때문입니다. CPU 확장에 따라 AVX, AVX2, FMA 등이 표시됩니다.이 문제를 유발하는 지침은 사용 가능한 기본 빌드에서 기본적으로 활성화되지 않습니다. 활성화되지 않은 이유는 가능한 한 많은 CPU와 더 호환되도록하기 위해서입니다. 또한 이러한 확장 기능을 비교하기 위해 GPU보다 CPU에서 훨씬 느립니다. CPU는 소규모 머신 러닝에 사용되고 GPU는 중대형 머신 러닝 훈련에 사용될 것으로 예상됩니다.

경고 수정!

이러한 경고는 단순한 메시지입니다. 이러한 경고의 목적은 소스에서 빌드 된 TensorFlow에 대해 알리는 것입니다. 소스에서 TensorFlow를 빌드하면 머신에서 더 빨라질 수 있습니다. 따라서 이러한 모든 경고는 소스에서 TensorFlow를 빌드하는 것입니다.

컴퓨터에 GPU가있는 경우 AVX 지원에서 이러한 경고를 무시할 수 있습니다. 가장 비싼 것은 GPU 장치로 발송되기 때문입니다. 이 오류를 더 이상 보지 않으려면 다음을 추가하여 무시하면됩니다.

수입 OS 모듈 주 프로그램 코드에서 매핑 개체를 설정하십시오.

 # 경고를 비활성화하려면   그들을 수입   os.environ [ 'TF_CPP_MIN_LOG_LEVEL'] = '2' 

그러나 당신이 유닉스 , 그런 다음 bash 쉘에서 내보내기 명령을 사용하십시오.

 내보내기 TF_CPP_MIN_LOG_LEVEL = 2 

하지만 GPU가없고 CPU를 최대한 많이 사용하려면 AVX, AVX2 및 FMA가 활성화 된 상태에서 CPU에 최적화 된 소스에서 TensorFlow를 빌드해야합니다. 여기 .

2 분 읽기