আপনার সিপিইউ নির্দেশাবলী সমর্থন করে যে এই টেনসরফ্লো বাইনারিটি ব্যবহারের জন্য সংকলিত হয়নি: AVX AVX2


656

আমি টেনসরফ্লোতে নতুন। আমি সম্প্রতি এটি ইনস্টল করেছি (উইন্ডোজ সিপিইউ সংস্করণ) এবং নিম্নলিখিত বার্তাটি পেয়েছি:

সফলভাবে টেনসরফ্লো -১.৪.০ টেনসরফ্লো-টেনসরবোর্ড -০.৪.০ সিআরসি 2 ইনস্টল করা হয়েছে

তারপরে যখন আমি দৌড়ানোর চেষ্টা করেছি

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/tensor ফ্লো / স্পেনফ্লো এর মাধ্যমে পেয়েছি )

আমি নিম্নলিখিত বার্তাটি পেয়েছি:

2017-11-02 01: 56: 21.698935: আইসি: f tf_jenkins \ হোম \ ওয়ার্কস্পেস \ রিল-উইন \ এম \ উইন্ডোজ \ পিওয়াই \ 36 \ টেনসরফ্লো \ কোর \ প্ল্যাটফর্ম \ cpu_feature_guard.cc: 137] আপনার সিপিইউ নির্দেশনা সমর্থন করে যে এটি টেনসরফ্লো বাইনারিটি ব্যবহারের জন্য সংকলিত হয়নি: 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
এম ওগুজ ওজকান

@ বেন তাই এটি কেবল একটি সতর্কতা, তবে সবকিছু ঠিকঠাক কাজ করবে? (কমপক্ষে একটি শিক্ষানবিশ দৃষ্টিকোণ থেকে)
বিভিডিবি

1
AVX নির্দেশাবলী সহ টেনসরফ্লো সংকলন করতে, এই উত্তরটি দেখুন
শ্রীরাগ এআর

2
আমি একই পরিস্থিতিতে খুব অনুরূপ বার্তা পেয়েছি, বার্তাটি হ'ল Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2
হামিদ হাইডিয়ানিয়ান

উত্তর:


818

এই সতর্কতা সম্পর্কে কি?

আধুনিক সিপিইউগুলি প্রচলিত গাণিতিক এবং যুক্তি ছাড়াও অনেকগুলি নিম্ন-স্তরের নির্দেশাবলী সরবরাহ করে, যেমন এসপিএস 2, এসএসই 4, এভিএক্স ইত্যাদি উইকিপিডিয়া থেকে :

অ্যাডভান্সড ভেক্টর এক্সটেনশানস ( এভিএক্স ) হ'ল মার্চ ২০০৮ এ ইন্টেল দ্বারা প্রস্তাবিত ইন্টেল এবং এএমডি থেকে মাইক্রোপ্রসেসারগুলির জন্য x86 নির্দেশিকা সেট আর্কিটেকচারের এক্সটেনশান এবং প্রথমত Q1 2011-এ স্যান্ডি ব্রিজ প্রসেসর শিপিংয়ের সাথে ইন্টেলের দ্বারা সমর্থিত এবং পরে বুলডোজার প্রসেসর শিপিংয়ের মাধ্যমে এএমডি দ্বারা এভিএক্স নতুন বৈশিষ্ট্য, নতুন নির্দেশাবলী এবং একটি নতুন কোডিং স্কিম সরবরাহ করে 2011

বিশেষত, এভিএক্স ফিউজড মাল্টিপল- অ্যাসোকুলেট (এফএমএ) ক্রিয়াকলাপগুলি প্রবর্তন করে, যা লিনিয়ার বীজগণিত গণনা, ডট-প্রোডাক্ট, ম্যাট্রিক্স মাল্টিপল, কনভোলশন ইত্যাদির গতি বাড়ায় প্রায় প্রতিটি মেশিন-লার্নিং প্রশিক্ষণে এই ক্রিয়াকলাপগুলির একটি বিস্তর পরিমাণ জড়িত, তাই হবে এমন একটি সিপিইউতে দ্রুত যা এভিএক্স এবং এফএমএ সমর্থন করে (300% পর্যন্ত)। সতর্কবাণীতে বলা হয়েছে যে আপনার সিপিইউ এভিএক্সকে সমর্থন করে (হুররে!)।

আমি এখানে চাপ দিতে চাই: এটি কেবলমাত্র সিপিইউ সম্পর্কে ।

কেন তখন এটি ব্যবহার করা হয় না?

কারণ টেনসরফ্লো ডিফল্ট ডিস্ট্রিবিউশন সিপিইউ এক্সটেনশানগুলি যেমন এসএসই 4.1, এসএসই 4.2, এভিএক্স, অ্যাভিএক্স 2, এফএমএ ইত্যাদি ব্যতীত নির্মিত, ডিফল্ট বিল্ডগুলি (যেগুলির দ্বারা pip install tensorflow) যতটা সম্ভব সিপিইউগুলির সাথে সামঞ্জস্য করার উদ্দেশ্যে। আর একটি যুক্তি হ'ল এমনকি এই এক্সটেনশনগুলির সাথেও সিপিইউ একটি জিপিইউর থেকে অনেক ধীর এবং এটি একটি জিপিইউতে মাঝারি এবং বৃহত আকারের মেশিন-লার্নিং প্রশিক্ষণের জন্য প্রত্যাশিত।

তোমার কি করা উচিত?

আপনার যদি জিপিইউ থাকে তবে আপনার অ্যাভিএক্স সমর্থন সম্পর্কে কোনও চিন্তা করা উচিত নয়, কারণ বেশিরভাগ ব্যয়বহুল অপ্স একটি জিপিইউ ডিভাইসে প্রেরণ করা হবে (যদি না স্পষ্টভাবে সেট না করা থাকে)। এই ক্ষেত্রে, আপনি কেবল এই সতর্কতা দ্বারা উপেক্ষা করতে পারেন

# 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আপনি ইউনিক্সে থাকলে সেট করে। টেনসরফ্লো যাইহোক ভাল কাজ করছে, তবে আপনি এই বিরক্তিকর সতর্কতাগুলি দেখতে পাবেন না।


আপনি যদি একটি জিপিইউ না থাকে তাহলে ও যতটা সম্ভব CPU- র ব্যবহার করতে চান, আপনি উৎস জন্য অপ্টিমাইজ করা থেকে tensorflow গড়ে তুলতে চাই না আপনার CPU- র AVX, AVX2 সঙ্গে, এবং FMA সক্রিয় যদি আপনার CPU- র তাদের সমর্থন। এটি এই প্রশ্নে এবং এই গিটহাব ইস্যুতেও আলোচিত হয়েছে । Tensorflow একটি অ্যাড-হক বিল্ড সিস্টেম বলা ব্যবহার Bazel এবং এটি নির্মাণের যে তুচ্ছ নয়, কিন্তু অবশ্যই করা সম্ভব নয়। এর পরে, কেবল সতর্কতা অদৃশ্য হয়ে যাবে না, সেন্সরফ্লো কর্মক্ষমতাও উন্নত হবে।


29
এটি উল্লেখ করার মতো যে টেনসরফ্লো সার্ভিং-এ অ-অপ্টিমাইজড সিপিইউ এবং অনুকূলিত সিপিইউ (অ্যাভিএক্স, এসএসই 4.1, ইত্যাদি) এর জন্য পৃথক ইনস্টল রয়েছে। বিশদটি এখানে রয়েছে: github.com/tensorflow/serving/blob/…
ক্রিস ফ্রেগলি

9
এই প্রশ্নের মুছে ফেলা উত্তম অনুসারে, GPU (GTX1080Ti) সহ একটি আই 9-7900x (Skylake-AVX512) এ AVX512F "CIFAR10 1000 পুনরাবৃত্তিতে 28% লাভ 68s-> 48s করে"। আপনি কি নিশ্চিত যে কোনও জিপিইউ ব্যবহার করার সময় সতর্কতাটি উপেক্ষা করার পক্ষে এটি ভাল পরামর্শ? মন্তব্যটি বোগাস না হলে কমপক্ষে কিছু ক্ষেত্রে সিপিইউ নির্দেশিকা সেট থেকে প্রাপ্ত করার মতো কিছু রয়েছে বলে মনে হয়।
পিটার কর্ডেস

1
@ পিটারকর্ডস যদি তা হয় তবে আমি অবশ্যই এটি আমার উত্তরে অন্তর্ভুক্ত করব। তবে "আমার মডেলটি 30% গতি বাড়ায়" বিবৃতিটি "আমার সি ++ প্রোগ্রামের গতি 30% গতি বাড়িয়েছে" এর মত বলে মনে হচ্ছে। ঠিক কোন মডেল? ম্যানুয়াল সিপিইউ বসানো আছে? কীভাবে ডেটা স্থানান্তরিত হয়? উদাহরণস্বরূপ, স্তন্যপায়ী অনেক কাজ হতে পারে। অবশ্যই, সিপিইউকে একটি বাধা তৈরি করা সম্ভব এবং এসও সম্পর্কে এটি নিয়ে প্রচুর প্রশ্ন রয়েছে। এটি সাধারণত একটি বাগ হিসাবে বিবেচিত হয়।
ম্যাক্সিম

2
@ ম্যাক্সিম: মোছা উত্তরের পুরো পাঠ্যটি হ'ল " আমার পরীক্ষায় আই 9 (7900x) জিপিইউতে (জিটিএক্স 1080 টিআই) এভিএক্স 512 এফ নির্দেশটি সিআইএফএআর 10 1000 পুনরাবৃত্তির উপর 28% লাভ"> 48s করে "। সুতরাং দুর্ভাগ্যক্রমে কোনও বিশদ নেই (বা বিরামচিহ্ন, ব্যাকরণ বা বিন্যাস)।
পিটার কর্ডেস 4'18

2
স্পষ্টতই যদি আপনি কোনও ম্যাক এ থাকেন তবে এটি জিপিইউ, স্ট্যাকওভারফ্লো.com
ডেন্ট আর্থার ডেন্ট

156

এই কমান্ডটি ব্যবহার করে আপনার সিপিইউ ও ওএসের জন্য টেনসরফ্লো বাইনারি আপডেট করুন

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

WHL ফাইলের ডাউনলোড ইউআরএলটি এখানে পাওয়া যাবে

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


1
আমি উইন্ডোজ 10 wuth URL এ চেষ্টা stackoverflow.com/questions/47068709/... । জিপফাইলে বলার সময় আমি ত্রুটি পেয়েছি ad ব্যাডজিপফাইলে: ফাইলটি একটি জিপ ফাইল নয়
থাইসিনা থিলিনা দয়ারাত্নে

1
এটি ডাউনলোড হয়েছিল এবং ডাউনলোড সংস্করণটি ব্যবহার করার সময় এটি কাজ করেছিল
থেসিথা থিলিনা দায়ারত্ন

1
যে কেউ "জিপফাইলে বলার ক্ষেত্রে ত্রুটি পাচ্ছে ad ব্যাডজাইপফাইলে: ফাইলটি জিপ ফাইল নয়" এর মতো কাঁচা লিঙ্কটি চুদা 9.2avx2 এর মতো পাওয়া উচিত লিঙ্কটি হ'ল গিথুব / ফলো 40225 / স্পেনফ্লো- উইন্ডোস-উইয়েল / ক্রম / মাস্টার/1.9.0/…
ইয়াছিন আর রহমান

5
উইন্ডোজের জন্য, আমি এটি চেষ্টা করেছিলাম। "পিপ আনইনস্টল টেনসরফ্লো" ব্যবহার করে বিদ্যমান টেনসরফ্লো আনইনস্টল করুন, তারপরে "পিপ ইনস্টল <WHL ফাইল ডাউনলোড করার পথ>> ডাউনলোডের পথে>" ব্যবহার করে এটি পুনরায় ইনস্টল করুন। আপনার কম্পিউটারে এই ডাব্লুএইচএল ফাইলটি ডাউনলোড করুন - github.com/fo40225/tensorflow-windows-wheel/blob/master/1.10.0/… , যদি আপনার কাছে 3.6 পাইথন এবং একটি 64-বিট উইন্ডোজ থাকে (আপনি যে amd দেখেন তা উপেক্ষা করুন)। অন্যথায় গিথুব থেকে এক ধাপ পিছনে নেভিগেট করুন এবং সঠিক ডাব্লুএইচএল অনুসন্ধান করুন। এটি কাজ করে
কিং

3
আমার জন্য কাজ করেছেন। উবুন্টু 16.04.4, পাইথন 3.5.2, জিসিসি 5.4.0 - ডাউনলোড করুন এবং ইনস্টল করা হয়েছে। বর্তমানে একটি p2.x লার্জ অ্যাউজের উদাহরণ ব্যবহার করছে। দ্রুত আর-সিএনএন-তে চলমান 230 ক্লাসের সাথে একটি কাস্টম অবজেক্ট সনাক্তকরণ অনুশীলনের জন্য সম্পাদনাটি পুনরাবৃত্তি প্রতি 16 সেকেন্ড থেকে 9 সেকেন্ডে উন্নত হয়েছে।
এপ্রিকট

27

জিপিইউ সহ সিপিইউ অপ্টিমাইজেশন

আপনার জিপিইউ থাকলেও প্রশিক্ষণ এবং অনুমানের জন্য এটি ব্যবহার করে উত্স থেকে টেনসরফ্লো ইনস্টল করে পারফরম্যান্স লাভ রয়েছে। কারণটি হ'ল কিছু টিএফ অপারেশনগুলির কেবলমাত্র সিপিইউ বাস্তবায়ন থাকে এবং আপনার জিপিইউতে চলতে পারে না।

এছাড়াও, কিছু কার্যকারিতা বর্ধনের টিপস রয়েছে যা আপনার সিপিইউর ভাল ব্যবহার করে। টেনসরফ্লো এর পারফরম্যান্স গাইড নিম্নলিখিতটি সুপারিশ করেছেন:

সিপিইউতে ইনপুট পাইপলাইন ক্রিয়াকলাপগুলি কার্যকরভাবে উন্নতি করতে পারে। ইনপুট পাইপলাইনের জন্য সিপিইউ ব্যবহারের মাধ্যমে জিপিইউকে প্রশিক্ষণের দিকে মনোযোগ দেওয়া যায়।

সেরা পারফরম্যান্সের জন্য, আপনার সিপিইউ এবং জিপিইউ ব্যবহার করে আপনার কোডটি লিখতে হবে এবং আপনার জিপিইউতে যদি তা থাকে তবে তা সব ছুঁড়ে ফেলা উচিত নয়। আপনার টেনসরফ্লো বাইনারিগুলি আপনার সিপিইউর জন্য অনুকূলিতকরণের ফলে সঞ্চয়ের কয়েক ঘন্টা সময় সাশ্রয় হতে পারে এবং আপনাকে একবার এটি করতে হবে।


13

উইন্ডোজের জন্য, আপনি টেনসরফ্লো চাকাগুলির জন্য আনুষ্ঠানিক ইনটেল এমকেএল অপ্টিমাইজেশন যাচাই করতে পারেন যেগুলি এভিএক্স 2 সহ সংকলিত রয়েছে। এই সমাধানটি আমার অনুমানকে গতিবেগ করে ~ x3।

conda install tensorflow-mkl

12

উইন্ডোজের জন্য (মালিক f040225 এর জন্য ধন্যবাদ), এখানে যান: https://github.com/fo40225/tensorflow-windows- "tf + পাইথন + সিপিইউ_ইনস্ট্রাকশন_ এক্সটেনশন" এর সংমিশ্রণের ভিত্তিতে আপনার পরিবেশের জন্য url আনতে হুইল। তারপরে ইনস্টল করতে এই সেমিডিটি ব্যবহার করুন:

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

যদি আপনি "ফাইলটি একটি জিপ ফাইল নয়" ত্রুটির মুখোমুখি হন তবে আপনার স্থানীয় কম্পিউটারে .hl ডাউনলোড করুন এবং ইনস্টল করতে এই সিএমডি ব্যবহার করুন:

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

জিপিইউগুলি অংশগুলিতে বিভক্ত এবং .7z ফাইল হিসাবে লেবেলযুক্ত। কিভাবে তাদের একসাথে টুকরা?
ব্যবহারকারী 3496060

@ ব্যবহারকারী 3496060 আমি বিভক্ত ফাইলগুলি সঙ্কুচিত করতে উইনার ব্যবহার করেছি
অ্যালান ডুরসুন

8

আপনি যদি টেনসরফ্লোর পিপ সংস্করণ ব্যবহার করেন তবে এর অর্থ এটি ইতিমধ্যে সংকলিত হয়েছে এবং আপনি কেবল এটি ইনস্টল করছেন। মূলত আপনি টেনসরফ্লো-জিপিইউ ইনস্টল করেন তবে আপনি যখন এটি সংগ্রহস্থল থেকে ডাউনলোড করেন এবং তৈরির চেষ্টা করছেন তখন আপনার এটি সিপিইউ অ্যাভিএক্স সমর্থন দিয়ে তৈরি করা উচিত। আপনি যদি এটিকে এড়িয়ে যান তবে আপনি সিপিইউতে চালানোর সময় প্রতিবার সতর্কতা পাবেন।


আমি কীভাবে এই ত্রুটিটি এড়াতে পারি, আমার কী কী জিনিস অনুসরণ করা উচিত?
jitsm555

2
এটি একটি ত্রুটি নয়. এটি একটি সতর্কবার্তা যে ততক্ষণে প্রবাহিত সিপিইউয়ের জন্য AVX সমর্থন করে না। যদি আপনি এটি দেখতে না চান তবে কেবল os.en
হাজারাপেট টুনানিয়ান

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

আশাকরি এটা সাহায্য করবে


মডিউল নটফাউন্ড এরিয়ার: 'টেনসরফ্লো_হাব' নামে কোনও মডিউল নেই
ডি অ্যাডামস

মডিউল নটফাউন্ড এরিয়ার: 'টেনসরফ্লো_ড্যাটাসেটস' নামে কোনও মডিউল নেই
ডি অ্যাডামস

মডিউলগুলি আলাদাভাবে ইনস্টল করার চেষ্টা করুন: pip install tensorflow_hubএবংpip install tensorflow_datasets
জেমস ব্রেট

হ্যাঁ -> আপনার উত্তর সম্পূর্ণরূপে সহায়ক হতে চেষ্টা।
ডি অ্যাডামস

ওহ আমার এগুলি আলাদাভাবে ইনস্টল করার কথা মনে নেই। ধন্যবাদ!
জেমস ব্রেট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.