Advanced Vector Extensions (AVX, আ localidad: Sandy Bridge New Extensions) হলো Intel এবং AMD-র মাইক্রোপ্রসেসরের জন্য x86 ইনস্ট্রাকশন সেট আর্কিটেকচারের এক্সটেনশন, যা Intel মার্চ ২০০৮-এ প্রস্তাব 했고 Q1 ২০১১-এ Sandy Bridge প্রসেসরের সাথে প্রথমে সাপোর্ট 했고 Q3 ২০১১-এ AMD Bulldozer প্রসেসরের সাথে। AVX নতুন ফিচার, নতুন ইনস্ট্রাকশন এবং নতুন কোডিং স্কিম প্রদান করে।

এই ওয়ার্নিং মেসেজটি TensorFlow-এর শেয়ার্ড লাইব্রেরি প্রিন্ট করে। মেসেজটি ইঙ্গিত করে যে শেয়ার্ড লাইব্রেরিতে আপনার CPU যে ইনস্ট্রাকশনগুলো ব্যবহার করতে পারে সেগুলো নেই।
এই ওয়ার্নিং-এর কারণ
TensorFlow 1.6 এর পর থেকে বাইনারি AVX ইনস্ট্রাকশন ব্যবহার করে যা পুরনো CPU-তে আর চলে না। তাই পুরনো CPU AVX রান করতে পারবে না, আর নতুন CPU-র জন্য ইউজারকে TensorFlow সোর্স থেকে নিজের CPU-র জন্য বিল্ড করতে হবে। এই ওয়ার্নিং-র সমস্ত তথ্য নিচে দেওয়া আছে। এছাড়া ভবিষ্যতে এই ওয়ার্নিং বাদ দেওয়ার একটি মেথড।
AVX কী করে?
বিশেষত AVX introduct করল FMA (Fused multiply-add); যা ফ্লোটিং-পয়েন্ট মাল্টিপ্লাই-অ্যাড অপারেশন, এবং এই সকল অপারেশন একই স্টেপে হয়। এটি অনেক অপারেশন স্পিড আপ করে সমস্যা ছাড়া। এলজেব্রা কম্পিউটেশন ফাস্ট ও সহজ করে, ডট-প্রোডাক্ট, ম্যাট্রিক্স মাল্টিপ্লাই, কনভোলিউশন ইত্যাদি। এগুলো মেশিন-লার্নিং ট্রেনিং-র সবচেয়ে ব্যবহৃত এবং বেসিক অপারেশন। AVX এবং FMA সাপোর্ট করা CPU পুরনো CPU-র চেয়ে অনেক ফাস্ট। কিন্তু ওয়ার্নিং বলে আপনার CPU AVX সাপোর্ট করে, তাই এটা ভালো খবর।

ডিফল্টভাবে কেন ব্যবহার করা হয় না?
কারণ TensorFlow ডিফল্ট ডিস্ট্রিবিউশন CPU এক্সটেনশন ছাড়া বিল্ড করা হয়েছে। CPU এক্সটেনশন বলতে AVX, AVX2, FMA ইত্যাদি বোঝায়। এই ইস্যু ট্রিগার করা ইনস্ট্রাকশনগুলো ডিফল্ট বিল্ডে ডিফল্টভাবে ইনএবল নয়। এগুলো ইনএবল না করার কারণ হলো যতটা সম্ভব CPU-র সাথে কম্প্যাটিবল রাখা। এছাড়া এই এক্সটেনশনগুলো GPU-র চেয়ে CPU-তে অনেক স্লো। CPU ছোট স্কেল মেশিন-লার্নিং-এ ব্যবহৃত হয়, মিডিয়াম বা লার্জ স্কেল ট্রেনিং-এ GPU ব্যবহার করা হয়।
ওয়ার্নিং ফিক্স করা!
এই ওয়ার্নিংগুলো শুধু সিম্পল মেসেজ। এই ওয়ার্নিংগুলোর উদ্দেশ্য হলো আপনাকে TensorFlow সোর্স থেকে বিল্ড করার বিষয়ে জানানো। সোর্স থেকে বিল্ড করলে মেশিনে ফাস্টার হয়। তাই এই সব ওয়ার্নিং আপনাকে সোর্স থেকে TensorFlow বিল্ড করার বিষয়ে জানাচ্ছে।
আপনার মেশিনে GPU থাকলে এই AVX সাপোর্ট ওয়ার্নিংগুলো ইগনোর করুন। কারণ সবচেয়ে খরচিয়া অপারেশনগুলো GPU ডিভাইসে ডিসপ্যাচ হবে। আর এই এরর আর না দেখতে চাইলে সহজে ইগনোর করুন এটি যোগ করে:
মেইন প্রোগ্রাম কোডে OS module ইম্পোর্ট করুন এবং ম্যাপিং অবজেক্ট সেট করুন
# ওয়ার্নিং ডিজেবল করার জন্য import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
আপনি যদি Unix-এ থাকেন, তবে bash shell-এ export কমান্ড ব্যবহার করুন
export TF_CPP_MIN_LOG_LEVEL=2
কিন্তু GPU নেই এবং CPU যতটা সম্ভব ব্যবহার করতে চান, তবে AVX, AVX2, এবং FMA ইনএবল করে আপনার CPU-র জন্য অপ্টিমাইজড TensorFlow সোর্স থেকে বিল্ড করুন।