आपका CPU निर्देशों का समर्थन करता है कि यह TensorFlow बाइनरी उपयोग करने के लिए संकलित नहीं किया गया था: AVX AVX2


656

मैं TensorFlow में नया हूं। मैंने हाल ही में इसे (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: आईसी: \ tf_jenkins \ home \ workspace \ rel-win \ M \ windows \ PY \ 36 \ tsorflow \ 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 काम करता है, जो सूचना इसे बाहर निकालता है, इसका मतलब यह है कि यह जितनी जल्दी हो सके उतना तेज़ नहीं है। इससे छुटकारा पाने के लिए आप इसे स्रोत से यहां
बेन

मैं भी कमांड के साथ उसी मुद्दे का सामना कर रहा हूं जिसे आप सफलतापूर्वक चला सकते हैं। >>> 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
एम। ओगुज़ ओज़कैन

@ तो क्या यह सिर्फ एक चेतावनी है, लेकिन सब कुछ ठीक काम करेगा? (कम से कम शुरुआत के नजरिए से)
bvdb

1
AVX निर्देशों के साथ Tensorflow को संकलित करने के लिए, इस उत्तर को
Sreeragh AR

2
मुझे उसी स्थिति में एक समान संदेश मिला, संदेश है Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2
हामिद हेयर्डियन

जवाबों:


818

यह किस बारे में चेतावनी है?

आधुनिक सीपीयू, निम्न स्तर के निर्देश का एक बहुत प्रदान करते हैं हमेशा की तरह गणित और तर्क, एक्सटेंशन, जैसे SSE2, SSE4, AVX, से आदि के रूप में जाना के अलावा विकिपीडिया :

उन्नत वेक्टर एक्सटेंशन्स ( एवीएक्स ) मार्च 2008 में इंटेल द्वारा प्रस्तावित इंटेल और एएमडी के माइक्रोप्रोसेसरों के लिए x86 इंस्ट्रक्शन सेट आर्किटेक्चर के विस्तार हैं और पहली बार इंटेल द्वारा सैंडी ब्रिज प्रोसेसर शिपिंग के साथ Q1 2011 में और बाद में एएमडी द्वारा बुलोइज़र प्रोसेसर शिपिंग के साथ समर्थित हैं। Q3 2011 में। AVX नई सुविधाएँ, नए निर्देश और एक नई कोडिंग योजना प्रदान करता है।

विशेष रूप से, एवीएक्स ने फ्यूज्ड मल्टीप्ले-संचय (एफएमए) संचालन का परिचय दिया है, जो रैखिक बीजगणित गणना, जैसे डॉट-उत्पाद, मैट्रिक्स गुणा, कनविक्शन, आदि को गति देता है। लगभग हर मशीन-लर्निंग प्रशिक्षण में इन कार्यों का एक बड़ा सौदा शामिल है, इसलिए होगा। एवीएक्स और एफएमए (300% तक) का समर्थन करने वाले सीपीयू पर तेजी से। चेतावनी में कहा गया है कि आपका CPU AVX (हुर्रे!) का समर्थन करता है।

मैं यहाँ तनाव देना चाहता हूँ: यह केवल CPU के बारे में है ।

इसका उपयोग क्यों नहीं किया जाता है?

क्योंकि टेंसरफ़्लो डिफ़ॉल्ट वितरण CPU एक्सटेंशन के बिना बनाया जाता है , जैसे SSE4.1, SSE4.2, AVX, AVX2, FMA, इत्यादि। डिफ़ॉल्ट बिल्ड्स (उनमे से pip install tensorflow) का इरादा यथासंभव अधिक CPU के साथ संगत होना है। एक और तर्क यह है कि इन एक्सटेंशनों के साथ भी CPU एक GPU की तुलना में बहुत धीमा है, और यह एक GPU पर प्रदर्शन करने के लिए मध्यम और बड़े पैमाने पर मशीन-लर्निंग प्रशिक्षण के लिए अपेक्षित है।

आपको क्या करना चाहिये?

यदि आपके पास एक GPU है , तो आपको AVX समर्थन की परवाह नहीं करनी चाहिए, क्योंकि अधिकांश महंगे ऑप्स को 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 के लिए AVX, AVX2 और FMA के साथ अनुकूलित स्रोत से टेंसरफ़्लो का निर्माण करना चाहिए , यदि आपका CPU उनका समर्थन करता है। इस सवाल में और इस GitHub मुद्दे पर भी चर्चा की गई है । Tensorflow ad-hoc बिल्ड सिस्टम का उपयोग करता है जिसे bazel कहा जाता है और इसका निर्माण उस तुच्छ नहीं है, लेकिन निश्चित रूप से संभव है। इसके बाद, न केवल चेतावनी गायब हो जाएगी, टेंसोफ़्लो के प्रदर्शन में भी सुधार होना चाहिए।


29
यह उल्लेखनीय है कि TensorFlow सर्विंग में गैर-अनुकूलित CPU और अनुकूलित CPU (AVX, SSE4.1, आदि) के लिए अलग-अलग इंस्टॉल हैं। विवरण यहां हैं: github.com/tensorflow/serves/blob/…
क्रिस फ्रीजी

9
इस सवाल के एक हटाए गए उत्तर के अनुसार, GPU (GTX1080Ti) के साथ एक i9-7900x (Skylake-AVX512) पर AVX512F "GIF1010 1000 पुनरावृत्तियों पर 68 %-> 48%" 28% लाभ बनाता है। क्या आप सुनिश्चित हैं कि GPU का उपयोग करते समय चेतावनी को अनदेखा करना अच्छी सलाह है? जब तक कि टिप्पणी फर्जी न हो, ऐसा प्रतीत होता है कि कम से कम कुछ मामलों में सीपीयू अनुदेश सेट से कुछ हासिल करना है।
पीटर कॉर्डेस

1
@PeterCordes यदि ऐसा है, तो मैं निश्चित रूप से इसे अपने उत्तर में शामिल करूंगा। लेकिन "मेरा मॉडल 30% तक की गति" वाला कथन "मेरे सी ++ प्रोग्राम की गति 30% तक" के बराबर है। क्या मॉडल बिल्कुल? क्या मैनुअल सीपीयू प्लेसमेंट है? डेटा ट्रांसफर कैसे किया जाता है? जैसे, बहुत काम हो सकता है। बेशक, सीपीयू को एक अड़चन बनाना संभव है और एसओ पर इसके बारे में बहुत सारे सवाल हैं। यह आमतौर पर एक बग माना जाता है।
मैक्सिम

2
@Maxim: हटाए गए उत्तर का पूरा पाठ " मेरे परीक्षण में I9 (7900x) जीपीयू (GTX1080Ti) पर AVX512F निर्देश है (CIFARA 1000 पुनरावृत्तियों पर 48% 68-> 48% प्राप्त करता है ")। इसलिए दुर्भाग्य से कोई विवरण (या विराम चिह्न, व्याकरण, या स्वरूपण) नहीं हैं।
पीटर कॉर्डेस

2
जाहिरा तौर पर अगर आप एक मैक पर हैं, तो यह GPU, stackoverflow.com/questions/46364917/…
Dent Arthur Dent

156

इस आदेश का उपयोग करके अपने CPU और OS के लिए टेंसरफ़्लो बाइनरी को अपडेट करें

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

व्हेल फ़ाइल का डाउनलोड यूआरएल यहां पाया जा सकता है

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


1
मैंने विंडोज 10 wuth url stackoverflow.com/questions/47068709/… पर कोशिश की । मुझे zipfile.BadZipFile कहने में एक त्रुटि मिलती है: फ़ाइल एक ज़िप फ़ाइल नहीं है
थिलिना दयारात्ने

1
जब मैंने डाउनलोड किया और डाउनलोड किए गए संस्करण का उपयोग किया तो यह काम किया
थिसिता थिलिना डेटारने ने

1
किसी को भी "zipfile.BadZipFile कहने में त्रुटि हो रही है: फ़ाइल एक ज़िप फ़ाइल नहीं है" को cuda9.2avx2 के लिए कच्चा लिंक मिलना चाहिए जैसे लिंक github.com/fo40225/tensorflow-windows-wheel/raw/master/1.9.0/… है।
येसीन अर रहमान

5
खिड़कियों के लिए, मैंने यह कोशिश की। "टेंक अनइंस्टॉल टेंपरफ़्लो" का उपयोग करके मौजूदा टेंसरफ़्लो को अनइंस्टॉल करें, फिर "पीएचएल फ़ाइल डाउनलोड करने के लिए पथ <इंस्टॉल करें" का उपयोग करके इसे फिर से स्थापित करें। इस WHL फ़ाइल को अपने कंप्यूटर में डाउनलोड करें - github.com/fo40225/tensorflow-windows-wheel/blob/master/1.10.0/… , यदि आपके पास 3.6 पायथन और 64-बिट विंडो हैं (आपके द्वारा देखे गए amd को अनदेखा करें)। अन्यथा जीथब में एक कदम पीछे जाएं और सही डब्ल्यूएचएल की खोज करें। यह काम करता है
किंग

3
मेरे लिए काम किया। Ubuntu 16.04.4, Python 3.5.2, gcc 5.4.0 - पूरी तरह से डाउनलोड किया और स्थापित किया। वर्तमान में एक p2.xLarge aws उदाहरण का उपयोग कर। फॉस्टर आर-सीएनएन पर चलने वाली 230 कक्षाओं के साथ एक कस्टम ऑब्जेक्ट डिटेक्शन एक्सरसाइज के लिए प्रदर्शन प्रति सेकंड 16 सेकंड से 9 सेकंड तक सुधार हुआ।
खुबानी

27

GPU के साथ CPU अनुकूलन

प्रदर्शन लाभ आप स्रोत से TensorFlow स्थापित करके प्राप्त कर सकते हैं, भले ही आप एक GPU है और प्रशिक्षण और अनुमान के लिए इसका इस्तेमाल करते हैं। कारण यह है कि कुछ TF ऑपरेशनों में केवल CPU कार्यान्वयन होता है और यह आपके GPU पर नहीं चल सकता है।

इसके अलावा, कुछ प्रदर्शन बढ़ाने के सुझाव हैं जो आपके सीपीयू का अच्छा उपयोग करते हैं। TensorFlow की प्रदर्शन मार्गदर्शिका निम्नलिखित की सिफारिश करती है:

सीपीयू पर इनपुट पाइपलाइन संचालन रखने से प्रदर्शन में काफी सुधार हो सकता है। इनपुट पाइपलाइन के लिए सीपीयू का उपयोग प्रशिक्षण पर ध्यान केंद्रित करने के लिए GPU को मुक्त करता है।

सर्वश्रेष्ठ प्रदर्शन के लिए, आपको अपने सीपीयू और जीपीयू का उपयोग करने के लिए अपने कोड को लिखना चाहिए, और यदि आप एक हैं तो अपने जीपीयू पर इसे डंप न करें। आपके CPU के लिए आपके TensorFlow बायनेरिज़ को अनुकूलित करने से आपके समय की बचत हो सकती है और आपको इसे एक बार करना होगा।



12

विंडोज के लिए (स्वामी f040225 के लिए धन्यवाद), यहां जाएं : https://github.com/fo40225/tensorflow-windows-wheel "tf / python + cpu_instruction_extension" के संयोजन के आधार पर अपने वातावरण के लिए url लाने के लिए। फिर स्थापित करने के लिए इस cmd का उपयोग करें:

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

यदि आप "फ़ाइल एक ज़िप फ़ाइल नहीं है" त्रुटि का सामना करते हैं, तो अपने स्थानीय कंप्यूटर पर .whl डाउनलोड करें और स्थापित करने के लिए इस cmd का उपयोग करें:

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

GPU वाले भागों में विभाजित हैं और .7z फ़ाइलों के रूप में लेबल किए गए हैं। उन्हें एक साथ कैसे टुकड़ा करें?
user3496060

@ user3496060 मैंने विभाजित फ़ाइलों को अनलॉकर करने के लिए वाइनर का उपयोग किया
एलन डार्सन

8

यदि आप टेंसोफ़्लो के पाइप संस्करण का उपयोग करते हैं , तो इसका मतलब है कि यह पहले से ही संकलित है और आप इसे स्थापित कर रहे हैं। मूल रूप से आप टेंसरफ़्लो-जीपीयू स्थापित करते हैं, लेकिन जब आप इसे रिपॉजिटरी से डाउनलोड करते हैं और बनाने की कोशिश करते हैं, तो आपको इसे सीपीयू एवीएक्स समर्थन के साथ बनाना चाहिए। यदि आप इसे अनदेखा करते हैं, तो आपको सीपीयू पर चलने पर हर बार चेतावनी मिलेगी।


मैं इस त्रुटि से कैसे बच सकता हूं, मुझे किन चीजों का पालन करना चाहिए?
jitsm555

2
यह एक त्रुटि नहीं है। यह एक चेतावनी है कि thensorflow cpu के लिए AVX का समर्थन नहीं करता है। यदि आप इसे देखना नहीं चाहते हैं, तो बस इसे बंद कर दें। os.environ ['TF_CPP_MIN_LOG_LEVEL'] = '2' को
सेट करके

5

मुझे इसे ठीक करने का सबसे आसान तरीका यह है कि सब कुछ अनइंस्टॉल कर दिया जाए और फिर टेंसरफ़्लो-जीपीयू का एक विशिष्ट संस्करण स्थापित किया जाए:

  1. टेंसरफ़्लो की स्थापना करें:
    pip uninstall tensorflow
  1. टेंसरफ़्लो-जीपीयू को अनइंस्टॉल करें: (यह सुनिश्चित करें कि अगर आप इसे स्थापित नहीं करते हैं तो भी इसे चलाना सुनिश्चित करें)
    pip uninstall tensorflow-gpu
  1. विशिष्ट टेंसरफ़्लो-जीपीयू संस्करण स्थापित करें:
    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: 'Tetorflow_hub' नाम का कोई मॉड्यूल नहीं
D Adams

ModuleNotFoundError: flow टेंसोरफ़्लो_डैटसेट्स ’नाम का कोई मॉड्यूल नहीं
D Adams

मॉड्यूल को अलग से स्थापित करने का प्रयास करें: pip install tensorflow_hubऔरpip install tensorflow_datasets
जेम्स ब्रेट

yup -> सिर्फ अपने उत्तर की पूर्णता में मददगार बनने की कोशिश कर रहा है।
D एडम्स

ओह, मुझे याद नहीं है कि उन लोगों को अलग से स्थापित करना है। धन्यवाद!
जेम्स ब्रेट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.